1783: [Usaco2010 Jan]Taking Turns Description Farmer John has invented a new way of feeding his cows. He lays out N (1 <= N <= 700,000) hay bales conveniently numbered 1..N in a long line in the barn. Hay bale i has weight W_i (1 <= W_i <= 2,0…
不知道该叫贪心还是dp 倒着来,记f[0][i],f[1][i]分别为先手和后手从n走到i的最大值.先手显然是取最大的,当后手取到比先手大的时候就交换 #include<iostream> #include<cstdio> using namespace std; const int N=700005; int n,a[N],w=n; long long f[2][N],mx; int read() { int r=0,f=1; char p=getchar(); while(p&…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i](一定是5的倍数),价值为w[i]. 一块高度>=t的奶酪被称为大奶酪,一个奶酪如果在它上方有大奶酪(多块只算一次),它的高度就会变成原来的4/5. John想让他的奶酪他价值和最大,求这个最大值. 题解: 方法一: dp + 贪心. 贪心:如果奶酪塔中有大奶酪,则大奶酪一定放在最上面. (1)有大奶…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2020 题意: FJ开车去买K份食物. 如果他的车上有X份食物,每走一里就花费X元. FJ的城市是一条线,总共n里路,有n+1个地方,标号0~n. FJ从0开始走,到n结束(不能往回走),要买m份食物. 城里有t个商店,每个商店的位置是x[i](一个点上可能有多个商店),有f[i]份食物,每份c[i]元. 问到达n并买m份食物的最小花费. 题解: 贪心. 每一份食物实际的话费 = 它的价格…
http://www.lydsy.com/JudgeOnline/problem.php?id=2021 噗,自己太弱想不到. 原来是2次背包. 由于只要有一个大于k的高度的,而且这个必须放在最顶,那么我们就可以枚举每一个比k大的放在最顶,其它的都放在下边即可. 还有,注意这是完全背包! #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <i…
dp( l , r ) = sum( l , r ) - min( dp( l + 1 , r ) , dp( l , r - 1 ) ) 被卡空间....我们可以发现 l > r 是无意义的 , 所以可以省下一半的空间 -------------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<a…
题意 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚到肩膀的高度Ai,并且他的胳膊长度为Bi.陷阱深度为H.如果我 们利用矮人\(1\),矮人\(2\),矮人\(3\),...矮人\(k\)搭一个梯子,满足\(A_1+A_2+A_3+....+A_k+B_k\leq H\),那么矮人\(k\)就可以离开陷阱逃跑了,一 旦一个矮人逃跑了,他就不能再搭人梯了…
题意: 一排数,两个人轮流取数,保证取的位置递增,每个人要使自己取的数的和尽量大,求两个人都在最优策略下取的和各是多少. 注:双方都知道对方也是按照最优策略取的... 傻逼推了半天dp......然后看kpm的代码里一个语句解决 KPM大概思路:倒着取,设当前两人最大和分别为A和B(A为先取的人)..如果B+W[i]>A就把A和B交换(先取的人可以按照更优的取法,后手无人权..)..让A取W[i] 接下来是蒟蒻的傻逼写法: f[0][i],f[1][i]分别表示第1个人和第2个人,在i~n中取了…
Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 <= M <= 1000) 元. 他们的题目是一流的难题,所以他们得找帮手.帮手们不是免费的,但是他们能保证在一个月内作出任何题目.每做一道题需要两比付款, 第一笔A_i(1 <= A_i <= M) 元在做题的那一个月初支付, 第二…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方法. 题解: 两种方法. 一.无限背包 将1,2,4,8...看作物品体积就好. 复杂度O(n*k),k约为20. 二.递推 对于dp[i],有两种情况. (1)i为奇数.则分解结果中一定有1. 所以dp[i] = dp[i-1]. (2)i为偶数.再分两种情况: a. 分解结果中有1,所以dp[i] +…