LINK

题意

一道题有kkk个测试点,共提交了nnn次

每次提交是一个长为kkk的010101串,表示是否能通过第iii个测试点

现在要求你重新排序kkk个测试点,使得∑i=1nw[i]\sum\limits_{i=1}^nw[i]i=1∑n​w[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)相关推荐

  1. 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 ...

  2. 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 ...

  3. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest

    layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luow ...

  4. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)

    layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题) author: " ...

  5. 2018 ACM-ICPC Syrian Collegiate Programming Contest(部分题解,待补)

    传送门 2018 ACM-ICPC 叙利亚大学生程序设计竞赛 Problem A: Hello SCPC 2018! 签到题 Problem B: Binary Hamming 简单题 #includ ...

  6. 2015 ACM Syrian Collegiate Programming Contest

    A. My Friend of Misery 计算出答案的上下界即可. 时间复杂度$O(n)$. #include<bits/stdc++.h> using namespace std; ...

  7. 2018 ACM-ICPC, Syrian Collegiate Programming Contest

    这是2018年叙利亚大学程序设计赛,星期一没什么比赛就拿这套题目练了一下手,在这里写几道我做出来的里面还算有点难度的题目(实力有限好多题看都没看) 比赛链接 http://codeforces.com ...

  8. 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 ...

  9. 2018 ACM-ICPC Syrian Collegiate Programming Contest

    Problem H: Bugged System 思路来源**(https://blog.csdn.net/Mitsuha_/article/details/84455292)** Mr. Light ...

最新文章

  1. Cisco 交换机配置端口镜像
  2. 仔细讨论 C/C++ 字节对齐问题⭐⭐
  3. 乐观锁与悲观锁及应用举例
  4. 2018GDKOI——记录
  5. 精妙的SQL语句收藏
  6. 常见的遍历数组和对象的方法
  7. 夏普mx2608n网络扫描到计算机,【转载】夏普复印机网络扫描教程
  8. 3D相机技术 | 立体视觉传感器+TOF相机
  9. edu邮箱填写服务器,学生邮箱Outlook使用设置
  10. 这 6 款在线 PDF 转换工具,得试试
  11. Oracle增删改查
  12. ppt制作:加总页数首页不显示页码
  13. excel 关联数据
  14. cmd操作MySQL 多表查询(日记 day 4)
  15. 10 款你不知道的 Linux 环境下的替代工具
  16. 在Eclipse下开发Robocode
  17. 旧手机物联网_废旧的 Android 手机能拿来干什么有趣的事?
  18. mysql数据库报错1709_一、数据库的使用Mysql
  19. C语言学习(小甲鱼)
  20. 各种型号西门子PLC所支持的通信协议小结

热门文章

  1. 软件加入使用时间_Adobe CC 2020 系列软件更新(Adobe Zii 2020 5.2.1)| Mac软件天堂
  2. a1465苹果笔记本_苹果笔记本开机“文件夹图标里有个问号”,大神一根线完美修复...
  3. deepfake ai智能换脸_AI换脸之后,智能去除马赛克视频工具被疯传,测试结果令人意外...
  4. 2019哈工大计算机考研复试,哈工大计算机专业,复试比例101%,擦线党没戏了...
  5. html5把六张图片做成立方体,html5 3D旋转的图片立方体代码
  6. 【Lingo】分段函数
  7. Access数据类型
  8. 如何将excel表格导入word_如何将Excel中的数据写入Word表?
  9. CDN加速与DDOS防御
  10. Ego的Spring框架笔记