题解 BZOJ 1715 [Usaco2006 Dec]Wormholes 虫洞

题解: 题意是问你一个混合图是否存在负环。 spfa即可,开始时将所有点入队,求最短路,当最短路长度超过n时,说明有负环。 code: #include<cstdio> #include<cstring> #include<algorithm> #include<queue> //by zrt //problem: using namespace std; int n,m,w; int H[505],X[6000],P[6000],E[6000]; int d[505],l[505]; int tot; inline void add(int x,int y,int z){ P[++tot]=y;X[tot]=H[x];H[x]=tot;E[tot]=z; } int tt; queue<int> q; int main(){ #ifdef LOCAL freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); #endif scanf("%d",&tt); while(tt--){ memset(H,0,sizeof H); tot=0; scanf("%d%d%d",&n,&m,&w); for(int i=1,x,y,z;i<=m;i++){ scanf("%d%d%d",&x,&y,&z); add(x,y,z); add(y,x,z); } for(int i=1,x,y,z;i<=w;i++){ scanf("%d%d%d",&x,&y,&z); add(x,y,-z); } memset(d,0,sizeof d); memset(l,0,sizeof l); while(!q.empty()) q.pop(); for(int i=1;i<=n;i++) q.push(i); bool have=0; while(!q.empty()){ int x=q.front();q.pop(); // printf("%d %d %d\n",x,d[x],l[x]); for(int i=H[x];i;i=X[i]){ if(d[P[i]]>d[x]+E[i]){ d[P[i]]=d[x]+E[i]; q.push(P[i]); l[P[i]]=l[x]+1; if(l[P[i]]>n) { have=1;goto ed; } } } } ed:; if(have) puts("YES"); else puts("NO"); } return 0; }

九月 10, 2014 · 1 分钟 · 156 字 · Ruotian

题解 COGS 577 蝗灾 [CDQ分治入门题]

题目链接 昨天mhr神犇,讲分治时的CDQ分治的入门题。 题意: 你有一个wxw正方形的田地。 初始时没有蝗虫。 给你两个操作: 1 x y z: (x,y)这个位置多了z只蝗虫。 ...

九月 8, 2014 · 2 分钟 · 509 字 · Ruotian

题解 BZOJ 2878 [Noi2012]迷失游乐园

题目链接 题意: 给你一张n个点n-1或n条边的带权无向图。从每个点出发一直走下去,不能重复经过某个点。问走过的路径长度的数学期望是多少? N<=100000。图中至多只有一个环,并且环长不超过20。 ...

九月 8, 2014 · 2 分钟 · 962 字 · Ruotian

素数筛法

埃氏筛法:从2开始,找到第一个没有被筛的数,把它标记为素数,然后把它的2倍、3倍……筛掉。 复杂度O(nlogn)。 改进的埃氏筛法:从2开始,找到第一个没有被筛的数x,把它标记为素数,然后把它的x倍、x+1倍……筛掉。 复杂度O(nloglogn)。 ...

八月 15, 2014 · 2 分钟 · 695 字 · Ruotian

题解 POJ 2425 A Chess Game

[题目链接][1] 题意:给定一个有向无环图(DAG),上面放有一些旗子,旗子可以重合,两个人轮流操作,每次可以把一个旗子从一个位置移动到相邻的位置,无法移动时输,询问先手是否必胜。 ...

八月 15, 2014 · 1 分钟 · 217 字 · Ruotian

题解 POJ 1740 A New Stone Game

题目链接 题意:有n堆石子,两人轮流操作,每次每个人可以从一堆中拿走若干个扔掉(必须),并且可以从中拿走一些分到别的有石子的堆里(可选),当一个人不能拿时这个人输。给定状态,问是否先手必胜。 ...

八月 15, 2014 · 1 分钟 · 466 字 · Ruotian

组合游戏学习

 阅读了《由感性认识到理性认识——透析一类搏弈游戏的解答过程》、《解析一类组合游戏》、《组合游戏略述——浅谈SG游戏的若干拓展及变形》这三篇论文,对组合游戏以及SG函数有了更深的理解。这篇文章摘下了这三篇论文的部分重要内容,以及部分我对组合游戏的理解。 ...

八月 14, 2014 · 4 分钟 · 1745 字 · Ruotian

题解 POJ 2975 Nim 统计必胜走法个数

题目链接 题意介绍了一遍Nim取石子游戏,可以看上一篇文章详细介绍。 问当前状态的必胜走法个数,也就是走到必败状态的方法数。 我们设sg为所有个数的Xor值。 首先如果sg==0,它不可能有必胜走法,输出0. ...

八月 14, 2014 · 1 分钟 · 208 字 · Ruotian

题解 POJ 2505 A multiplication game 组合游戏

题目链接 题意: 有一个数p=1,甲乙两人轮流操作,每次可以把p乘2-9中的一个数,给定一个n,当一个人操作后p>=n,那么这个人赢,问先手是否必胜。 ...

八月 14, 2014 · 1 分钟 · 342 字 · Ruotian

题解 POJ 2484 A Funny Game

题目链接 题意:有n个硬币排成一圈,两个人轮流操作,每次可以取走一个或者相邻的连个硬币(只算最开始相邻的,取之后才相邻的不算),问先手必胜还是必败。 这个题可以证明若n>=3,则先手必败。 对称博弈 若n>=3,先手第一次必然把这个环拆成一个链,然后无论这条链长度的奇偶,后手总是可以把这条链分成两条相等的链,于是先手在一条链上做什么,后手就可以做什么。知道先手无法操作,后手胜。 ...

八月 14, 2014 · 1 分钟 · 243 字 · Ruotian