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;
}
//当时想了很久,错误在于正向推进使得最后情况过多,实际上正难则反,也可以深度搜索模拟类似的情况,即从第一步开始去寻找一定会赢或者输的情况
2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)的更多相关文章
- 36th成都区域赛网络赛 hdoj4039 The Social Network(建图+字符串处理)
这题是某年成都区域赛网络赛的一题. 这题思路非常easy,可是从时间上考虑,不妨不要用矩阵存储,我用的链式前向星. 採用线上查询.利用map对字符串编号,由于非常方便.要推荐的朋友,事实上就是朋友的朋 ...
- ACM总结——2017区域赛网络赛总结
从省赛回来至今4周,每周周末都在打网络赛,每次都是划水,总结下自己弱弱的ACM吧!划水水~~ 首先是新疆赛区,基本上都是图论相关的东西,全靠队友,自己翻水水,实力躺了5道. 然后是沈阳赛区,终于有点贡 ...
- 2018ICPC徐州区域赛网络赛G(VECTOR+SET,模拟)
#include<bits/stdc++.h>using namespace std;int x,y;vector<int>v1,v2;long long solve(vect ...
- 2019 西电ACM校赛网络赛 题解
今年题目难度有较大提升,总体与往年类似,数学题居多.以下为我通过的部分题解. 赛题链接:http://acm.xidian.edu.cn/contest.php?cid=1053 A - 上帝视角 我 ...
- Fire Air(华科校赛 网络赛)
题目 原题链接:https://www.nowcoder.com/acm/contest/106/L 在100000 * 10000的空地上,有n个时间点,每个时间点会在(xi,yi)上种一棵树. 定 ...
- C#数组的排序(正序逆序)
C#数组的排序(正序逆序) 这种排序 超级简单的 ! using System; using System.Collections.Generic; using System.Linq; using ...
- 2018 ICPC 徐州网络赛
2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...
- 2018ICPC南京网络赛
2018ICPC南京网络赛 A. An Olympian Math Problem 题目描述:求\(\sum_{i=1}^{n} i\times i! \%n\) solution \[(n-1) \ ...
- Ryuji doesn't want to study 2018徐州icpc网络赛 树状数组
Ryuji is not a good student, and he doesn't want to study. But there are n books he should learn, ea ...
随机推荐
- css sprite技巧详解
1. [代码][CSS]代码 CSSSprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片 ...
- hdu 1003 Max Sum(基础dp)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- Javascript-- jQuery事件篇(3)
on()的多事件绑定 之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一个处理函数,所有这类事件都是属于快捷处理.翻开源码其实可以看到,所有的快捷事件在底层的处理都是通过一个&quo ...
- java--xml文件读取(SAX)
SAX解析原理: 使用Handler去逐个分析遇到的每一个节点 SAX方式解析步奏: 创建xml解析需要的handler(parser.parse(file,handler)) package com ...
- 每天一个linux命令(10):touch命令
版权声明更新:2017-05-14博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2. ...
- 发布django 程序
1.配置需求环境 pip freeze > requirements.txt 在开发环境将工程依赖的包导出. pip install virtualenv pip install virtual ...
- bzoj 2648 SJY摆棋子——KDtree
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2648 第一道KDtree! 学习资料:https://blog.csdn.net/zhl30 ...
- Image Sub-pixel interpolation by Verilog
bilinear interpolation -------------------------------------------------------- input a0 a1 b0 b1 ...
- 问题15:如何判断字符串a是否以字符串b开头或结尾
方法一:使用正则表达式的^和$实现 '^000':表示,只匹配字符串的开头,若开头是 '000' ,则返回 ['000'] : '000$':表示,只匹配字符串的结尾,若结尾是 '000' ,则返回 ...
- 外置式与增量式PID模板程序(51单片机c语言)
外置式PID模板 #define MuBiaoCS 0 //目标常数 #define CHang_aCS 0 //比例常数 #define CHang_bCS 0 //积分常数 #define CHa ...