2015 - 蓝桥省赛

  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 
  4 inline max(int a, int b) {
  5     return a>b?a:b;
  6 }
  7 
  8 int f(char* x,char* y) {
  9     if(strlen(x)==0) return 0;
 10     if(strlen(y)==0) return 0;
 11 
 12     if(*x == *y) return f(x+1, y+1) + 1;
 13 
 14     return max(f(x+1,y),f(x,y+1));
 15 }
 16 
 17 int main() {
 18     printf("%d\n", f("ac","abcd")); //2
 19     printf("%d\n", f("acebbcde1133","xya33bc11de")); //5
 20     system("pause");
 21     return 0;
 22 }
 23 
 24 
 25 
 26 
 27 #include<bits/stdc++.h>
 28 using namespace std;
 29 
 30 double a = 1.0;
 31 double flag = 1;
 32 double sum = 0.0;
 33 
 34 int main() {
 35     for(int i=1 ; i<=100 ; ++i) {
 36         sum+= flag*(1.0/(2*i-1)) , flag *= -1;
 37     }
 38     cout<<4.0*sum<<endl;
 39 }
 40 
 41 
 42 
 43 #include<bits/stdc++.h>
 44 using namespace std;
 45 
 46 int main() {
 47     for(double i=2.0; i<=3.0; i=i+0.0000001) {
 48         if(fabs(pow(i,i)-10.0)<0.000001) printf("%.6lf\n",i);
 49     }
 50 }
 51 
 52 
 53 
 54 
 55 #include<bits/stdc++.h>
 56 using namespace std;
 57 
 58 int vis1[8],vis2[8],a[20];
 59 
 60 void dfs(int x) {
 61     if(x==14) {
 62         for (int i=1; i<=14; ++i) cout<<a[i]<<' ';
 63         cout<<endl;
 64     } else  {
 65         for(int i=1; i<=7; ++i) {
 66             if(vis2[i]) ;
 67             else if(!vis1[i]) {
 68                 a[++x]=i,vis1[i]=x;
 69                 dfs(x);
 70                 a[x--]=0,vis1[i]=0;
 71             } else {
 72                 if(x-vis1[i]==i) {
 73                     a[++x]=i,vis2[i]=x;
 74                     dfs(x);
 75                     a[x--]=0,vis2[i]=0;
 76                 }
 77             }
 78         }
 79     }
 80 }
 81 
 82 int main() {
 83     a[1]=7,a[2]=4,vis1[7]=1,vis1[4]=2;
 84     dfs(2);
 85 }
 86 
 87 
 88 
 89 
 90 #include<bits/stdc++.h>
 91 #define ll long long
 92 using namespace std;
 93 
 94 ll a,b,c,cc;
 95 int cnt=0;
 96 int main() {
 97     scanf("%d",&c);
 98     cc=c*c;
 99     for(ll i=1; i<c; ++i) {
100         b=sqrt(cc-i*i);
101         if(b*b+i*i==cc) cnt++;
102     }
103     cout<<cnt/2<<endl;
104 }
105 
106 
107 
108 #include<bits/stdc++.h>
109 #define N 20
110 using namespace std;
111 
112 char tmp;
113 int M[N][N];
114 bool col[N][N],row[N][N],mat[N][N],flag=false;
115 
116 bool check(int x,int y,int k) {
117     return (!col[x][k])&&(!row[y][k])&&(!mat[ ((x-1)/3)*3 + ((y-1)/3+1) ][k]);
118 }
119 
120 void dfs(int x,int y) {
121     if(flag) return ;
122     else if(x==10) {
123         for(int i=1; i<=9; ++i) {
124             for(int j=1; j<=9; ++j) {
125                 cout<<M[i][j];
126             }
127             cout<<endl;
128         }
129         flag = true;
130     } else if(M[x][y]) dfs(x+ (y==9) ,y%9+1);
131     else {
132         for(int k=1; k<=9; ++k) {
133             if(check(x,y,k)) {
134                 col[x][k]=row[y][k]=mat[ ((x-1)/3)*3 + ((y-1)/3+1) ][k] = true,M[x][y]=k;
135                 dfs(x+ (y==9) ,y%9+1);
136                 col[x][k]=row[y][k]=mat[ ((x-1)/3)*3 + ((y-1)/3+1) ][k] = false,M[x][y]=0;
137             }
138         }
139     }
140 }
141 
142 int main() {
143     for(int i=1; i<=9; ++i) {
144         for(int j=1; j<=9; ++j) {
145             scanf("%c",&tmp);
146             M[i][j]=tmp-'0';
147             if(M[i][j]) {
148                 col[i][M[i][j]]=row[j][M[i][j]]=mat[ ((i-1)/3)*3 + ((j-1)/3+1) ][M[i][j]] = true;
149             }
150         }
151         getchar();
152     }
153     dfs(1,1);
154 }
155 
156 
157 
158 #include<bits/stdc++.h>
159 using namespace std;
160 
161 const int MOD = 10007;
162 const int MAXN = 1e5+5;
163 
164 int dp[MAXN][2],n,tmp;
165 
166 vector<int> edge[MAXN];
167 
168 void add(int u,int v) {
169     edge[u].push_back(v);
170 }
171 
172 void dfs(int x) {
173     dp[x][0]=dp[x][1]=1;
174     for(int i=0; i<edge[x].size(); ++i) {
175         int&v = edge[x][i];
176         dfs(v);
177         dp[x][1]=(dp[x][1]*dp[v][0])%MOD;
178         dp[x][0]=(dp[x][0]*(dp[v][0]+dp[v][1]))%MOD;
179     }
180 }
181 
182 int main() {
183     scanf("%d",&n);
184     for(int i=2; i<=n; ++i) {
185         scanf("%d",&tmp);
186         add(tmp,i);
187     }
188     dfs(1);
189     cout<<(dp[1][0]+dp[1][1]-1)%MOD<<endl;
190 }

猜你喜欢

转载自www.cnblogs.com/chunibyo/p/10559594.html
今日推荐