2018 ACM-ICPC, Syrian Collegiate Programming Contest F. Pretests(子集dp)
LINK
题意
一道题有kkk个测试点,共提交了nnn次
每次提交是一个长为kkk的010101串,表示是否能通过第iii个测试点
现在要求你重新排序kkk个测试点,使得∑i=1nw[i]\sum\limits_{i=1}^nw[i]i=1∑nw[i]最小
其中w[i]w[i]w[i]指的是第iii个人第一次在第几个测试点wronganswerwrong\ answerwrong answer了
输出字典序最小的方案数
考虑定义f[i]f[i]f[i]表示当放置测试点状态为iii时,能得到的最小代价
那么枚举本次放的是第jjj道题,放置之后由状态vvv转移到状态uuu
造成的代价是num(u)num(u)num(u)(uuu的二进制位是111的个数,表示在这个测试点wawawa掉)
因为在之前的num(u)−1num(u)-1num(u)−1个测试点都没有wawawa掉,在第num(u)num(u)num(u)个测试点wawawa掉
我们需要求满足要求的提交个数也就是uuu的超集,再减去vvv的超集,那么计算出这次转移的代价valvalval
f[u]=min(f[u],f[v]+val)f[u]=min(f[u],f[v]+val)f[u]=min(f[u],f[v]+val)
记录一个前驱就可以转移了
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6+10;
const int inf = 1e9;
int t,n,T,num[maxn],pre[maxn],cnt[maxn],f[maxn],bit[maxn];
string s[maxn];
void sosdp()
{for(int i=1;i<=n;i++) cnt[num[i]]++;for(int i=0;i<t;i++)for(int j=0;j<(1<<t);j++)if( !(j&(1<<i)) ) cnt[j] += cnt[j|(1<<i)];
}
void dfs(int sta)
{if( sta==(1<<t)-1 ) return;printf("%d ",pre[sta] );dfs( sta | (1<<(pre[sta]-1)) );
}
void DP()
{sosdp();for(int i=0;i<(1<<t);i++) f[i] = inf;f[(1<<t)-1] = 0;for(int i=(1<<t)-1;i>=0;i--){for(int j=1;j<=t;j++)//枚举每一个测试点{if( i&(1<<(j-1)) ){int v = i ^ (1<<(j-1)), val = f[i] + ( cnt[v]-cnt[i] )*bit[i];if( val<f[v] ) f[v] = val, pre[v] = j;else if( val==f[v] ) pre[v] = min( pre[v],j );}} }for(int i=1;i<=n;i++) if( num[i]==(1<<t)-1 ) f[0] += t;cout << f[0] << endl;dfs( 0 ); cout << endl;
}
void init()
{for(int i=0;i<(1<<t);i++) cnt[i] = 0;
}
int main()
{freopen("tests.in","r",stdin);bit[1] = 1;for(int i=2;i<=2000000;i++) bit[i] = bit[i>>1] + (i&1);cin >> T;while( T-- ){cin >> t >> n;for(int i=1;i<=n;i++){cin >> s[i];int x = 0;for(int j=0;j<t;j++) if( s[i][j]=='1' ) x |= (1<<j);num[i] = x;}DP();init();}
}
2018 ACM-ICPC, Syrian Collegiate Programming Contest F. Pretests(子集dp)相关推荐
- 2018 ACM ICPC Arabella Collegiate Programming Contest A
Multiplication operation is not always easy! For example, it is hard to calculate 27 × 20 using your ...
- A - Multiplication Dilemma (思维)( 2018 ACM ICPC Arabella Collegiate Programming Contest)
滴答滴答---题目链接 Multiplication operation is not always easy! For example, it is hard to calculate 27 × 2 ...
- (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest
layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luow ...
- (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)
layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题) author: " ...
- 2018 ACM-ICPC Syrian Collegiate Programming Contest(部分题解,待补)
传送门 2018 ACM-ICPC 叙利亚大学生程序设计竞赛 Problem A: Hello SCPC 2018! 签到题 Problem B: Binary Hamming 简单题 #includ ...
- 2015 ACM Syrian Collegiate Programming Contest
A. My Friend of Misery 计算出答案的上下界即可. 时间复杂度$O(n)$. #include<bits/stdc++.h> using namespace std; ...
- 2018 ACM-ICPC, Syrian Collegiate Programming Contest
这是2018年叙利亚大学程序设计赛,星期一没什么比赛就拿这套题目练了一下手,在这里写几道我做出来的里面还算有点难度的题目(实力有限好多题看都没看) 比赛链接 http://codeforces.com ...
- GYM 2015 ACM Syrian Collegiate Programming Contest
题目链接:http://codeforces.com/gym/101086 A My Friend of Misery B Brother Louie C Everything D Secure bu ...
- 2018 ACM-ICPC Syrian Collegiate Programming Contest
Problem H: Bugged System 思路来源**(https://blog.csdn.net/Mitsuha_/article/details/84455292)** Mr. Light ...
最新文章
- Cisco 交换机配置端口镜像
- 仔细讨论 C/C++ 字节对齐问题⭐⭐
- 乐观锁与悲观锁及应用举例
- 2018GDKOI——记录
- 精妙的SQL语句收藏
- 常见的遍历数组和对象的方法
- 夏普mx2608n网络扫描到计算机,【转载】夏普复印机网络扫描教程
- 3D相机技术 | 立体视觉传感器+TOF相机
- edu邮箱填写服务器,学生邮箱Outlook使用设置
- 这 6 款在线 PDF 转换工具,得试试
- Oracle增删改查
- ppt制作:加总页数首页不显示页码
- excel 关联数据
- cmd操作MySQL 多表查询(日记 day 4)
- 10 款你不知道的 Linux 环境下的替代工具
- 在Eclipse下开发Robocode
- 旧手机物联网_废旧的 Android 手机能拿来干什么有趣的事?
- mysql数据库报错1709_一、数据库的使用Mysql
- C语言学习(小甲鱼)
- 各种型号西门子PLC所支持的通信协议小结
热门文章
- 软件加入使用时间_Adobe CC 2020 系列软件更新(Adobe Zii 2020 5.2.1)| Mac软件天堂
- a1465苹果笔记本_苹果笔记本开机“文件夹图标里有个问号”,大神一根线完美修复...
- deepfake ai智能换脸_AI换脸之后,智能去除马赛克视频工具被疯传,测试结果令人意外...
- 2019哈工大计算机考研复试,哈工大计算机专业,复试比例101%,擦线党没戏了...
- html5把六张图片做成立方体,html5 3D旋转的图片立方体代码
- 【Lingo】分段函数
- Access数据类型
- 如何将excel表格导入word_如何将Excel中的数据写入Word表?
- CDN加速与DDOS防御
- Ego的Spring框架笔记