Codeforces Round #585 (Div. 2)E. Marbles(状压dp)
https://codeforces.com/contest/1215/problem/E
cnt[x][j]表示把x这种颜色全放到j这种颜色前面所需要的交换次数。
其实这题跟上一篇博客那题是同一个套路,难点在于想到预处理出cnt数组来进行转移。
1 #define bug(x) cout<<#x<<" is "<<x<<endl 2 #define IO std::ios::sync_with_stdio(0) 3 #include <bits/stdc++.h> 4 #define iter ::iterator 5 //#define pa pair<int,int> 6 using namespace std; 7 #define ll long long 8 #define mk make_pair 9 #define pb push_back 10 #define se second 11 #define fi first 12 #define ls o<<1 13 #define rs o<<1|1 14 ll mod=998244353; 15 const int inf=2e9+10; 16 const int N=(1<<20)+5; 17 ll d[N],cnt[25][25],sum[25]; 18 int n; 19 int main(){ 20 IO; 21 cin>>n; 22 for(int i=1;i<=n;i++){ 23 int x; 24 cin>>x; 25 x--; 26 for(int j=0;j<20;j++){ 27 cnt[x][j]+=sum[j]; 28 } 29 sum[x]++; 30 } 31 for(int i=0;i<=N-2;i++)d[i]=1e18; 32 d[0]=0; 33 for(int s=0;s<(1<<20);s++){ 34 for(int i=0;i<20;i++){ 35 if(!((s>>i)&1)){ 36 ll res=0; 37 for(int j=0;j<20;j++){ 38 if((s>>j)&1){ 39 res+=cnt[i][j]; 40 } 41 } 42 int ns=s^(1<<i); 43 d[ns]=min(d[ns],d[s]+res); 44 } 45 } 46 } 47 cout<<d[(1<<20)-1]<<endl; 48 }
转载于:https://www.cnblogs.com/ccsu-kid/p/11533702.html
Codeforces Round #585 (Div. 2)E. Marbles(状压dp)相关推荐
- Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对
传送门 文章目录 题意: 思路: 题意: 思路: 考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确定当前这个 ...
- Educational Codeforces Round 13 E. Another Sith Tournament 状压dp
E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...
- Codeforces Round #585 (Div. 2) F. Radio Stations 2-sat + 神仙建模
传送门 文章目录 题意: 思路: 题意: 你现在有ppp种电台,有nnn对关系(x,y)(x,y)(x,y)代表xxx电台或yyy电台中至少有一个,mmm对关系(x,y)(x,y)(x,y)代表xxx ...
- Codeforces Round #268 (Div. 1) C. Hack it! 数位dp + 构造数位
传送门 文章目录 题意: 思路: 题意: 定义f(x)f(x)f(x)表示xxx的十进制下数位和,现在给你aaa,让你选一个区间[l,r][l,r][l,r],满足∑i=lrf(i)moda=0\su ...
- Codeforces Round #741 (Div. 2) E. Rescue Niwen! 字符串 + dp
传送门 文章目录 题意: 思路: 题意: 给你一个串sss,定义其扩张串为s1,s1s2,...,s1s2..sn,s2,s2s3,...,sns_1,s_1s_2,...,s_1s_2..s_n,s ...
- Codeforces Round #740 (Div. 2) D2. Up the Strip dp + 分块优化 + 逆向思维
传送门 文章目录 题意: 思路 题意: 有nnn个细胞,你初始在第nnn细胞上,假设你当前在xxx处,你每次可以进行如下两个操作: (1)(1)(1)选择[1,x−1][1,x-1][1,x−1]内一 ...
- Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维
传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...
- Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换
传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的只包含1,21,21,2的序列aaa,你可以至多翻转一段区间,求翻转之后最长非递减子序列是多长. 思路: 考虑如果翻转的话,翻转的子区间 ...
- Codeforces Round #630 (Div. 2) F. Independent Set 树形dp
传送门 文章目录 题意: 思路: 题意: 给你一棵树,求这棵树的边导出子图中独立集的数量和,独立集大小可以为000. 思路: 先考虑普通的独立集数量怎么求,无非就是分情况讨论一下选根还是不选根,而这个 ...
最新文章
- flex 单独一行_Flex布局从了解到使用只需5min
- SpringMVC启动后自动执行
- mysql --创建数据库
- 远程下层文档 正在打印_奉贤金汇高速复印机出租一站式服务,上海区专业高速打印机出租...
- Leetcode题库 136.只出现一次的数字(异或 C实现)
- 数据结构——树的理解路线(总)
- SpringBoot防止重复请求,重复表单提交超级简单的注解实现
- android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框
- 智能解析php源码,PHP源码:XyPlayer在线影视v3.8二次智能解析源码
- JavaScript 代码判断:PC端和手机端
- Java JDK与JRE
- linux修改ip dhcp,Linux下在静态IP与动态DHCP之间切换的脚本
- 一文看尽科大讯飞年度发布会:医疗,是这家A股AI公司的新赛道
- Node.js快速文件服务器(通过HTTP的静态文件)
- 浅谈 JSON 那些被转义的字符们
- MOSS 2010:Visual Studio 2010开发体验(23)——编写自定义的BCS连接器
- css position, display, float 内联元素、块级元素
- R语言文本分析|利用jiebaR进行分词与词频统计
- odoo 12: 字段(Fields)
- Visual SLAM 笔记——李群和李代数详解
热门文章
- cortex-m3 R14(LR)寄存器的作用
- 网站镜像 mirror
- 字符串处理运用总结(2)(C++)
- GPT-4问世;LLM训练指南;纯浏览器跑Stable Diffusion
- 助手宝宝 v2007 是什么
- 前端进击笔记第二十二节 如何进行性能分析的自动化实现
- 运行代码,出现TypeError: fit() missing 1 required positional argument: 'y',对其进行修改
- 【ElementUI】el-table 多表格切换 导致 expands 展开行仍然会保留的问题(多表格切换时的表格渲染错乱)
- 各种开发测试相关免费学习书籍
- 小红书:将关闭带货笔记外链 直播带货外链功能不受影响