上一页 1 2 3 4 5 6 7 8 9 10 ··· 30 下一页
摘要: 思路:dp[i][j]:表示第i位数,j表示是否有0.代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll long long 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 int bit[22];13 ll dp[22][2],p[22];14 ll dfs(int pos,int m,bool f)15 {16 if(pos==-1) return !m;... 阅读全文
posted @ 2013-09-13 20:02 _随心所欲_ 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 思路:dp[i][j]:表示第i位在B进制下数字和。用二分找第k个数!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 using namespace std;10 int dp[45][310],b,m,bit[45];11 int dfs(int pos,int mm,bool f)12 {13 if(pos==-1) return mm==m;14 if(!f&&dp[pos][mm]!=-1) return d 阅读全文
posted @ 2013-09-13 13:57 _随心所欲_ 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 思路:首先用Tarjan算法找出树中的环,环为奇数变为边,为偶数变为点。之后用博弈论的知识:某点的SG值等于子节点+1后的异或和。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int ans; 9 vectorp[105];10 bool vis[105],inss[105];11 int low[105],dfa[105],num[105][105],ss[105],top;12 void Tarjan(int u,int pre,int d)1 阅读全文
posted @ 2013-09-12 21:58 _随心所欲_ 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 思路:无向图,走过的点不能在走。dfs搞定……再就是后继中有必败点的为必胜点!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int ans; 9 vectorp[1001];10 bool vis[1001];11 int dfs(int n)12 {13 for(int i=0;i<p[n].size();i++){14 if(!vis[p[n][i]]){15 vis[p[n][i]]=1;16 ... 阅读全文
posted @ 2013-09-12 20:52 _随心所欲_ 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 思路:每次画X之后都会形成2个子游戏,即i-3和n-i-2.代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int sg[2002]; 9 int getsg(int n)10 {11 if(n=0) return sg[n];13 bool vis[2002]={0};14 for(int i=1;i<=n;i++){15 vis[getsg(n-i-2)^getsg(i-3)]=1;16 }17 ... 阅读全文
posted @ 2013-09-12 20:11 _随心所欲_ 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 思路:dp[i][j]:第i个人时还剩j个石头。当j为0时,有必胜为1;后继中有必败态的为必胜态!!记忆化搜索下就可以了!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define inf 1e9 8 using namespace std; 9 int dp[22][10000],n,a[22];10 int dfs(int d,int s)11 {12 if(dp[d][s]!=-1) return dp[d][s];13 if(s==0) return dp[d][s]... 阅读全文
posted @ 2013-09-12 18:22 _随心所欲_ 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 思路:这题和博弈论的关系不大,主要是DP。记忆化搜索即可!!!取的数一定是大于0的,所以将负数去掉!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define inf 1e9 8 using namespace std; 9 int dp[10005],n,a[10005],l,r;10 int dfs(int m)11 {12 if(dp[m]!=inf) return dp[m];13 int ans=inf;14 for(int i=m+1;i=l&&a[i]... 阅读全文
posted @ 2013-09-12 17:01 _随心所欲_ 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 思路:SG函数应用!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int sg[1001],n; 8 vectorp[1001]; 9 int dfs(int now)10 {11 if(sg[now]!=-1) return sg[now];12 bool vis[1001]={0};13 for(int i=0;i<p[now].size();i++)14 vis[dfs(p[now][i])]=1;15 int i... 阅读全文
posted @ 2013-09-12 14:01 _随心所欲_ 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 思路:求SG函数!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int sg[202][202]; 7 int getsg(int m,int n) 8 { 9 if(sg[m][n]!=-1) return sg[m][n];10 bool vis[200];11 memset(vis,0,sizeof(vis));12 for(int i=2;i>m>>n) puts(getsg(m,n)?"WIN":"LOSE");23 re 阅读全文
posted @ 2013-09-12 13:12 _随心所欲_ 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 令ans=a1^a2^...^an,如果需要构造出异或值为0的数,而且由于只能操作一堆石子,所以对于某堆石子ai,现在对于ans^ai,就是除了ai以外其他的石子的异或值,如果ans^ai#include#includeusing namespace std;int a[1001];int main(){ int n,t,ans,m,k; while(cin>>n&&n){ ans=m=0; for(int i=0;i>a[i]; m^=a[i]; } if(m){ for(int ... 阅读全文
posted @ 2013-09-11 22:11 _随心所欲_ 阅读(134) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 30 下一页