- 博客(14)
- 资源 (11)
- 收藏
- 关注
原创 sfys
1.2.1 不一定。 1.2.2位置*方案,等我做的时候再思考吧。 1.2.3答案:0 1 2 2 4 4 4 4 2 0 abcceeeeca; 1.2.4枚举,注意边界条件。 1.2.5枚举列然后贪心 1.2.6注意只需枚举相邻两个就行。 1.2.7这个。。。java写的在poj和ural上超时,ural卡在第29个,zoj上是能ac的,2700ms; ural连接:http://acm.timus.ru/problem.aspx?space=1&num=1165 zoj连接:http://acm.z
2010-10-30 09:12:00 7422
原创 hdu 3221
汗死的题。 做这题时,以为a^x%P=a^(x%PI(P))%P,结果一直wa。以为是long long的问题。其实一开始的公式如果a和P互质,就是对的。但是如果a和P不互质的话,这样有一种情况是错的。比如a=2,P=6,pi(6)=2(1,5); 2^4=16; 2^0=1; 16%6=4;2^(2+0)=4; 正确的公式:A^x%C=A^(x%phi(C)+phi(C))%C (x>=phi(C)); #include #define LL long long using names
2010-10-19 20:07:00 672
原创 精确覆盖
zoj3209 #include #include #include #include using namespace std; typedef long long LL; const int INF=6000; const int max_size = 1000*501; int ygx_ans; const int maxint = 0x3f3f3f3f; int L[max_size], R[max_size], U[max_size],
2010-10-18 11:46:00 459
原创 PKU 3537
这题的中间状态比较好想。但是边界有点绕人。原因是子游戏出现了边界,未定义的情况。 import java.util.*; public class Main { /** * @param args */ static int[] dp=new int[2001]; public static int DP(int a){ if(a
2010-10-17 11:49:00 447
原创 pku 1704
import java.util.*; public class Main { /** * @param args */ static int[] grid=new int [10000]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin=new Scanner(S
2010-10-17 01:56:00 627
原创 poj 3710
组合游戏。 import java.util.*; public class Main { /** * @param args */ static int N; static boolean[] cir=new boolean[100]; static boolean[] vis=new boolean[100]; static int[][] tree=new int[100][100];
2010-10-17 01:01:00 538
原创 every_sg
step(v) if(v==end) =0; else if(sg(v)>0) =max(step(u))+1&&sg(u)==0 else =min(step(u))+1 这个模型暂且没有例题,找到之后补上。
2010-10-17 00:58:00 475
原创 sg变形——一堆变多堆
原题连接 http://www.acm.cs.ecnu.edu.cn/problem.php?problemid=1328 Stripes Time Limit:1000MS Memory Limit:30000KB Total Submit:23 Accepted:11 Description Stripes is a two player game. Necessary requisites are a board and rectangular stripes in three
2010-10-14 21:02:00 615
原创 Nim游戏变形之一
取走最后一颗石子的输。 刚一开始,我想可能要把sg的值变一下。原先sg(0)=0; 我想如果保持0为输态,那么sg(1)就应该是0,而sg(0)!=0; 但是sg函数怎么能随便改呢,sg不仅仅是个符号,他后面的性质和他的定义有密切的联系。 回顾sg: sg游戏的特点是信息对称。所以每个状态的胜负确定。容易理解,双方都想赢,必输态肯定是子状态都是必胜态才行。不然,就可以找到一个必输态,从而是自己必胜。所以,必胜态就是能达到必输态的。必输态只能达到必胜态。从结果往前搜索自然可以把博弈树
2010-10-14 19:12:00 952
原创 hdu 1564 证明
定义记号(1,1)表示x坐标为奇,有坐标为奇,(0,1)为x坐标为偶,y坐标为奇 ,(0,0)(1,0)类推。 先说明一下结论: n是奇数,后手胜,n是偶数,先手胜。 以n为奇数为例,说明一下制胜策略。 那么5*5棋盘为例,可以表示为: (1,1)(1,0)(1,1)(1,0)(1,1) 1,2,3,4,5 (0,1) (0,0) (0,1) (0,0) (0,1) 6,7,8,9,10 (1,1)(1,0)(1,1)(1,0)(1,1) (0,1) (0,0) (
2010-10-08 22:47:00 1661
原创 sg函数
给出百度百科解释:(应该是从论文里截的一段,可以看出有前后文) 给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移 动者判负。事实上,这个游戏可以认为是所有Impartial Combinatorial Games的抽象模型。也就是说,任何一个ICG都可以通过把每个局面看成一个顶点,对每个局面和它的子局面连一条有向边来抽象成这个“有向图游戏”。下 面我们就在有向无环图的顶点上定义Sprague-Garundy函数。首先定义mex(minimal excludan
2010-10-08 12:09:00 587
原创 hdu 1517
这个sg函数有个特点,就是sg可以按照区间取值。连续的一段的sg值是一样的。所以只需判断区间个数的奇偶就行了。(n+8)/9是必胜区间最后一个。最后一个的/2取上整,是必败的最后一个。看最后区间的最后一个什么时候等于1就是了。判断中间走了多少布。判断奇偶。代码不放了。
2010-10-08 10:55:00 1396 1
原创 hdu 1404 sg
题目唯一的难点在于dp中某些状态的转移不好用。原因是有些状态不能用int表示,比如002这种的数,但容易知道第一个是0的都是必胜态,转移时,比如201,能转移乘001,如果不考虑前导0,会到1,而1是必输态,这样201会是必胜态,但是001是必胜态,所以要判断前面的数字去掉之后,有没有前导0;(s-P[up][i]+P[j][i])>P[1][i-1](判断前导0的)sg函数其实不用int,用bool就行。dp即为sg函数值。#include <cstdio>#include <cstring>us
2010-10-08 09:40:00 1078
原创 hdu 2965
这道题其实有更简单的做法。四个判断就ok。由于我比较死板。什么都想套理论。3000ms的代码就诞生了。 考虑时,可以这样。先放一条边。如果这条边能用小长方形的两条边精确覆盖,那么考虑另一条边的覆盖。 wa了那么多次,只不过是个大括号的问题。。。 #include #include #include #include using namespace std; long long a,b,c,d,t; bool ok; long long ex_eulid(lon
2010-10-05 00:42:00 677
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人