去年的我对位运算一无所知。。所以在考场上直接没敢看题。。之后据说搜索有分,错的DP有分。我的内心是崩溃的。。然而就算看了题还是什么都不会写


考虑按位贪心,从高位到低位枚举,用 fi,j f_{i,j}表示前 i i个数分成jj段且保证满足已经枚举过的位的答案。
然后 O(n3) O(n^3)就可以轻松过点前 4 4个SubtaskSubtask。
对于第 5 5个SubtaskSubtask,满足 A=1 A=1,所以我们用 gi g_i表示前 i i个数满足答案的情况下最少分成几段,只要保证gn<=Bg_n就可以了。
时隔半年多看这道题感觉还是挺水的嘛

#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
ll s[2005],ans;
int n,a,b,B;
int g[2005],f[105][105];
inline int read()
{int a=0,f=1; char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();}while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();}return a*f;
}
inline bool pd(ll t)
{return (((t>>B+1)|ans)==ans&&(t>>B&1)==0);
}
int main()
{n=read(); a=read(); b=read();for (int i=1;i<=n;i++) s[i]=s[i-1]+read();for (;1ll<<B<s[n];B++);if (a!=1){f[0][0]=1;for (;~B;B--){for (int i=1;i<=n;i++)for (int j=1;j<=min(i,b);j++){f[i][j]=0;for (int k=0;k<i&&!f[i][j];k++)if (f[k][j-1]&&pd(s[i]-s[k])) f[i][j]=1;}int tmp=1;for (int i=a;i<=b&&tmp;i++)if (f[n][i]) tmp=0;ans=ans<<1|tmp;}}else{for (;~B;B--){for (int i=1;i<=n;i++){g[i]=n+1;for (int k=0;k<i;k++)if (pd(s[i]-s[k])) g[i]=min(g[i],g[k]+1);}ans=ans<<1|(g[n]>b);}}cout << ans << endl;        return 0;
}

4069: [Apio2015]巴厘岛的雕塑 DP+按位贪心相关推荐

  1. Bzoj4069:[Apio2015]巴厘岛的雕塑:dp+贪心

    题目链接:[Apio2015]巴厘岛的雕塑 一开始先写了个既错误又高复杂度的dp,令dp[i][j]=min(dp[i][k],dp[j][k-1]|(s[i]-s[j])),其中s[]代表前缀和 首 ...

  2. 【BZOJ4069】[Apio2015]巴厘岛的雕塑 按位贪心+DP

    [BZOJ4069][Apio2015]巴厘岛的雕塑 Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 ...

  3. [APIO2015]巴厘岛的雕塑[按位贪心+dp]

    题意 给你长度为 \(n\) 的序列,要求分成 \(k\) 段连续非空的区间,求所有区间和的 \(or\) 最小值. 分析 定义 \(f_{i,j}\) 表示前 \(i\) 个点分成 \(j\) 段的 ...

  4. [APIO2015]巴厘岛的雕塑(数位dp)

    [题解] 引用ZYF神犇一句话:"显然位运算的极值问题都应该从高位向低位考虑.优先让这一位为0,如果行的话这一位就是0,否则就设为1." 设答案为ans,从高位到低位枚举 是否有使 ...

  5. APIO2015巴厘岛的雕塑——数位DP

    题目:https://www.luogu.org/problemnew/show/P3646 对于A>1,将答案各位全置1,然后从高位到低位改成0判断是否可行: 用f[i][j]数组代表前i个数 ...

  6. P3646 [APIO2015]巴厘岛的雕塑

    非常好的二进制dp题 参考了这位大佬的思路:https://www.cnblogs.com/zbtrs/p/8495170.html #include<iostream> #include ...

  7. 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]

    巴厘岛的雕塑 Time Limit: 10 Sec  Memory Limit: 64 MB [Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑 ...

  8. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 486  Solved: 266 [Submit][S ...

  9. [APIO2015] T1巴厘岛的雕塑

    题目传送门 题目范围如果要求用longlonglong\ longlong long,在左移的时候一定要写成1LL1LL1LL! 题意 巴厘岛的一条主干道上共有NNN座雕塑,依次编号为111到NNN. ...

最新文章

  1. TensorFlow ImportError: (‘Failed to import pydot. You must `pip install pydot`)
  2. 搭建好看的静态博客(使用Hexo进行搭建)
  3. 《架构师(“拥抱2015”特刊)》发布
  4. mock-api 使用手册
  5. 在 SQLite3 中使用回调函数
  6. java process 重启_JAVA Process启动sh 后的问题
  7. Android 开发之 bindService() 通信
  8. 三、Oracle 查询+where条件
  9. 飞机遭遇时空乱流离奇穿越到30年前
  10. SaaSBase:什么是零一裂变SCRM?
  11. 整数进制转换——输入十进制整数和欲转换的进制数r,将十进制数转换为r进制数的Python程序
  12. 布置工作五步法,让工作布置跟高效
  13. 从Unity商店下载的插件存放的位置
  14. python0不能做除数报错_浅谈pandas dataframe对除数是零的处理
  15. 解决tf报Graph disconnected错误
  16. 晚安西南-----液气分离器
  17. 读《深入浅出MySQL数据库开发、优化与管理维护(第2版)》笔记1
  18. Weakly Supervised Semantic Segmentation list
  19. 数据标注自动化工具 - Snorkel【机器学习】
  20. 如何高逼格的操作电脑打开软件(文件)Win+R高效启动软件

热门文章

  1. nodejs与Promise的思想碰撞
  2. java进阶之匿名内部类,访问修饰符,包
  3. 微信小程序多维数组筛选(以二维数组为例)
  4. 手把手教你制作中英文词云_英文.py
  5. oracle中multiset,集合操作符Multiset
  6. webpack-第一集
  7. GIS开发:GeoJSON坐标和WKT的转换
  8. Linux系统下如何修改主机名
  9. 模型视图简介、QListWidget、QTreeWidget、QTableWidget、QStringListModel、QFileSystemModel
  10. Socket 保证长连接的两种方式