poj2975 Nim 胜利的方案数】的更多相关文章

Nim Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5545   Accepted: 2597 Description Nim is a 2-player game featuring several piles of stones. Players alternate turns, and on his/her turn, a player’s move consists of removing one or mor…
考虑到Bouton定理的证明过程,设n个数的Nim和(异或和)为X,其最高位的1在第k位,那么n个数中一定有个y的第k为也是个1. 将y的数量变为X xor y,那么n的数的Nim和为0,便转为先手必败局面. 所以先手有多少种取法,就看n个数里面有多少个y,满足二进制的第k为是个1. #include <cstdio> ; + ; int a[maxn]; int main() { int n; && n) { ; ; i < n; i++) { scanf("…
题目链接:https://projecteuler.net/problem=409 题目: 题解: 题目问你必胜态的数目,我们考虑用总的方案数减去必败态的方案数(NIM游戏没有平局这个操作) 必败态的方案数就是让我们构造一个长度为n的数列,要求没有重复的数,每一数的值在[1,$2^n-1$]之间,且所有数异或和为0(这个就不需要证明了吧,不过我以前的一篇取石子的博客里好像有证明) 设$f[n]$表示长度为$n$的这样的数列的方案数 显然$f[1]=f[2]=0$ 考虑对于$f[i]$怎么转移,设…
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循“低价购买:再低价购买”的原则.写一个程序计算最大购买次数. 这里是某支股票的价格清单: 日期 1 2…
B. Appleman and Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Appleman has a tree with n vertices. Some of the vertices (at least one) are colored black and other vertices are color…
题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列. 试编程计算,一共有多少种不同的摆花方案. 输入输出格式 输入格式: 第一行包含两个正整数n和m,中间用一个空格隔开. 第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1.a2.……an. 输出格式: 输出只有一行,一个整数…
题意:用13.23……k3这些数加起来组成n,输出总方案数 d(i, j)表示前i个数构成j的方案数则有 d(i, j) = d(i-1, j) + d(i, j - i3) 可以像01背包那样用滚动数组来实现 //#define LOCAL #include <iostream> #include <cstdio> #include <cstring> using namespace std; ; ]; int main(void) { #ifdef LOCAL fr…
[题目描述] 给出一个正整数序列 a,长度为 n,cyb 不喜欢完美,他要删掉一些数(也可以不删,即删掉0个),但是他不会乱删,他希望删去以后,能将 a 分成 2 个集合,使得两个非空集合的数的和相同,现在他希望你能帮他算出删数的方案数. [输入文件] 第一行 n 个正整数 以下有 n行,每行1个 正整数表示整数序列a [输出文件] 一个整数表示答案 [输入样例] 4 1 2 3 4 [输出样例] 3 [数据范围] 30%:n<=5 100%:n<=20 100%:a 中每个元素<=10…
传送门:>Here< 题意:给出一张有向图,问从点A到点B恰好经过k个点(包括终点)的路径方案数 解题思路 一道矩阵乘法的好题!妙哉~ 话说把矩阵乘法放在图上好神奇,那么跟矩阵唯一有关的就是邻接矩阵…… 考虑邻接矩阵在这道题里的含义也就是从A到B经过1个点的方案数——能到达或不能到达.而当邻接矩阵自乘时,假设自乘一次得到矩阵B,则$b[i][j] = \sum\limits_{}{}g[i][k]*g[k][j]$.因此k就作为了枚举的中介点,由于最后得到的项是累积的,所以自乘一次以后就得到了…
P2347 砝码称重 DP做法 : 转化为 01背包. 进行方案数 更新.最后统计种类. #include<bits/stdc++.h> using namespace std; #define maxn 1234 int n,k,dp[maxn],len,sum,ans; int a[11]= {0,1,2,3,5,10,20}; vector<int>p; int main() { for(int i=1; i<=6; i++) { scanf("%d"…