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的子节点 那么 ...
随机推荐
- svn插件下载的两种方式
1.下载SVN插件 SVN插件下载地址及更新地址,你根据需要选择你需要的版本.现在最新是1.8.x Links for 1.8.x Release: Eclipse up ...
- 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard
目录 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard 正文 对我的启发 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard Sanyam Bhutani 是 M ...
- HTTP2初探
背景 本文是对Google博客上文章的翻译和笔记.以及一些待解决的问题记录. Google 博客上这篇文章的中文版有很多翻译错误. 概述 HTTP/2 仍是对之前 HTTP 标准的扩展,而非替代.HT ...
- PHP学习笔记1
1.什么是PHP? Hypertext Preprocessor(超文本预处理语言). 是脚本语言. 是最流行的网站开发语言. 2.PHP能做什么? 可以生成动态页面内容. 可以创建.打开.读取.写入 ...
- 《在kali上完成gdb调试》
kali使用流程 1.使menuos停止 方法如图: 效果如图: 2.启动调试 打开一个新的命令行,然后方法如下图: 3.设置断点 注:由图可看出,断点设置在sys_clone,dup_task_st ...
- c++ 读写功能
课程作业三 git链接: Operations 感想 这次代码修改的地方主要有,加入了文件读写.读出功能,以及分离函数写到了头文件里. 但是也有很多不足的地方,首先本来想要 ...
- 第一个spring,总结!
陈志棚:界面跳转与框架 李天麟:游戏界面ui 徐侃:算法代码的设计 经过五天的时间,开会时候分配的任务,已经全部完成,在这期间中,我们遇到了一些问题.但是,经过android老师的指导后,app成功的 ...
- Activiti源码:ActivitiEventSupport类中eventListeners的设计
ActivitiEventSupport类成员eventListeners是使用CopyOnWriteArrayList实现的. public ActivitiEventSupport() { eve ...
- Maven 学习笔记——将普通的Java项目转换成Maven项目(3)
将一个普通的java项目转换成Maven项目并不是一个很大的任务,仅仅只需要下面的几步就能将转换成功.下面我是用一个简单的Selenium测试小demon作为例子来说的. 移调项目中所有关联的Libr ...
- python + opencv 环境配置
1.python 2.7.10 2.numpy 1.8.1 3.opencv2.4.8 4.OpenCV目录 ...\opencv\build\python\2.7" 下 "cv2 ...