BZOJ3749 : [POI2015]Łasuchy
设f[i][S]表示第i份食物被两个人吃的状态为S是否有可能,枚举f[1][]的情况后检验
f[i][0]=(f[i-1][1]&a[i-1]>=a[i])|(f[i-1][3]&a[i-1]>=2*a[i])
f[i][1]=(f[i-1][1]&2*a[i-1]>=a[i])|(f[i-1][3]&a[i-1]>=a[i])
f[i][2]=(f[i-1][0]&a[i]>=a[i-1])|(f[i-1][2]&2*a[i]>=a[i-1])
f[i][3]=(f[i-1][0]&a[i]>=2*a[i-1])|(f[i-1][2]&a[i]>=a[i-1])
#include<cstdio>
#define N 1000010
int n,i,j,S,a[N],g[N][4],ans[N],c[N];
bool f[N][4];
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
bool dp(int S){
for(i=1;i<=n;i++)for(j=0;j<4;j++)f[i][j]=0;
f[1][S]=1;
for(i=2;i<=n;i++){
if(f[i-1][1]&a[i-1]>=a[i])f[i][0]=1,g[i][0]=1;
else if(f[i-1][3]&a[i-1]>=2*a[i])f[i][0]=1,g[i][0]=3;
if(f[i-1][1]&2*a[i-1]>=a[i])f[i][1]=1,g[i][1]=1;
else if(f[i-1][3]&a[i-1]>=a[i])f[i][1]=1,g[i][1]=3;
if(f[i-1][0]&a[i]>=a[i-1])f[i][2]=1,g[i][2]=0;
else if(f[i-1][2]&2*a[i]>=a[i-1])f[i][2]=1,g[i][2]=2;
if(f[i-1][0]&a[i]>=2*a[i-1])f[i][3]=1,g[i][3]=0;
else if(f[i-1][2]&a[i]>=a[i-1])f[i][3]=1,g[i][3]=2;
}
for(j=0;j<4;j++)f[0][j]=f[n][j],f[1][j]=0;
i=1;
if(f[i-1][1]&a[i-1]>=a[i])f[i][0]=1,g[i][0]=1;
else if(f[i-1][3]&a[i-1]>=2*a[i])f[i][0]=1,g[i][0]=3;
if(f[i-1][1]&2*a[i-1]>=a[i])f[i][1]=1,g[i][1]=1;
else if(f[i-1][3]&a[i-1]>=a[i])f[i][1]=1,g[i][1]=3;
if(f[i-1][0]&a[i]>=a[i-1])f[i][2]=1,g[i][2]=0;
else if(f[i-1][2]&2*a[i]>=a[i-1])f[i][2]=1,g[i][2]=2;
if(f[i-1][0]&a[i]>=2*a[i-1])f[i][3]=1,g[i][3]=0;
else if(f[i-1][2]&a[i]>=a[i-1])f[i][3]=1,g[i][3]=2;
return f[1][S];
}
int main(){
read(n);
for(i=1;i<=n;i++)read(a[i]);a[0]=a[n];
for(S=0;S<4;S++)if(dp(S))break;
if(S==4)puts("NIE");
else{
ans[1]=S;
for(i=n,j=g[1][S];i>1;j=g[i--][j])ans[i]=j;
if(ans[1]==1||ans[1]==3)c[1]=1;
if(ans[1]==2||ans[1]==3)c[n]=1;
for(i=2;i<=n;i++){
if(ans[i]==1||ans[i]==3)c[i]=i;
if(ans[i]==2||ans[i]==3)c[i-1]=i;
}
for(i=1;i<=n;i++)printf("%d ",c[i]);
}
return 0;
}
BZOJ3749 : [POI2015]Łasuchy的更多相关文章
- [POI2015]Łasuchy
[POI2015]Łasuchy 题目大意: 圆桌上摆放着\(n(n\le10^6)\)份食物,围成一圈,第\(i\)份食物所含热量为\(c_i\). 相邻两份食物之间坐着一个人,共有\(n\)个人. ...
- BZOJ 3749: [POI2015]Łasuchy【动态规划】
Description 圆桌上摆放着n份食物,围成一圈,第i份食物所含热量为c[i]. 相邻两份食物之间坐着一个人,共有n个人.每个人有两种选择,吃自己左边或者右边的食物.如果两个人选择了同一份食物, ...
- BZOJ 3749: [POI2015]Łasuchy(贪心)
Orz大佬博客 CODE #include <bits/stdc++.h> using namespace std; typedef long long LL; char cb[1< ...
- @bzoj - 3749@ [POI2015] Łasuchy
目录 @description@ @solution@ @version - 1@ @version - 2@ @accepted code@ @version - 1@ @version - 2@ ...
- POI2015题解
POI2015题解 吐槽一下为什么POI2015开始就成了破烂波兰文题目名了啊... 咕了一道3748没写打表题没什么意思,还剩\(BZOJ\)上的\(14\)道题. [BZOJ3746][POI20 ...
- [Poi2015]
[POI2015]Łasuchy 一看以为是sb题 简单来说就是每个人获得热量要尽量多 不能找别人 首先这道题好像我自己找不到NIE的情况 很容易想到一个优化 如果一个数/2>另一个数 那么一定 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 4385: [POI2015]Wilcze doły
4385: [POI2015]Wilcze doły Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 648 Solved: 263[Submit][ ...
- BZOJ 4384: [POI2015]Trzy wieże
4384: [POI2015]Trzy wieże Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 217 Solved: 61[Submit][St ...
随机推荐
- DrClient 校园网客户端破解
好吧..详细点.这个功能就是破解学校的限制 让你开无线网共享给手机的时候 不会被断网 提示有代理软件..这样帮你电脑省好多流量.平板电脑也是 软件叫Process Explorer 不大 1M多 自己 ...
- [BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草
[BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草 试题描述 约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草. 他知道N(1≤N≤100)个干草 ...
- notepad正则表达式
文件名称匹配 文件名称: boost_chrono-vc100-mt-1_49.dll 对应的notepad正则表达式: \w*_\w*-\w*-\w*-\w*-\w*.dll 移除空行 查找目标: ...
- 使用Cydia Substrate 从Native Hook Android Native世界
同系列文章: 使用Cydia Substrate 从Native Hook Android Java世界 使用Cydia Substrate Hook Android Java世界 一.建立工程 手机 ...
- Vmware怎样使用nat和桥接方式解决虚拟机联网问题
对于很多的linux初学者来说,最开始学习linux时通常是在虚拟机上进行的,然而对于新手来说虚拟机联网会对他们来说是比较困难的.这里我根据自己的经验写了一篇文档分享给大家.下面对几种连接方式进行简单 ...
- HDOJ 1864 最大报销额(01背包)
http://acm.hdu.edu.cn/showproblem.php?pid=1864 最大报销额 Time Limit: 1000/1000 MS (Java/Others) Memor ...
- CSS用类选择器在本页写样式
<title>静夜思</title><style type="text/css">p{color:#ff0000; font-size:24px ...
- kettle使用log4j管理输出日志
在使用kettle进行数据分析和清洗时日志非常多而且杂乱,使用原有的日志有时找不到异常的位置,有时日志不够详细,说简单一点就是日志不是我们想要的.因而对kettle日志进行相应的管理就想得尤为重要了. ...
- Ubuntu 13.04安装搜狗输入法
Ubuntu 13.04安装搜狗输入法 [日期:2013-07-08] 来源:Linux公社 作者:LinuxIDC.com [字体:大 中 小] 目标:在Ubuntu 13.04以及基于U ...
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
转载自://http://www.cnblogs.com/anee/p/3324140.html 用mybatis查询时,传入一个字符串传参数,且进行判断时,会报 There is no getter ...