P3646 [APIO2015]巴厘岛的雕塑
非常好的二进制dp题
参考了这位大佬的思路:https://www.cnblogs.com/zbtrs/p/8495170.html
#include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<cstring> #include<cmath> #include<queue> using namespace std; typedef long long ll; const ll N=2e3+10,inf=1e18; ll n,A,B,len,ans,s[N],f[N][N],g[N]; inline ll read(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f; } inline void solve1(){while(len){for(ll i=1;i<=n;i++) for(ll j=1;j<=min(i,B);j++) f[i][j]=0;f[0][0]=1;for(ll i=1;i<=n;i++){for(ll j=1;j<=min(i,B);j++){for(int k=0;k<i;k++){if(f[k][j-1]){ll t=s[i]-s[k];if((!(t&(1ll<<(len-1))))&&((ans|(t>>len))==ans)) f[i][j]=1;}}}}int flag=0;for(int i=A;i<=B;i++) if(f[n][i]){flag=1;break;}if(flag) ans=ans<<1;else ans=ans<<1|1; len--;} } inline void solve2(){while(len){for(int i=1;i<=n;i++) g[i]=inf;for(int i=1;i<=n;i++){for(int j=0;j<i;j++){ll t=s[i]-s[j];if((!(t&(1ll<<(len-1))))&&((ans|(t>>len))==ans)) g[i]=min(g[i],g[j]+1);}}if(g[n]>B) ans=ans<<1|1;else ans=ans<<1;len--;} } int main(){n=read();A=read();B=read();for(int i=1;i<=n;i++) s[i]=s[i-1]+read();ll t=s[n];len=0;while(t){len++;t>>=1;}if(A!=1) solve1();else solve2();return printf("%lld\n",ans),0; }
转载于:https://www.cnblogs.com/xtkm/p/10825729.html
P3646 [APIO2015]巴厘岛的雕塑相关推荐
- 【BZOJ4069】[Apio2015]巴厘岛的雕塑 按位贪心+DP
[BZOJ4069][Apio2015]巴厘岛的雕塑 Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 ...
- Bzoj4069:[Apio2015]巴厘岛的雕塑:dp+贪心
题目链接:[Apio2015]巴厘岛的雕塑 一开始先写了个既错误又高复杂度的dp,令dp[i][j]=min(dp[i][k],dp[j][k-1]|(s[i]-s[j])),其中s[]代表前缀和 首 ...
- APIO2015巴厘岛的雕塑——数位DP
题目:https://www.luogu.org/problemnew/show/P3646 对于A>1,将答案各位全置1,然后从高位到低位改成0判断是否可行: 用f[i][j]数组代表前i个数 ...
- [APIO2015]巴厘岛的雕塑[按位贪心+dp]
题意 给你长度为 \(n\) 的序列,要求分成 \(k\) 段连续非空的区间,求所有区间和的 \(or\) 最小值. 分析 定义 \(f_{i,j}\) 表示前 \(i\) 个点分成 \(j\) 段的 ...
- 4069: [Apio2015]巴厘岛的雕塑 DP+按位贪心
去年的我对位运算一无所知..所以在考场上直接没敢看题..之后据说搜索有分,错的DP有分.我的内心是崩溃的..然而就算看了题还是什么都不会写. 考虑按位贪心,从高位到低位枚举,用 fi,j f_{i,j ...
- [APIO2015]巴厘岛的雕塑(数位dp)
[题解] 引用ZYF神犇一句话:"显然位运算的极值问题都应该从高位向低位考虑.优先让这一位为0,如果行的话这一位就是0,否则就设为1." 设答案为ans,从高位到低位枚举 是否有使 ...
- 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]
巴厘岛的雕塑 Time Limit: 10 Sec Memory Limit: 64 MB [Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑 ...
- [APIO2015] T1巴厘岛的雕塑
题目传送门 题目范围如果要求用longlonglong\ longlong long,在左移的时候一定要写成1LL1LL1LL! 题意 巴厘岛的一条主干道上共有NNN座雕塑,依次编号为111到NNN. ...
- 【简●解】巴厘岛的雕塑
[大意] 给定\(A\),\(B\),使一个区间的元素分为\(A\le x\le B\)组,每组的贡献为组内元素之和,最小化所有组贡献的或运算和. [分析] 开始一晃眼没看见区间连续这个条件,感觉做了 ...
最新文章
- golang中的recover
- [转] Windows Server 2012 Beta Cluster (Hyper-V 3.0)-iSCSI篇
- UNION JOIN 连接表
- 原创 leetcode/力扣 背包问题大总结,BAT程序员完整学习手册PDF开放下载!
- FFmpeg + SDL 的视频播放器的制作视频(雷神,雷霄骅)
- Python安装shapely包出现WindowsError: [Error 126]解决方案
- 将QMessageBox对话框中按钮的“Yes/No”转换成中文的“是/否”
- 手游脚本_雷电模拟器
- NEFU 262 贪吃的九头龙(树形背包,4级)
- 做好这几点,安心睡个好觉
- 2022全网最全的爆款抓包工具,各有千秋
- wpscan扫描的简单介绍(对WordPress的扫描CMS)
- 2020年冬小麦越冬期长势监测卫星遥感影像解读
- QListWidget removeItemWidget注意事项
- 飞秒激光脉冲的产生过程
- 分享个md生成思维导图的在线工具
- DXP_protel2004_原理图设计基础_新建和添加原理图库文件
- 《茶馆》再开张 这出戏濮存昕、冯远征演了20年
- Java面向对象(类的无参和带参)
- Fibonacci数列通项公式推导