2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)
#include<bits/stdc++.h>
using namespace std;
int n,m,k,l;
int x[1007],y[1007],z[1007];
int dp[1007][207];
void init()//预处理n次处理后的情况
{
for(int i=0;i<=l+100;i++)
dp[n+1][i]=-1;
for(int i=l+101;i<k+100;i++)
dp[n+1][i]=0;
for(int i=k+100;i<=200;i++)
dp[n+1][i]=1;
}
int main()
{
scanf("%d%d%d%d",&n,&m,&k,&l);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&x[i],&y[i],&z[i]);
}
init();
int a,b,c;
for(int i=n;i>=1;i--)//已知n次处理后的情况,向前递推
{
for(int j=0;j<=200;j++)//枚举每一个分数
{
a=-1,b=-1,c=-1;
if(x[i])
{
if(j+x[i]>200)
a=200;
else
a=j+x[i];
}
if(y[i])
{
if(j-y[i]<0)
b=0;
else
b=j-y[i];
}
if(z[i])
{
c=200-j;
}
if(i&1)
{
if(((a>=0)&&(dp[i+1][a]==1))||((b>=0)&&(dp[i+1][b]==1))||((c>=0)&&(dp[i+1][c]==1)))//任何一种情况可以到达后一种胜利的情况都可以
{
dp[i][j]=1;
continue;
}
if(((a==-1)||(dp[i+1][a]==-1))&&((b==-1)||(dp[i+1][b]==-1))&&((c==-1)||(dp[i+1][c]==-1)))//别无其他选择只能走入失败的局面
{
dp[i][j]=-1;
continue;
}
dp[i][j]=0;//虽然赢不了但也输不了
}
else//另一个人的视角
{
if(((a>=0)&&(dp[i+1][a]==-1))||((b>=0)&&(dp[i+1][b]==-1))||((c>=0)&&(dp[i+1][c]==-1)))
{
dp[i][j]=-1;
continue;
}
if(((a==-1)||(dp[i+1][a]==1))&&((b==-1)||(dp[i+1][b]==1))&&((c==-1)||(dp[i+1][c]==1)))
{
dp[i][j]=1;
continue;
}
dp[i][j]=0;
}
}
}
//相当于已经计算好了以后的每一步,类比象棋
if(dp[1][m+100]==1)
printf("Good Ending");
else if(dp[1][m+100]==0)
printf("Normal Ending");
else
printf("Bad Ending");
return 0;
}
//当时想了很久,错误在于正向推进使得最后情况过多,实际上正难则反,也可以深度搜索模拟类似的情况,即从第一步开始去寻找一定会赢或者输的情况
最新文章
- VBS实现定时发送邮件
- linux TCP Wrappers
- 【笔记】Python 学习Tips
- IO流的练习1 —— 随机获取文本中的信息
- PAT乙级 1022. D进制的A+B (20)
- js中Number
- Cocos2d-x--开发参考资料
- 第二百五十天 how can I 坚持
- CAF(C++ actor framework)(序列化之结构体,任意嵌套STL)(一)
- linux的命令使用记录
- Linux下的crontab
- 范性for语义以及pair和ipair的区别
- SQL Server中NULL的一个测试
- [LeetCode] Binary Trees With Factors 带因子的二叉树
- python之路:列表及元组之定义
- hue报错StructuredException: timed out (code THRIFTSOCKET): None的处理
- [BJWC2011]最小三角形(分治+最近点对)
- 【Java】 剑指offer(48) 最长不含重复字符的子字符串
- linux 关闭笔记本自带键盘
- 关于oracle分组排序取值的问题
热门文章
- 分享知识-快乐自己:Shiro 退出登陆清空缓存实现
- 大数据_学习_01_Hadoop 2.x及hbase常用端口及查看方法
- Android DOM解析XML方法及优化
- NYOJ-小猴子下落
- linux命令学习(8):mv命令
- Maven(5)-优化和重构POM
- (转载)[机器学习] Coursera ML笔记 - 监督学习(Supervised Learning) - Representation
- BZOJ4010:[HNOI2015]菜肴制作
- tomcat如何修改发布目录
- eclipse如何集成tomcat插件