戳一下更新
1000
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a + b<<endl;
return 0;
}
1001
#include <cstdio>
#include <cstring>
#include <iostream>
//By sssSSSay
//Max_Flow
#define INF 100000007
using namespace std;
struct node {int next,val,to;}E[6000010];
int n,m,tot,Ans,dis[1000010],H[1000010],q[1000010];
void Add(int u,int v,int c){E[++tot].next = H[u];E[tot].to = v;E[tot].val = c;H[u] = tot;}
void Link(int u,int v,int c){Add(u,v,c);Add(v,u,c);}
int Num(int x,int y){return (x - 1) * m + y;}
int Bfs(){
memset(dis,-1,sizeof(dis));
int h = 1,t = 1;dis[1] = 0;q[h] = 1;
while(h <= t){
int u = q[h];
// printf("%d :",u);
for(int i=H[u];i;i=E[i].next){
int v = E[i].to;
// printf("%d ",v);
if(dis[v] == -1 && E[i].val){
dis[v] = dis[u] + 1;
q[++t] = v;
}
}h++;
// printf("\n");
}if(dis[n * m] == -1)return 0;
return 1;
}
int Max_Flow(int x,int Min){
if(x == n * m)return Min;
int w,used = 0;
for(int i=H[x];i;i=E[i].next){
int v = E[i].to;
if(E[i].val && dis[v] == dis[x] + 1){
w = Min - used;
w = Max_Flow(v,min(w,E[i].val));
used += w;
E[i].val -= w;
E[i+1].val += w;
if(used == Min)return Min;
}
}if(!used)dis[x] = -1;
return used;
}
int main(){
scanf("%d%d",&n,&m);
int x;
for(int i=1;i<=n;i++){
for(int j=1;j<m;j++){
scanf("%d",&x);
Link(Num(i,j),Num(i,j+1),x);
}
}
for(int i=1;i<n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&x);
Link(Num(i,j),Num(i+1,j),x);
}
}
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
scanf("%d",&x);
Link(Num(i,j),Num(i+1,j+1),x);
}
}
while(Bfs())Ans += Max_Flow(1,INF);
printf("%d\n",Ans);
return 0;
}
1002
#include <cstdio>
#include <cstring>
#include <iostream>
//by sssSSSay
//eh^ zhao gui lv
//f[1] = 1;f[2] = 3;f[i] = f[i-1] + f[i-2]
//F[i] = f[i] * f[i] - (i % 2 == 0) * 4
using namespace std;
const int Maxn = 10001;
int n,LenPre,LenNow,LenTemp,LenAns;
int Pre[Maxn],Now[Maxn],Temp[Maxn],Ans[Maxn];
void Add(){
int Len = max(LenPre,LenNow),x = 0;
for(int i=1;i<=Len;i++){
Temp[i] = Pre[i] + Now[i] + x;
x = Temp[i] / 10;
Temp[i] %= 10;
}while(x){Temp[++Len] = x % 10;x /= 10;}
LenTemp = Len;
}
void Mul(){
int Len;
for(int i=1;i<=LenPre;i++){
Len = i + LenPre - 1;int x = 0;
for(int j=1;j<=LenPre;j++){
Ans[i+j-1] += Pre[i] * Pre[j] + x;
x = Ans[i+j-1] / 10;
Ans[i+j-1] %= 10;
}
while(x > 0){Ans[++Len] += x % 10;x /= 10;}
}LenAns = Len;
}
int main(){
scanf("%d",&n);
LenPre = 1;Pre[1] = 1;
LenNow = 1;Now[1] = 3;
for(int i=2;i<=n;i++){
Add();
LenPre = LenNow;memcpy(Pre,Now,sizeof(Now));
LenNow = LenTemp;memcpy(Now,Temp,sizeof(Temp));
}
Mul();
if(n % 2 == 1){
for(int i=LenAns;i>=1;i--)printf("%d",Ans[i]);
printf("\n");
}
else {
int Cur = 1;Ans[Cur] -= 4;
while(Ans[Cur] < 0){Ans[Cur] += 10;Ans[++Cur]--;}
for(int i=LenAns;i>=1;i--)printf("%d",Ans[i]);
printf("\n");
}
return 0;
}
1003
#include <cstdio>
#include <cstring>
#include <iostream>
//By sssSSSay
//DP
typedef long long LL;
#define INF 100000007
using namespace std;
const int Maxn = 110;
int H[Maxn],dis[Maxn],q[Maxn*Maxn],Path[Maxn],Temp[Maxn];
LL f[Maxn],Dp[Maxn][Maxn];
int n,m,k,e,u,v,c,x,y,z,d,K,tot,Ans;
bool vis[Maxn],Judge[Maxn][Maxn],Can[Maxn];
struct node {int to,val,next;}E[Maxn];
void Add(int u,int v,int c){E[++tot].to = v;E[tot].val = c;E[tot].next = H[u];H[u] = tot;}
int Spfa(int a,int b){
for(int i=1;i<=m;i++){
dis[i] = INF;
vis[i] = 0;
Can[i] = 0;
}
for(int i=1;i<=m;i++)for(int j=a;j<=b;j++)if(Judge[i][j])Can[i] = 1;
int h = 1,t = 1;dis[1] = 0;q[h] = 1;Path[1] = -1;
while(h <= t){
int u = q[h];
vis[u] = 0;
for(int i=H[u];i;i=E[i].next){
int v = E[i].to;
if(Can[v])continue;
if(dis[u] + E[i].val < dis[v]){
dis[v] = dis[u] + E[i].val;
Path[v] = u;
if(!vis[v]){
vis[v] = 1;
q[++t] = v;
}
}
}h++;
}return dis[m];
}
int main(){
scanf("%d%d%d%d",&n,&m,&k,&e);
for(int i=1;i<=e;i++){
scanf("%d%d%d",&u,&v,&c);
Add(u,v,c);Add(v,u,c);
}
scanf("%d",&d);
for(int i=1;i<=d;i++){
scanf("%d%d%d",&x,&y,&z);
for(int j=y;j<=z;j++)Judge[x][j] = 1;
}
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++)Dp[i][j] = (LL)Spfa(i,j);
}
for(int i=1;i<=n;i++){
f[i] = (LL)Dp[1][i] * (LL)i;
for(int j=0;j<i;j++)f[i] = min(f[i],f[j] + (LL)k + Dp[j+1][i] * (LL)(i - j));
}
printf("%d\n",f[n]);
return 0;
}
1004
#include <cstdio>
#include <cstring>
#include <iostream>
typedef long long LL;
using namespace std;
const int Maxn = 201;
int C[Maxn][Maxn];
int Sr,Sg,Sb,n,p,m;
void Solve(){
for(int i=2;i<=n+1;i++){
for(int j=0;j<=i;j++){
C[i][j] = (C[i][j] + C[i-1][j]) % p;
if(j != 0)C[i][j] = (C[i][j] + C[i-1][j-1]) % p;
}
}
}
LL Pow(int a,int n){
int c = 1;
while(n){
if(n & 1)c = (c * a) % p;
a = (a * a) % p;
n = n >> 1;
}return c;
}
int main(){
scanf("%d%d%d%d%d",&Sr,&Sb,&Sg,&m,&p);
C[1][0] = 1;C[1][1] = 1;
n = Sr + Sb + Sg;Solve();
LL S = ((LL)C[n][Sr] * (LL)C[n - Sr][Sg]) % p;
printf("%lld",(S * Pow(m + 1,p - 2)) % p);
// while(1);
return 0;
}
1005
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#define p 1000000
using namespace std;
const int Maxn = 1010;
int n,d[Maxn],pri[Maxn*Maxn],Ans[Maxn],LenAns,tot,cnt,m,num[Maxn];
inline bool Judge(int x){int N = sqrt(x);
for(int i=2;i<=N;i++)if(x % i == 0)return 0;
return 1;
}
void Mul(int x){
for(int i=1;i<=LenAns;i++)Ans[i] *= x;
for(int i=1;i<=LenAns;i++){
Ans[i + 1] += Ans[i] / p;
Ans[i] %= p;
}
while(Ans[LenAns + 1] > 0){LenAns++;Ans[LenAns + 1] += Ans[LenAns] / p;Ans[LenAns] %= p;}
}
void Solve(int x,int c){
for(int i=1;i<=x;i++){
int k = i;
for(int j=1;j<=cnt;j++){
if(k <= 1)break;
while(k % pri[j] == 0){
num[j] += c;
k /= pri[j];
}
}
}
}
void Print(){
for(int i=LenAns;i>=1;i--){
if(i == LenAns)printf("%d",Ans[i]);
else printf("%06d",Ans[i]);
}printf("\n");
}
int main(){
scanf("%d",&n);Ans[1] = 1;LenAns = 1;
if(n == 1){
scanf("%d",&d[1]);
if(d[1] == 0)printf("1\n");
else printf("0\n");
return 0;
}
for(int i=1;i<=n;i++){
scanf("%d",&d[i]);
if(d[i] == 0){
printf("0\n");
return 0;
}
else if(d[i] != -1)tot += d[i] - 1;
else m++;
}
if(tot > n - 2){
printf("0\n");
return 0;
}
for(int i=2;i<=1000;i++)if(Judge(i))pri[++cnt] = i;
Solve(n - 2,1);Solve(n - 2 - tot,-1);
for(int i=1;i<=n;i++)if(d[i] != -1)Solve(d[i] - 1,-1);
for(int i=1;i<=cnt;i++){
for(int j=1;j<=num[i];j++)Mul(pri[i]);
}
for(int i=1;i<=n-tot-2;i++)Mul(m);
Print();
return 0;
}
1006
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int Maxn = 100100;
struct node {int to,next;}E[3000010];
int n,m,q[Maxn],d[Maxn],col[Maxn],hash[Maxn],tot,H[Maxn],Ans;
bool vis[Maxn];
void Insert(int u,int v){E[++tot].to = v;E[tot].next = H[u];H[u] = tot;}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int x,y;scanf("%d%d",&x,&y);
Insert(x,y);Insert(y,x);
}
for(int i=n;i>=1;i--){
int t = 0;
for(int j=1;j<=n;j++)if(!vis[j] && d[j] >= d[t])t = j;
vis[t] = 1;q[i] = t;
for(int j=H[t];j;j=E[j].next)d[E[j].to]++;
}
for(int i=n;i>=1;i--){
int u = q[i],j;
for(int k=H[u];k;k=E[k].next)hash[col[E[k].to]] = i;
for(j=1;;j++)if(hash[j] != i)break;
col[u] = j;if(j > Ans)Ans = j;
}
printf("%d\n",Ans);
// while(1);
return 0;
}
手动把空格去掉了看起来比较密集= =