bzoj千题计划239:bzoj4069: [Apio2015]巴厘岛的雕塑
http://www.lydsy.com/JudgeOnline/problem.php?id=4069
a!=1:
从高位到低位一位一位的算
记录下哪些位必须为0
dp[i][j] 表示前i个数分为j组,这一位为0,且满足之前必须为0的位也是0 是否可行
枚举k,表示k+1~i分为一组
若k+1~i的和满足 必须为0的位是0,且dp[k][j-1] 为true
则dp[i][j]为true
a=1:
从高位到低位一位一位的算
记录下哪些位必须为0
dp[i] 表示前i个数,这一位为0,且满足之前必须为0的位也是0,最少能划分的组数
枚举k,表示k+1~i划分为一组
若k+1~i的和满足 必须为0的位是0,且dp[k]合法,dp[i]=min{ dp[k] }+1
#include<cstdio>
#include<cstring>
#include<iostream> #define N 2001 using namespace std; typedef long long LL; int n,a,b;
LL sum[N]; LL zero,ans; bool dp1[N][N]; int dp2[N]; template<typename T>
void read(T &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} bool judge(int l,int r,int t)
{
LL s=sum[r]-sum[l-];
return !(zero&s) && !(s&(1LL<<t));
} void solve1()
{
for(int t=;t>=;--t)
{
memset(dp1,false,sizeof(dp1));
dp1[][]=true;
for(int i=;i<=n;++i)
for(int j=;j<=b;++j)
for(int k=;k<i;++k)
if(dp1[k][j-] && judge(k+,i,t)) dp1[i][j]=true;
int j;
for(j=a;j<=b;++j)
if(dp1[n][j])
{
zero+=1LL<<t;
break;
}
if(j==b+) ans+=1LL<<t;
}
} void solve2()
{
for(int t=;t>=;--t)
{
memset(dp2,,sizeof(dp2));
dp2[]=;
for(int i=;i<=n;++i)
for(int j=;j<i;++j)
if(dp2[j]!=- && judge(j+,i,t)) dp2[i]=min(dp2[i],dp2[j]+);
if(dp2[n]<=b) zero+=1LL<<t;
else ans+=1LL<<t;
}
} int main()
{
//freopen("sculpture.in","r",stdin);
//freopen("sculpture.out","w",stdout);
read(n); read(a); read(b);
for(int i=;i<=n;++i) read(sum[i]),sum[i]+=sum[i-];
if(a!=) solve1();
else solve2();
cout<<ans;
}
4069: [Apio2015]巴厘岛的雕塑
Time Limit: 10 Sec Memory Limit: 64 MB
Submit: 466 Solved: 228
[Submit][Status][Discuss]
Description
Input
输入的第一行包含三个用空格分开的整数 N,A,B。
Output
输出一行一个数,表示最小的最终优美度。
Sample Input
8 1 2 1 5 4
Sample Output
explanation
将这些雕塑分为 2 组,(8,1,2) 和 (1,5,4),它们的和是 (11) 和 (10),最终优美度是 (11 OR 10)=11。(不难验证,这也是最终优美度的最小值。)
HINT
子任务 1 (9 分)
bzoj千题计划239:bzoj4069: [Apio2015]巴厘岛的雕塑的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
- bzoj千题计划250:bzoj3670: [Noi2014]动物园
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...
随机推荐
- LintCode——旋转字符串
描述:给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转) 样例:对于字符串 "abcdefg" offset=0 => "abcdefg&qu ...
- 微软职位内部推荐-Software Engineer-Sharepoint
微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...
- 作业三:LINUX内核的启动过程
作业三:LINUX内核的启动过程 一.使用GDB跟踪内核从start_kernel到init进程启动(附实验截图) (一)使用自己的Linux系统环境搭建MenuOS的过程 下载内核源代码编译内核 c ...
- 20135337朱荟潼 Linux第二周学习总结——操作系统是如何工作的
一.计算机是如何工作的--总结 三个法宝 存储程序计算机.函数调用堆栈.中断机制 二.堆栈 1.是c语言程序运行时必须的一个记录调用路径和参数的空间. 函数调用框架.传递参数.保存返回地址.提供局部变 ...
- TensorFlow常用API汇总
1.tensorflow的基本运作为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf.p ...
- 安装VS2013
安装VS2013, 之前就有VS2010,安装了一个多小时,纠结,下面是截图. 1.安装 2.登录,之前就有账号了 3.这就是VS2013了. 4.测试 5通 ...
- 各小组Alpha版项目发布作品点评
第一组:新蜂小组 题目:俄罗斯方块 评论:主体功能已经完成,可以流畅的进行游戏,游戏素材都是由贴图美化过的,期待计分系统等的完善. 第二组:天天向上 题目:连连看 评论:核心功能完成,可以流畅的进行游 ...
- Postgres数据库获取所有的索引信息的SQL
Study From:https://blog.csdn.net/u013992330/article/details/73870734 SELECT A.SCHEMANAME, A.TABLENAM ...
- Java反射的用法
Class类 在Java中,每个class都有一个相应的Class对象.也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息. 反射 ...
- vue中的minix
minix 是个什么东西, 就是混合,把你混合给我 浅显表述就是 你说 : ‘我叫李四’, 我说 : ‘我叫张三’, 然后把你 混合给我, 就成了 我说 : ‘我叫张三我叫李四’, 所有解说都在例子里 ...