srm 605
来源:互联网 发布:淘宝api php实例 编辑:程序博客网 时间:2024/06/05 14:23
250: 有最多50个物品,每个物品有一个type标号,并且有一个taste值,现在要求选择若干个物品使得x * y最大,x为选择的物品种类的总数,y为总的taste值之和
贪心,然后对于每种物品,如果有大于0的物品存在,就不要小于0的那些了,因为他们不能增大x,只会减少y。如果某一种物品只有小于0的,那就只可能选择一个绝对值最小的。按照每种物品能选择的值从大到小排序,枚举种类数贪心算即可。。
450:N<= 50,将1到2*N之间的数分成相同大小的两组,要求abs(a[i] - b[i]) <= K,求分组的方案数,每组都是按照从小到大的顺序排好的
dp[i][j][mask]:表示前i个数,1->i-k 中有j个数还未找到匹配的数字
i-k+1 -> i这k个数的匹配状态是mask 的方案数
注意,虽然有些数还未找到匹配,但是,这个数具体放到哪个集合中是已经确定好了的
因此
转移i+1这个数的时候,如果要跟前面的数配对,i+1这个数放到哪个集合实际上是被动的确定了的
i-k+1 -> i这k个数的匹配状态是mask 的方案数
注意,虽然有些数还未找到匹配,但是,这个数具体放到哪个集合中是已经确定好了的
因此
转移i+1这个数的时候,如果要跟前面的数配对,i+1这个数放到哪个集合实际上是被动的确定了的
关键的地方就是在于转移一个数的时候可以不跟其他数匹配,但必须先确定它放在哪个集合里
#include <cstdio>#include <cstring>class AlienAndSetDiv1 {public: int getNumber(int N, int K);};int f[110][110][1024];const int mod = 1000000007;inline void Add(int &x, int y) { if(x == -1) x = 0; x += y; if(x >= mod) x -= mod;}int AlienAndSetDiv1::getNumber(int N, int K) { memset(f, -1, sizeof(f)); f[K][0][(1 << K) - 1] = 2; for(int i = K; i < 2*N; i++) { for(int j = 0; j <= i - K; j++) { for(int mask = 0; mask < (1 << K); mask++) { if(f[i][j][mask] != -1) { // printf("f[%d][%d][%d]=%d\n",i,j,mask,f[i][j][mask]); Add(f[i + 1][j + (mask & 1)][mask >> 1 | (1 << (K - 1))], f[i][j][mask]); if(j) { Add(f[i + 1][j - 1 + (mask & 1)][mask >> 1], f[i][j][mask]); } if(j == 0 && (mask & 1) ) { Add(f[i + 1][j][mask >> 1], f[i][j][mask]); } if(j == 0 && mask == 0) { Add(f[i + 1][j + (mask & 1)][mask >> 1 | (1 << (K - 1))], f[i][j][mask]); } } } } } return f[2*N][0][0];}
0 0
- srm 605
- SRM 605
- srm 605 div2
- srm
- SRM 605 D2 L2:AlienAndGame
- SRM 605 T1 T2 T3
- SRM 605 D2 L3: AlienAndSetDiv2,DP
- SRM 605 D1 L1 :AlienAndHamburgers,Greedy
- SRM 605 D1 L2:AlienAndSetDiv1,DP,bitmask
- topcode srm SRM 557
- SRM 443
- SRM 442
- SRM 439
- SRM 438
- SRM 444
- SRM 434
- SRM 445
- SRM 426
- android小项目之新闻客户端三
- 科鲁兹各个功能按键详细介绍
- 如何成为Python高手
- 小数学解决大问题 - 信息熵(由对数函数想到)
- android小项目之新闻客户端四
- srm 605
- Tomcat 学习进阶历程之启动脚本篇二:catalina.bat
- android小项目之新闻客户端五
- FusionCharts 2D环饼图
- poj_1000
- 2014的一些目标
- UVa 10010 沃尔多夫在那里
- 可复用的静态链表
- 验证码识别image/pdf to string 开源工具