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)滚粗记的更多相关文章

  1. Codeforces Round#402(Div.1)掉分记+题解

    哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...

  2. Codeforces #Round 406(Div.2)

    来自FallDream的博客,未经允许,请勿转载,谢谢. ------------------------------------------------------- 大家好,我是一个假人.在学习O ...

  3. Educational Codeforces Round 58 Div. 2 自闭记

    明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #inclu ...

  4. Codeforces Round #406 (Div. 1) B. Legacy 线段树建图跑最短路

    B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...

  5. Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索

    A. Berzerk 题目连接: http://codeforces.com/contest/786/problem/A Description Rick and Morty are playing ...

  6. 维护前面的position+主席树 Codeforces Round #406 (Div. 2) E

    http://codeforces.com/contest/787/problem/E 题目大意:给你n块,每个块都有一个颜色,定义一个k,表示在区间[l,r]中最多有k中不同的颜色.另k=1,2,3 ...

  7. 区间->点,点->区间,线段树优化建图+dijstra Codeforces Round #406 (Div. 2) D

    http://codeforces.com/contest/787/problem/D 题目大意:有n个点,三种有向边,这三种有向边一共加在一起有m个,然后起点是s,问,从s到所有点的最短路是多少? ...

  8. 有向图博弈+出度的结合 Codeforces Round #406 (Div. 2) C

    http://codeforces.com/contest/787/problem/C 题目大意:有一个长度为n的环,第1个位置是黑洞,其他都是星球.已知在星球上(不含第一个黑洞)有一位神.有两个人, ...

  9. 【转】Codeforces Round #406 (Div. 1) B. Legacy 线段树建图&&最短路

    B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...

随机推荐

  1. Django模型层:单表操作

    一 ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装

  2. 解决WCF传输的数据量过大问题

    今天写了个WCF接口,然后自测通过,和别人联调时报 远程服务器返回错误: (413) Request Entity Too Large        错误!记得以前写的时候也出现过这个错误,大致解决办 ...

  3. Maven学习(七)-----Maven添加远程仓库

    Maven添加远程仓库 默认情况下,Maven从Maven中央仓库下载所有依赖关系.但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到. 1. Java.net资 ...

  4. selenium webdriver API详解(三)

    本系列主要讲解webdriver常用的API使用方法(注意:使用前请确认环境是否安装成功,浏览器驱动是否与谷歌浏览器版本对应) 一:获取页面元素的文本内容:text 例:获取我的博客名字文本内容 代码 ...

  5. Focalprice李培亮:梦想让人在我店里排队

    [亿邦动力网讯]4月3日消息,外贸B2C平台Focalprice总裁李培亮日前亮相亿邦动力网联合河南省商务厅举办的“第九届中国中小企业电子商务大会暨2014中国(河南)跨境贸易电子商务峰会”,表达自己 ...

  6. rest_framework基础

    简介 为什么要使用REST framework? Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. - 在线可视的API,对于赢得你的开发者们十分有用  ...

  7. underscore.js源码解析(二)

    前几天我对underscore.js的整体结构做了分析,今天我将针对underscore封装的方法进行具体的分析,代码的一些解释都写在了注释里,那么废话不多说进入今天的正文. 没看过上一篇的可以猛戳这 ...

  8. Scrum立会报告+燃尽图(十月十八日总第九次):功能细化与数据库设计

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...

  9. 《C》数组

    数组 数组方法: var arr = [1, 2, 3]; arr.push(4)://arr='[1, 2, 3, 4]' 向末尾添加一个或者多个元素 arr.pop()://删除末位元素 var ...

  10. mysql+linux 忘记密码

    方法一: # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & ...