【Codeforces】CF 165 E Compatible Numbers(状压dp)
题目
传送门:QWQ
分析
很难想到方向,但有方向了就很easy了。
我们如何减少不必要的计算?
如果我们知道了$ 100111 $的相容的数,$ 100101 $的相容数和他是完全一样的。
我们就靠着这个思想写一下就行了。
注意位运算优先级。
代码
- #include <bits/stdc++.h>
- using namespace std;
- const int maxn=<<, INF=(<<)-;
- int dp[maxn], a[maxn];
- int main(){
- int n;
- scanf("%d", &n);
- for(int i=; i<=n; i++)
- scanf("%d", &a[i]);
- memset(dp,-,sizeof(dp));
- for(int i=;i<=n;i++){
- dp[INF&(~a[i])]=a[i];
- // printf("%d %d\n", INF&(~a[i]),a[i]);
- }
- for(int i=INF; i>=; i--) {
- if(dp[i]>) continue;
- for(int j=;j<;j++) {
- if(!(i &(<<j)) && dp[i|(<<j)]>) {
- dp[i]=dp[i|(<<j)]; //printf("---- %d %d %d %d\n",i,j,a[i] &(1<<j),dp[a[i]&(1<<j)]);
- break;
- }
- }
- }
- for(int i=;i<=n;i++)
- printf("%d ",dp[a[i]]);
- return ;
- }
【Codeforces】CF 165 E Compatible Numbers(状压dp)的更多相关文章
- Codeforces Gym 100015F Fighting for Triangles 状压DP
Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph ...
- Codeforces Round #235 (Div. 2) D. Roman and Numbers 状压dp+数位dp
题目链接: http://codeforces.com/problemset/problem/401/D D. Roman and Numbers time limit per test4 secon ...
- codeforces 342D Xenia and Dominoes(状压dp+容斥)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud D. Xenia and Dominoes Xenia likes puzzles ...
- Codeforces 375C - Circling Round Treasures(状压 dp+最短路转移)
题面传送门 注意到这题中宝藏 \(+\) 炸弹个数最多只有 \(8\) 个,故考虑状压,设 \(dp[x][y][S]\) 表示当前坐标为 \((x,y)\),有且仅有 \(S\) 当中的物品被包围在 ...
- Codeforces Beta Round #16 E. Fish (状压dp)(概率dp)
Codeforces Beta Round #16 (Div. 2 Only) E. Fish 题目链接:## 点击打开链接 题意: 有 \(n\) 条鱼,每两条鱼相遇都会有其中一只吃掉对方,现在给你 ...
- CF401D Roman and Numbers 状压DP
CF401D 题意翻译 将n(n<=10^18)的各位数字重新排列(不允许有前导零) 求 可以构造几个mod m等于0的数字 题目描述 Roman is a young mathematicia ...
- codeforces gym #101161H - Witcher Potion(状压DP)
题目链接: http://codeforces.com/gym/101161/attachments 题意: 总共有n瓶药可供选择 每瓶药可以增加$e_i$点体力,和$p_i$点毒性 每分钟消耗1点毒 ...
- Codeforces 580D Kefa and Dishes(状压DP)
题目大概说要吃掉n个食物里m个,吃掉各个食物都会得到一定的满意度,有些食物如果在某些食物之后吃还会增加满意度,问怎么吃满意度最高. dp[S][i]表示已经吃掉的食物集合是S且刚吃的是第i个食物的最大 ...
- CodeForces 385 D.Bear and Floodlight 状压DP
枚举灯的所有可能状态(亮或者不亮)(1<<20)最多可能的情况有1048576种 dp[i]表示 i 状态时灯所能照射到的最远距离(i 的二进制中如果第j位为0,则表示第j个灯不亮,否则就 ...
随机推荐
- JDK中Integer类的进制转换实现
JDK中关于Integer类的进制转换方法很精巧,具体实现如下: final static char[] digits = { '0' , '1' , '2' , '3' , '4' , '5' , ...
- 理解 LSTM 网络
递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...
- Python入门——第一个Python程序
1.1 Hello Python书写步骤 步骤一:新建文本文档文件,修改名称为hello.py 步骤二:使用记事本打开文件,书写程序内容如下: print("hello python&quo ...
- Unity 3D游戏-见缝插针源码
Unity见缝插针功能实现 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Sphere Rotatio ...
- About DOM
文档对象模型,简称DOM.是HTML页面结构给javascript提供的一个入口,它就像一个桥梁,连接两者的关系.通过DOM,JavaScript拥有访问并修改HTML的权限. 一.DOM模型: 首先 ...
- hdu2090-2097
hdu2090 模拟 #include<stdio.h> int main(){ ]; ,a1,a2; ; while(scanf("%s%lf%lf",b,& ...
- Executors Future Callable 使用场景实例
https://www.jb51.net/article/132606.htm: 我们都知道实现多线程有2种方式,一种是继承Thread,一种是实现Runnable,但这2种方式都有一个缺陷,在任务完 ...
- LG4455 【[CQOI2018]社交网络】
分析 这题我们先转化为图论模型,发现求的其实就是有向图中以1为根的生成树数量.而关于这一问题存在O(3^n * n^2)的算法,一看数据n=250,发现不行.于是需要更高效的算法--Matrix-Tr ...
- Linux块设备驱动_WDS
推荐书:<Linux内核源代码情景分析> 1.字符设备驱动和使用中等待某一事件的方法①查询方式②休眠唤醒,但是这种没有超时时间③poll机制,在休眠唤醒基础上加一个超时时间④异步通知,异步 ...
- 使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现
接上面的文章,上面的主要是进行html 页面自己进行处理.但是对于进行asp.net 的开发者以及其他的就显的不太好了. 我的实现方式是使用IHttpModule 进行对于用户请求的带有参数的js文件 ...