2017"百度之星"程序设计大赛 - 资格赛 1003

2017"百度之星"程序设计大赛 - 资格赛

1003   dp,类似背包

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 1e18
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 100005, M = 1005;

int n, m, a[N], b[N], k[M], p[M];
ll  dp[M][12];
int main()
{
    while(~scanf("%d%d", &n, &m))
    {
        rep(i,1,n) scanf("%d%d", &a[i], &b[i]);
        rep(i,1,m) scanf("%d%d", &k[i], &p[i]);
        rep(bi,0,10) rep(i,0,M-1) {
            if(i==0) dp[i][bi] = 0;
            else dp[i][bi] = INF;
        }
        rep(bi,0,10) rep(ai,1,M-1) rep(i,1,m)
            if(p[i]>bi)
        {
            if(ai-(p[i]-bi)>=0)
                dp[ai][bi] = min(dp[ai-(p[i]-bi)][bi]+k[i], dp[ai][bi]);
            else
                dp[ai][bi] = min(1LL*k[i], dp[ai][bi]);
        }
        ll  ans = 0;
        bool flag=0;
        rep(i,1,n) {
            if(dp[a[i]][b[i]]==INF) flag=1;
            else ans += dp[a[i]][b[i]];
        }
        if(flag) puts("-1");
        else printf("%I64d\n", ans);
    }

    return 0;
}
时间: 2024-07-28 23:50:45

2017"百度之星"程序设计大赛 - 资格赛 1003的相关文章

hdu 6082 度度熊与邪恶大魔王(2017&quot;百度之星&quot;程序设计大赛 - 资格赛 )

度度熊与邪恶大魔王 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 251    Accepted Submission(s): 125 Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来.邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力.度度熊一共拥有m种攻击方式,第i

2017&quot;百度之星&quot;程序设计大赛 - 复赛1003&amp;&amp;HDU 6146 Pok&#233;mon GO【数学,递推,dp】

Pokémon GO Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 171    Accepted Submission(s): 104 Problem Description 众所周知,度度熊最近沉迷于 Pokémon GO. 今天它决定要抓住所有的精灵球! 为了不让度度熊失望,精灵球已经被事先放置在一个2*N的格子上,每一个格子上都

2017&quot;百度之星&quot;程序设计大赛 - 资格赛 寻找母串

Problem Description 对于一个串S,当它同时满足如下条件时,它就是一个01偏串: 1.只由0和1两种符组成: 2.在S的每一个前缀中,0的个数不超过1的个数: 3.S中0的个数和1的个数相等. 现在给定01偏串S,请计算一下S在所有长度为n的01偏串中作为子串出现的次数的总和. 由于结果比较大,结果对1e9+7取余后输出. 样例解释: 在第二个样例中,长度为4的偏串共两个1010,1100.10在1010中出现了两次,在1100中出现了1次.所以答案是3. Input 第一行给

2017&quot;百度之星&quot;程序设计大赛 - 资格赛-度度熊与邪恶大魔王(dp+后缀最小值)

度度熊与邪恶大魔王 思路:由于防御和血量的范围很小,所以暴力枚举出对于每种防御造成的每种伤害所需的最小花费,最后只需在伤害大于等于血量的情况下再找到最小花费(这个只需要后缀最小值预处理一下就可以了) 状态:dp[i][j]表示对防御为i的怪兽造成伤害为j的所需最小晶石花费. 状态转移方程:dp[i][j]=min(dp[i][j],dp[i][j-t])(t表示每种技能造成的伤害,t=p-i,t≥0) 代码1: #include<bits/stdc++.h> using namespace s

2015年百度之星程序设计大赛 - 资格赛 (1003 IP聚合)

[题目链接]:cilck here~~ [题目大意]: 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个网络地址.网络地址等于子网掩码与 IP 地址按位进行与运算后的结果,例如: 子网掩码:A.B.C.D IP 地址:a.b.c.d 网络地址:(A&a).(B&b).(C&c).(D&d) 本来比较简单的一道题,排序处理一下就可以了,由于bool cmp函数写错了,调试了一下

hdu 4825 Xor Sum (建树) 2014年百度之星程序设计大赛 - 资格赛 1003

题目 题意:给n个数,m次询问,每次给一个数,求这n个数里与这个数 异或 最大的数. 思路:建一个类似字典数的数,把每一个数用 32位的0或者1 表示,查找从高位向底位找,优先找不同的,如果没有不同的,就找相同的. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 #define LL l

2017&quot;百度之星&quot;程序设计大赛 - 资格赛 度度熊的王国战略

度度熊的王国战略 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦解哗啦啦族. 第一步就是应该使得哗啦啦族内部不能同心齐力,需要内部有间隙. 哗啦啦族一共有n个将领,他们一共有m个强关系,摧毁每一个强关系都需要一定的代价. 现在度度熊命令你需要摧毁一些强关系,使得内部的将领,不能通过这些强关系,连成一个完整的连通块,以保证战争的顺利进行. 请

2014年百度之星程序设计大赛 - 资格赛

主要是卡了一下 接下来2题还在做 都有思路 1001 考虑完全就行了 #include <cstdio> #include <cstring> using namespace std; int main() { int T; scanf("%d", &T); while(T--) { __int64 n, m, v, k; scanf("%I64d %I64d %I64d %I64d", &n, &m, &v,

2014年百度之星程序设计大赛 - 资格赛 1002 Disk Schedule(双调欧几里得旅行商问题)

Problem Description 有很多从磁盘读取数据的需求,包括顺序读取.随机读取.为了提高效率,需要人为安排磁盘读取.然而,在现实中,这种做法很复杂.我们考虑一个相对简单的场景.磁盘有许多轨道,每个轨道有许多扇区,用于存储数据.当我们想在特定扇区来读取数据时,磁头需要跳转到特定的轨道.具体扇区进行读取操作.为了简单,我们假设磁头可以在某个轨道顺时针或逆时针匀速旋转,旋转一周的时间是360个单位时间.磁头也可以随意移动到某个轨道进行读取,每跳转到一个相邻轨道的时间为400个单位时间,跳转