一道画风清奇的数位dp
来源:互联网 发布:龙泉驾校网络上课流程 编辑:程序博客网 时间:2024/06/05 10:25
这道题画风清奇,标程跑的样例都不对,我深感困惑
理解了2h最后无功而返(其实还是基本看懂了 /捂脸熊)
最后不知道怎么搞来发篇blog 等我会了 就好好写题解 上面的不够好。
#include<cmath>#include<ctime>#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#include<iomanip>#include<vector>#include<string>#include<bitset>#include<queue>#include<set>#include<map>using namespace std;typedef long long ll;inline ll read(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;}void print(ll x){if(x<0)putchar('-'),x=-x;if(x>=10)print(x/10);putchar(x%10+'0');}const int N=200100;const ll inf=0X3f3f3f3f3f3f3f3f;ll f[61][N][2],a[N],b[2][N];int len[2],cnt[2];int main(){int n=read();register int i,j,k,sum;register bool t;ll tmp,mn=inf;for(i=1;i<=n;++i)a[i]=read(),mn=min(mn,a[i]);for(i=1;i<=n;++i){t=a[i]&1;cnt[t]++;b[t][++len[t]]=a[i];}if(!(cnt[1]&1))mn&1?f[0][0][0]=1:f[0][0][1]=1;if(!(cnt[0]&1))mn&1?f[0][cnt[0]][0]=1:f[0][cnt[0]][1]=1;for(i=1;i<=len[0];++i)a[i]=b[0][i];for(i=1;i<=len[1];++i)a[i+len[0]]=b[1][i];len[0]=len[1]=0;for(i=1;i<60;++i){cnt[0]=cnt[1]=0;sum=0;tmp=1ll<<i;for(j=1;j<=n;++j)a[j]&tmp?cnt[1]++:cnt[0]++;for(j=0;j<=n;++j){for(k=0;k<2;++k){if(!(cnt[1]&1))mn&tmp?f[i][sum][0]+=f[i-1][j][k]:f[i][sum][k]+=f[i-1][j][k];if(!(cnt[0]&1))mn&tmp?f[i][cnt[0]+sum][k]+=f[i-1][j][k]:f[i][cnt[0]+sum][1]+=f[i-1][j][k];}if(a[j+1]&tmp)cnt[0]++,cnt[1]--;else cnt[0]--,cnt[1]++,sum++;if(j){t=a[j]&tmp;b[t][++len[t]]=a[j];}}for(j=1;j<=len[0];++j)a[j]=b[0][j];for(j=1;j<=len[1];++j)a[j+len[0]]=b[1][j];len[0]=len[1]=0;}cout<<f[59][0][0]<<endl;return 0;}/*44 6 8 102*/
阅读全文
0 0
- 一道画风清奇的数位dp
- 我的第一道数位dp,hdu3555
- HDU 3555 我的第一道数位DP
- 艰难的数位DP
- 简单的数位dp
- 某大牛的数位DP
- 数位DP:不要62(第一道题,主要是弄懂数位DP是啥意思)
- 数位DP--由一道微软笔试题引起
- 一道DP的思考题
- HDU 4507 吉哥系列故事――恨7不成妻(数位dp&好魔性的一道好题)
- 一个数位dp的题目
- 关于数位DP的学习
- hdu3555经典的数位dp
- 数位dp的一种姿势
- 数位dp的简单使用
- 简单的数位dp练习
- 一道关于DP的ACM
- 一道不错的dp题
- 静态链表实现
- leetcode_java_第一题 two sum
- Flask项目文件目录
- C++处理XML文件
- 惊喜!Mat研究(1)
- 一道画风清奇的数位dp
- 基于七牛播放器的直播
- File Transfer
- Spring FrameWork学习笔记(一)Spring框架综述
- JDBC部分知识点
- 【完全解决】Ubuntu下正确安装VMware Tools及安装搜狗输入法
- 当你老了,一生最后悔什么?大数据告诉你!
- 02-线性结构1 两个有序链表序列的合并
- 求二叉树的深度和宽度[Java]