上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 30 下一页
摘要: 水题……代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 100111 using namespace std;12 struct xx13 {14 int id;15 char name[20];16 int value;17 bool use;18 }an,p[1001];19 bool cmp(const xx &a,cons... 阅读全文
posted @ 2013-08-12 10:40 _随心所欲_ 阅读(224) 评论(0) 推荐(0)
摘要: 构造SG函数:sg[i]表示2*i的sg值!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 500011 using namespace std;12 int an[2][MAX],sg[MAX];13 bool vis[MAX];14 int getsg(int x)15 {16 int i;17 if(sg[x]>=0) return sg... 阅读全文
posted @ 2013-08-12 09:45 _随心所欲_ 阅读(288) 评论(0) 推荐(0)
摘要: 简单博弈问题(巴什博弈-Bash Game)巴什博弈:只有一堆n个物品,两个人轮流从这对物品中取物,规定每次至少取一个,最多取m个,最后取光着得胜。很容易想到当n%(m+1)!=0时,先取者必胜,第一次先拿走n%(m+1)个,以后每个回合都保持两人拿走的物品总和为m+1即可。这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报10个,谁能报到100者胜。此题可以把每堆石头的取法看作是一个BashGame,这样只需将每组石头按照BashGame的取法判断,然后将n堆石头做异或,如果异或的结果不为0,则老师获胜,否则Agrael取胜。代码如下: 1 #include 2 #inc 阅读全文
posted @ 2013-08-11 16:03 _随心所欲_ 阅读(276) 评论(0) 推荐(0)
摘要: 那么对于这题对于每一堆,放石子放满就想当于满的时候取s-c个,反向只是让我理解题意更深。首先我们知道(S,S)这个局面是必败局面。对于每一堆能加的数量有限,而当c的值(大于或者等于)D=sqrt(s) 或者 D=sqri(s)+1的时候就可以一次完成,就是说可以从当前局面到达(S,S)的局面,所以当前局面是必胜局面。而这种情况下,你能造成的局面有集合A={0,1,2,...,s-c-1};因为你可以去s-c,s-c-1,s-c-2,.....,1;那么对应mex(x)函数(即A中未出现的最小的一个数字),那么自然该局面的SG值就是s-c了;另外当c的值小于D的时候,是不可能一下子加满的,因为c 阅读全文
posted @ 2013-08-11 15:50 _随心所欲_ 阅读(270) 评论(0) 推荐(0)
摘要: 水题,转化Nim代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 int m,t,ans;13 int main(){14 while(scanf("%d",&m)&&m){15 ans=0;16 while(m--){17 scanf("... 阅读全文
posted @ 2013-08-11 15:15 _随心所欲_ 阅读(153) 评论(0) 推荐(0)
摘要: 很简单的博弈论问题,可以转化为Nim代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 int n,m,t,j,ans;13 int main(){14 while(scanf("%d%d",&n,&m)!=EOF){15 ans=0;16 for(int i=0;.. 阅读全文
posted @ 2013-08-11 15:09 _随心所欲_ 阅读(338) 评论(0) 推荐(1)
摘要: 找sg值,可以选择暴力,也可以利用sg值的特点简化。暴力就跟取石子一样,没什么差别,DFS搞定。把矩阵看成一个字符串,字符串就是一个状态。其实我们也可以不暴力求sg值,因为只要当前状态能到达一个sg值为0的点,当前状态就是必胜点。若当前点到达的所有状态都是必胜的,那么当前点就是必败点。所以当我们到达必胜点时,就必须转换当前状态继续递归找sg值。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0) 阅读全文
posted @ 2013-08-11 14:55 _随心所欲_ 阅读(262) 评论(0) 推荐(0)
摘要: 题意:原来袋子里有w只白鼠和b只黑鼠龙和王妃轮流从袋子里抓老鼠。谁先抓到白色老师谁就赢。王妃每次抓一只老鼠,龙每次抓完一只老鼠之后会有一只老鼠跑出来。每次抓老鼠和跑出来的老鼠都是随机的。如果两个人都没有抓到白色老鼠则龙赢。王妃先抓。问王妃赢的概率。解析:设dp[i][j]表示现在轮到王妃抓时有i只白鼠,j只黑鼠,王妃赢的概率明显 dp[0][j]=0,0 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define 阅读全文
posted @ 2013-08-10 19:37 _随心所欲_ 阅读(228) 评论(0) 推荐(0)
摘要: java水过……代码如下: 1 import java.math.*; 2 import java.util.*; 3 public class Main { 4 public static void main(String arg[]){ 5 BigInteger n,ans,sum; 6 Scanner cin = new Scanner(System.in); 7 int k,t=cin.nextInt(); 8 while(t-->0){ 9 n=cin.nextBigInteger... 阅读全文
posted @ 2013-08-10 18:47 _随心所欲_ 阅读(392) 评论(0) 推荐(0)
摘要: 概率DP,从前往后递推就可以了!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 double dp[2][202],ans;10 int main(){11 int n,m,t,i,j,k,l,r,w;12 while(cin>>n>>m>>l>>r){13 if(n==0&&m==0&&l==0&&r==0) break;14 m 阅读全文
posted @ 2013-08-10 18:44 _随心所欲_ 阅读(233) 评论(0) 推荐(0)
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 30 下一页