上一页 1 2 3 4 5 6 ··· 30 下一页
摘要: 思路:SG函数枚举先手的每一个位置是否有必胜。1)如果出现了XXX则必胜;2)如果出现了XX或X.X则必败;3)否则计算后手的sg值和。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #define M 201 6 using namespace std; 7 char str[M]; 8 int sg[M],len; 9 vectorp;10 int get_sg(int m) //计算SG值11 {12 if(m<0) return 0;13 if(sg[m]!=-1) return sg[m];14 bool... 阅读全文
posted @ 2013-10-12 10:22 _随心所欲_ 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 思路:状态DPdp[i]=2*dp[i-1]+dp[i-3]代码如下:求出循环节部分 1 #include 2 #define m 10007 3 int p[m]; 4 int main() 5 { 6 p[0]=p[1]=1;p[2]=2; 7 for(int i=3;i 2 #include 3 #define mod 10007 4 struct mat 5 { 6 int m[3][3]; 7 }e,d; 8 int an[3]={2,1,1}; 9 mat Mul(mat a,mat b)10 {11 mat ans;12 for(int i... 阅读全文
posted @ 2013-10-10 22:03 _随心所欲_ 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 思路:p[n][m][0]表示A为n,B为m,A为先手胜的概率; p[n][m][1]表示A为n,B为m,B为先手胜的概率。 d[i]表示圆盘上数字的大小。容易得到表达式为:代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define M 502 8 using namespace std; 9 double p[M][M][2];10 int d[]={5,20,1,18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5,20};11 int cal(in 阅读全文
posted @ 2013-10-10 20:11 _随心所欲_ 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 思路:看到这个题目就发现所需最短时间也就是房子和相遇点的最远距离具有凹凸性,很容易就想到了三分法枚举。找出所有房子的X坐标的最小最大值作为上下界。代码如下: 1 #include 2 #include 3 #include 4 #define M 50005 5 #include 6 #define inf 200005 7 #define eps 1e-8 8 using namespace std; 9 struct node10 {11 double x,y;12 }p[M];13 int n,cnt;14 double dis(node a,double b)15 {16 ... 阅读全文
posted @ 2013-10-08 19:39 _随心所欲_ 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 思路:数学题!容易推出结果f[n]=n*f[n-1]+(n-1)!.也即是第一类斯特灵数。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll long long 9 #define M 100000110 #define mod 100000000711 using namespace std;12 ll an[M];13 double p[M];14 void init()15 {16 an[0]=0;an[1]=1;17 p[0]=0;... 阅读全文
posted @ 2013-10-06 15:21 _随心所欲_ 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 思路:数学题!给定a,b,求s=log2(2a+2b);转化为s=b+log2(2a-b+1),(a>b).测试可以知道,当x>=32时,在精度范围内log2(2x+1)=x。否则将a-b转化为double类型直接计算。代码如下: 1 import java.math.*; 2 import java.math.BigDecimal; 3 import java.util.*; 4 public class Main { 5 public static void main(String arg[]){ 6 BigDecimal a,b,c,x,y,z,d,an,ans;... 阅读全文
posted @ 2013-10-06 15:14 _随心所欲_ 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 思路:这个分清楚情况就很好做了。注意一点当A的转置等于B的时候(对角线除外),记录A的下三角(或上三角)有cnt个的数与B不同,如果cnt>1则不需要额外的步数就可以了,否则当k==2时结果要加2,反之加1.代码如下: 1 #include 2 #include 3 #define M 105 4 using namespace std; 5 int a[M][M],b[M][M],n; 6 bool is() 7 { 8 for(int i=0;i1) return 0;22 return 1;23 }24 int main()25 {26 int t,ca=0,... 阅读全文
posted @ 2013-10-05 15:18 _随心所欲_ 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 思路:很容易发现规律,数列和Fib数列一样的。记开始的时候啊a的个数为Y,b的个数为X。建立矩阵。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define M 105 7 #define eps 1e-6 8 #define ll long long 9 #define mod 100000000710 using namespace std;11 struct mat12 {13 ll m[2][2];14 };15 mat Mul(mat a,mat b)16 {17 mat ans;18 ... 阅读全文
posted @ 2013-10-04 19:49 _随心所欲_ 阅读(576) 评论(0) 推荐(0) 编辑
摘要: 第一题给定一个大数,分解质因数,每个质因子的个数为e1,e2,e3,……em,则结果为((1+2*e1)*(1+2*e2)……(1+2*em)+1)/2.代码如下: 1 #include 2 #include 3 #include 4 #include 5 #define M 10000005 6 #define mod 1000000007 7 #define ll unsigned long long 8 using namespace std; 9 ll prime[M/5],cnt;10 bool f[M];11 void init()12 {13 int i,j;14... 阅读全文
posted @ 2013-10-04 16:25 _随心所欲_ 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 思路:在没有梯子与蛇的时候很容易想到如下公式:dp[i]=1+(∑dp[i+j])/6但是现在有梯子和蛇也是一样的,初始化p[i]=i;当有梯子或蛇时转移为p[a]=b;这样方程变为:dp[i]=1+(∑dp[p[i+j]])/6再就是注意当i+j>100时,停在原地不变。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define M 105 7 #define eps 1e-6 8 using namespace std; 9 double ans[M],an[M][M];10 int p[M];11 v 阅读全文
posted @ 2013-10-03 19:34 _随心所欲_ 阅读(381) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 30 下一页