BZOJ 4069 [Apio2015]巴厘岛的雕塑 ——贪心
自己首先想了一种方法$f(i)$表示前$i$个最小值为多少。
然而发现位运算并不满足局部最优性。
然后我们可以从高到低贪心的判断,使得每一组的和在一个特定的范围之内。
还要特判最后一个Subtask,
想了想不用特判的办法,觉得bitset压不过去,就没写。
#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define ll long long
#define llinf 10000000000000000LL
#define mp make_pair int n,a,b;
ll y[2005],ans=llinf,upper,lower=0;
bool f[2][2005];
int g[2005]; bool test()
{
int now=0,pre=1; memset(f[now],false,sizeof f[now]); f[0][0]=true;
F(j,0,b-1)
{
now^=1; pre^=1; memset(f[now],false,sizeof f[now]);
F(i,0,n-1) if (f[pre][i]) F(k,i+1,n)
if ((y[k]-y[i]|lower)<=upper)
{
f[now][k]=true;
if (k==n&&j+1>=a) return true;
}
}
return false;
} bool test2()
{
memset(g,0x3f,sizeof g);
g[0]=0;F(i,1,n) F(j,0,i-1) if ((y[i]-y[j]|lower)<=upper) g[i]=min(g[j]+1,g[i]);
return g[n]<=b;
} int main()
{
scanf("%d%d%d",&n,&a,&b);
F(i,1,n) scanf("%lld",&y[i]);
F(i,1,n) y[i]+=y[i-1];
D(i,40,0)
{
memset(f,false,sizeof f);
upper=((1LL<<i)-1);upper+=lower;
if ((n<=500&&!test())||(n>500&&!test2())) lower+=1LL<<i;
}
printf("%lld\n",lower);
}
BZOJ 4069 [Apio2015]巴厘岛的雕塑 ——贪心的更多相关文章
- bzoj 4069 [Apio2015]巴厘岛的雕塑 dp
[Apio2015]巴厘岛的雕塑 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 494 Solved: 238[Submit][Status][Dis ...
- bzoj 4069: [Apio2015]巴厘岛的雕塑【dp】
居然要对不同的数据写不同的dp= = 首先记得开long long,<<的时候要写成1ll<<bt 根据or的性质,总体思路是从大到小枚举答案的每一位,看是否能为0. 首先对于 ...
- [APIO2015]巴厘岛的雕塑 --- 贪心 + 枚举
[APIO2015]巴厘岛的雕塑 题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有\(N\)座雕塑,为方便起见,我们把这些雕塑从 1 到\(N\)连续地进行 ...
- 4069: [Apio2015]巴厘岛的雕塑
Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 1 到 N 连续地进行标号,其中第 i 座雕塑的年龄 ...
- [APIO2015]巴厘岛的雕塑 贪心+DP+特殊数据优化
写了好久.... 刚刚调了一个小时各种对拍,,,,最后发现是多写了一个等号,,,,内心拒绝 表示一开始看真的是各种懵逼啊 在偷听到某位大佬说的从高位开始贪心后发现可做 首先考虑小数据(因为可以乱搞) ...
- bzoj千题计划239:bzoj4069: [Apio2015]巴厘岛的雕塑
http://www.lydsy.com/JudgeOnline/problem.php?id=4069 a!=1: 从高位到低位一位一位的算 记录下哪些位必须为0 dp[i][j] 表示前i个数分为 ...
- 【BZOJ4069】[Apio2015]巴厘岛的雕塑 按位贪心+DP
[BZOJ4069][Apio2015]巴厘岛的雕塑 Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 ...
- 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]
巴厘岛的雕塑 Time Limit: 10 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑, ...
- [APIO2015]巴厘岛的雕塑[按位贪心+dp]
题意 给你长度为 \(n\) 的序列,要求分成 \(k\) 段连续非空的区间,求所有区间和的 \(or\) 最小值. 分析 定义 \(f_{i,j}\) 表示前 \(i\) 个点分成 \(j\) 段的 ...
随机推荐
- 使用pip 提示UnicodeDecodeError: 'ascii' codec can't decode解决方法
python目录 Python27\Lib\site-packages 建一个文件sitecustomize.py 内容写: import sys sys.setdefaultencoding('gb ...
- 操作系统(5)_内存管理_李善平ppt
i386先通过段是管理,在通过页是管理
- 简单的Maven+SpringMVC
一.SpringMVC非注解编程 1:修改pom.xml文件(相当于非Maven项目的导入jar包) <!-- https://mvnrepository.com/artifact/org.sp ...
- list变set去重,set交集
set 取交集 并集 删除没有的元素 不会报错 remove 会报错 https://www.cnblogs.com/alex3714/articles/5717620.html
- python 用requests请求,报SSL:CERTIFICATE_VERIFY_FAILED错误
https://www.aliyun.com/jiaocheng/437481.html
- MAX(数论)
Description 小C有n个区间,其中第i个区间为[li,ri],小C想从每个区间中各选出一个整数,使得所有选出的数and起来得到的结果最大,请你求出这个值. Input Format 第一行一 ...
- P3387 【模板】缩点
题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...
- HDU1272小希的迷宫
小希的迷宫 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一 ...
- Scrapy框架中选择器的用法【转】
Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法 请给作者点赞 --> 原文链接 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpa ...
- 可拖动jquery插件
http://www.open-open.com/ajax/DragDrop.htm http://sc.chinaz.com/info/130722592854.htm http://sc.itcn ...