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 ...
随机推荐
- [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
1.U3D经常莫名奇妙崩溃. 一般是由于空异常造成的,多多检查自己的引用是否空指针. 2.编码切换警告提示. 警告提示:Some are Mac OS X (UNIX) and some ...
- Unity3D使用小技巧
原地址:http://unity3d.9tech.cn/news/2014/0411/40178.html 1.Crtl+f摄像机自动适配场景. 2.可以用一个立方体作为底盘. 3.人物角色可以直接引 ...
- JSONKit 简单使用
http://blog.csdn.net/l_ch_g/article/details/8477187 例子上写的比较浅显易懂, 不过我还是稍微总结一下: 导入JSONKit.h之后 字符串转NSDi ...
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
1.安全性---登录名---新建登录名 2.常规----搜索 3.添加SERVICE用户-- 4.服务器角色---勾上sysadmin: IIS中: 应用程序池---对应的程序池上右键---高级设置 ...
- 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题
1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...
- PHP - 获取和设置include_path .
PHP - 获取和设置include_path 分类: PHP 2011-02-16 13:19 2818人阅读 评论(1) ...
- Maximum Product Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- Java与数据库类型对照表
数据库类型 Java类型 INTEGER int or java.lang.Integer BIGINT long or java.lang.Long SMALLINT short o ...
- 分页管理的JSTL实现
userMgr.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...
- [Android Memory] App调试内存泄露之Context篇(下)
转载地址:http://www.cnblogs.com/qianxudetianxia/p/3655475.html 5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用A ...