Codeforces Round #406 (Div. 2)滚粗记
A 一看到题,不是一道解不定方程的裸题吗,调了好久exgcd。 其实一个for就好了啊
B 一直WA ON TEST 7真是烦,一想会不会是编号太大了,又写了一个map版本,无用。
调了好久好久才发现有几次询问没有读完mmp
C 调了一晚上,又看了数篇题解,终于看懂了QAQ
这是一道博弈论,借助图论/DP帮助完成。
博弈中有3种状态:必胜,必败,不一定
而我们需要将这些状态一直转移以求得结果。
如果A无论怎么移动,使B下一步必胜,则A的现在状态为必败。
如果A可以移动任意一步,使B下一步必败,则A现在的状态为必胜。
没被搜到就不一定。
大致思路就是这样,考虑具体实现。
1.如果从每个状态正着搜,显然不行。只能由终止状态倒着推
2.每个状态记录一下入度,且每次若转移需要判重! 经计算,queue空间为4*n
3.思路要清晰,要清楚我们输出的是什么东西(我昨晚一直思路混乱,多求了很多没用的东西)
4.注意细节,我好粗心好粗心啊
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define rep(i,a,b) for (int i=a; i<=b; i++)
typedef long long ll;
using namespace std;
#define N 7005
int n,k[],s[][N],dp[][N]; //1 win 0 loop -1 lose
int Degree[][N]; //此时先手者
struct Node {
int p,turn;
} q[N<<],u,v; inline void read(int &x) {
x=; char c=getchar(); int f=;
while (c<''||c>'') {if (c=='-') f=-; c=getchar();}
while (c>=''&&c<='') {x=*x+c-''; c=getchar();} x*=f;
}
inline void bfs() {
int f=,r=;
u.p=; u.turn=; q[]=u; dp[][]=-;
u.turn=; q[]=u; dp[][]=-;
rep(i,,n) rep(j,,) Degree[j][i]=k[j]; //此时先手者
while (f!=r) {
u=q[f++]; int now=u.turn;
rep(i,,k[now^]) { //len!!!!!!!!!!!!!!!!!!!!!!!!!!!!
int dot=(u.p-s[now^][i]+n-)%n+; //% !!!!!!!!!!
if (dot==) continue; //can't be realized!!!!!!!!
if (dp[now][u.p]==-) {
if (dp[now^][dot]==) continue;
dp[now^][dot]=;
v.turn=u.turn^; v.p=dot;
q[r++]=v;
}
else if (dp[now][u.p]==) {
// if (dp[now^1][dot]==1) continue; if win,can't lose!!
if ((--Degree[now^][dot])==) {
dp[now^][dot]=-;
v.turn=u.turn^; v.p=dot;
q[r++]=v;
}
}
}
}
}
int main() {
// freopen("1.in","r",stdin);
read(n);
rep(i,,) {read(k[i]); rep(j,,k[i]) read(s[i][j]);}
bfs();
rep(i,,) {
rep(j,,n)
if (dp[i][j]==) printf("Win ");
else if (dp[i][j]==-) printf("Lose ");
else printf("Loop ");
puts("");
}
return ;
}
D 线段树/虚拟点优化建图
直接建图不可能,这种区间题肯定是裸的线段树
建两棵线段树,每个节点代表一个区间,对于2、3操作,最多连log条边。
第1棵:上到下连边 ;第2棵:下到上连边
操作2:点到tree1的node连边
操作3:tree2的node到点连边
这个转化挺巧妙的。。
自己果然还是菜
Codeforces Round #406 (Div. 2)滚粗记的更多相关文章
- Codeforces Round#402(Div.1)掉分记+题解
哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...
- Codeforces #Round 406(Div.2)
来自FallDream的博客,未经允许,请勿转载,谢谢. ------------------------------------------------------- 大家好,我是一个假人.在学习O ...
- Educational Codeforces Round 58 Div. 2 自闭记
明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #inclu ...
- Codeforces Round #406 (Div. 1) B. Legacy 线段树建图跑最短路
B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...
- Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索
A. Berzerk 题目连接: http://codeforces.com/contest/786/problem/A Description Rick and Morty are playing ...
- 维护前面的position+主席树 Codeforces Round #406 (Div. 2) E
http://codeforces.com/contest/787/problem/E 题目大意:给你n块,每个块都有一个颜色,定义一个k,表示在区间[l,r]中最多有k中不同的颜色.另k=1,2,3 ...
- 区间->点,点->区间,线段树优化建图+dijstra Codeforces Round #406 (Div. 2) D
http://codeforces.com/contest/787/problem/D 题目大意:有n个点,三种有向边,这三种有向边一共加在一起有m个,然后起点是s,问,从s到所有点的最短路是多少? ...
- 有向图博弈+出度的结合 Codeforces Round #406 (Div. 2) C
http://codeforces.com/contest/787/problem/C 题目大意:有一个长度为n的环,第1个位置是黑洞,其他都是星球.已知在星球上(不含第一个黑洞)有一位神.有两个人, ...
- 【转】Codeforces Round #406 (Div. 1) B. Legacy 线段树建图&&最短路
B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...
随机推荐
- Maven学习(十五)-----Maven常用命令
一.Maven常用命令 1.1.Maven 参数 -D 传入属性参数 -P 使用pom中指定的配置 -e 显示maven运行出错的信息 -o 离线执行命令,即不去远程仓库更新包 -X 显示ma ...
- javaweb(三十八)——mysql事务和锁InnoDB(扩展)
MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备就My ...
- vue Map 渲染DOM
遍历对象(map),以键值对k:v的形式渲染DOM (1)DOM (2)数据模板
- jvm之对象创建过程
常量池中定位类的符号引用 ↓ 检查符号引用所代表的类是否已被加载,解析和初始化过 → ↓ ...
- 423. Valid Parentheses【LintCode java】
Description Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine ...
- SICP读书笔记 1.3
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- 宿主机ssh免密登录docker容器
一.检查系统内核 二.安装docker 1.yum install docker -y 2.docker version #查看docker版本 3.syste ...
- Literature Books
Lean In (Sheryl Sandberg) Option B (Sheryl Sandberg) Ready Player One
- KETTLE设置变量
一.kettle变量类型 kettle变量分为: 1.环境变量 通过 set variables组件设置变量,范围可以是:JVM变量.作业变量.父作业变量.根作业变量.使用时通过${var}或 %%v ...
- Yii2 配置request组件解析 json数据
在基础版本的config目录下 web.php 或者高级版config目录下的main.php中配置 'components' =>[ 'request' => [ 'parsers' = ...