17西安网络赛

这场比赛我就套模板给队友就打了个表=_=

我们最后一共就过了三道题...

dalao们都好强~

 

 C. Sum

一开始以为是数论(最近碰到过相似的),看大家都那么快过有点懵逼...然后队友搞过了~

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1010;
 4 int a[maxn];
 5 
 6 int main(){
 7     int t;
 8     scanf("%d",&t);
 9     while(t--){
10         int x;
11         scanf("%d",&x);
12         int pos=0;
13         while(x){
14             a[pos++]=x%10;
15             x/=10;
16         }
17         for(int i = 1; i < 233; i++){
18             printf("1");
19             for(int j = 1; j < pos; j++){
20                 printf("0");
21             }
22         }
23         puts("1");
24     }
25     return 0;
26 }
View Code

 

 B. Coin

概率dp,简单递推,场上愣是不会做=_=

一直在想着推公式直接求和,最后队友过了我才发现一开始的式子就列错了=_=

dp[n][0]表示前n次是偶数次正面朝上的概率,dp[n][1]表示前n次是奇数次正面朝上的概率

dp[n][0]=dp[n-1][0]*b+dp[n-1][1]*a;

dp[n][1]=dp[n-1][0]*a+dp[n-1][1]*b;

其中a=q,b=p-q;

 1 /*************************************************************************
 2     > File Name: a.cpp
 3     > Author: yijiull
 4     > Mail: 1147161372@qq.com 
 5     > Created Time: 2017年09月16日 星期六 19时13分06秒
 6  ************************************************************************/
 7 
 8 #include <bits/stdc++.h>
 9 using namespace std;
10 #define ll long long 
11 const int maxn=8;
12 const int mod=1e9+7;
13 
14 struct Matrix{
15     ll n;
16     ll m[maxn][maxn];
17     void init(ll sz){
18         n=sz;
19         memset(m,0,sizeof(m));
20     }
21     Matrix(ll sz){init(sz);}
22     void set_I(){
23         for(int i = 0; i < n; i++) m[i][i]=1;
24     }
25     Matrix operator * (const Matrix& a){
26         Matrix ans(n);
27         for(int i = 0; i < n; i++){
28             for(int j = 0; j < n; j++){
29                 for(int k = 0; k < n; k++){
30                     ans.m[i][j]=(ans.m[i][j]+m[i][k]*a.m[k][j])%mod;
31                 }
32             }
33         }
34         return ans;
35     }
36 };
37 ll quickpow(ll a,ll b,ll m){
38     ll ans=1,temp=a%m;
39     while(b){
40         if(b&1) ans=ans*temp%m;
41         b>>=1;
42         temp=temp*temp%m;
43     }
44     return ans;
45 }
46 
47 int main(){
48     int t;
49     scanf("%d",&t);
50     while(t--){
51         ll p,q,k;
52         scanf("%lld%lld%lld",&p,&q,&k);
53         ll a=q,b=p-q;
54         Matrix base(2),ans(2);
55         ans.set_I();
56         base.m[0][0]=base.m[1][1]=b;
57         base.m[0][1]=base.m[1][0]=a;
58         ll n=k-1;
59         while(n){
60             if(n&1) ans=ans*base; 
61             n>>=1;
62             base=base*base;
63         }
64         ll res=(ans.m[0][0]*b%mod+ans.m[1][0]*a%mod)%mod;
65         res=(res*quickpow(quickpow(p,k,mod),mod-2,mod))%mod;
66         printf("%lld\n",res);
67     }
68 }
View Code

 

 

 E. Maximum Flow 

打表找规律+数位dp过了......

有空接着补~

 

posted @ 2017-09-16 18:50  yijiull  阅读(163)  评论(0编辑  收藏  举报