上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 30 下一页
摘要: 简单的概率DP!!!结果=所以的情况-所以满足且 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 double p[MAX][32],dp[50][32],s[MAX][32],p1,p2;13 int main(){14 int n,m,t,i,j,k;15 while(cin>>m>>t>>n){ 阅读全文
posted @ 2013-08-10 11:41 _随心所欲_ 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 这个解题报告讲的很详细了!!!代码如下: 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 100001011 #define mod 100000000712 using namespace std;13 int an[MAX];14 ll s,ans,temp;15 ll pows(ll a,ll b){16 ll ans=1;17 while(b){18... 阅读全文
posted @ 2013-08-10 09:55 _随心所欲_ 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 思路: 对于一条边来说, 如果拿了一个点, 说明已经拿了该边的一半权值。如果某边的两个的顶点分别是不同的人。 那么差值还是不变的。如果某边的两个顶点分别是同一个人。 那么和值也不变。所以我们可以把一个边分解到两个顶点上,然后依次Alice 取最大,Bob 取次大。 因为 他们都是绝顶聪明的。代码如下: 1 #include 2 #include 3 #include 4 using namespace std; 5 double d[100001],ans; 6 int main(){ 7 int n,m,i,u,v,w; 8 while(scanf("%d%d",& 阅读全文
posted @ 2013-08-09 21:51 _随心所欲_ 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 水题一枚……代码如下: 1 #include 2 #include 3 using namespace std; 4 int s[100001],t; 5 int main(){ 6 int n,m,i,j,ans; 7 while(scanf("%d%d",&n,&m)!=EOF){ 8 ans=0; 9 for(i=1;i=1&&i>ans;i--)14 for(j=1;j+i-1<=n;j++)15 if((s[i+j-1]-s[j-1])%m==0){16 ans=m... 阅读全文
posted @ 2013-08-09 21:03 _随心所欲_ 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 思路:反状态压缩——把数据转换成20位的01来进行运算因为只有20位,而且&,|,^都不会进位,那么一位一位地看,每一位不是0就是1,这样求出每一位是1的概率,再乘以该位的十进制数,累加,就得到了总体的期望。对于每一位,状态转移方程如下:f[i][j]表示该位取前i个数,运算得到j(0或1)的概率是多少。f[i][1]=f[i-1][1]*p[i]+根据不同运算符和第i位的值运算得到1的概率。f[i][0]=f[i-1][0]*p[i]+根据不同运算符和第i位的值运算得到0的概率。初始状态:f[0][0~1]=0或1(根据第一个数的该位来设置)每一位为1的期望 f[n][1]这题只要知 阅读全文
posted @ 2013-08-09 20:15 _随心所欲_ 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 思路:dp[i]表示当前在已经投掷出i个不相同/相同这个状态时期望还需要投掷多少次对于第一种情况有:dp[0] = 1+dp[1]dp[1] = 1+((m-1)*dp[1]+dp[2])/mdp[i] = 1+((m-1)*dp[1]+dp[i+1])/m……dp[n] = 0可以得到:dp[n-1]=m*dp[n]+1所以dp[0]=(m^n-1)/(m-1)也即是第一种的答案!对于第二种情况有:dp[0]=1+dp[1]dp[1]=1+(dp[1]+(m-1)*dp[2])/mdp[i]=1+(dp[1]+……+dp[i]+(m-i)*dp[i+1])/m……dp[n]=0令d[i]=d 阅读全文
posted @ 2013-08-09 18:18 _随心所欲_ 阅读(645) 评论(0) 推荐(1) 编辑
摘要: 思路:将所有的字符都变成I,判断I的个数是否是2的幂。设I的个数为a,U的个数为b则有a+3b+6x=2^K是否有解,也就是a+3b不能是3的倍数。代码如下: 1 #include 2 #include 3 char str[1000001]; 4 int main(){ 5 int i,t,len,num,sum; 6 scanf("%d",&t); 7 while(t--){ 8 scanf("%s",&str); 9 if(strcmp(str,"MI")==0){10 puts("Yes") 阅读全文
posted @ 2013-08-09 16:13 _随心所欲_ 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 思路:用一个数组index[]存放a的下标,初始化令a[i]=c[i]=index[i]=i;假设当前处理的i,初始时令cur=i;j为大于i的任意值。每次操作找a[l]=c[cur]-b[cur]。若cur==l则结束;否则交换a[l]和a[cur]的值以及下标。若l>i,那么结束;否则令cur=l,然后交换c[cur]和c[j],继续处理知道该轮结束。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define ll __int6410 # 阅读全文
posted @ 2013-08-09 15:46 _随心所欲_ 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 五角数定理!!可以参考这个http://www.cnblogs.com/xin-hua/p/3242428.html代码如下: 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 10000111 using namespace std;12 const int mod=1000000007;13 int an[MAX],n,t,k;14 void init(){15 ... 阅读全文
posted @ 2013-08-09 14:54 _随心所欲_ 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 简单的概率DP入门题代码如下: 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 100311 using namespace std;12 struct point13 {14 double c,b,r;15 }p[MAX][MAX];16 double dp[MAX][MAX];17 int main(){18 int n,m,i,j;19 whi... 阅读全文
posted @ 2013-08-09 08:51 _随心所欲_ 阅读(196) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 30 下一页