输入
3 2 2
1 -3
2 3
-2 3
输出
9
输入
5
4 6 2 8 4
1 5 7 9 2
输出
4
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int k,n,a[2000005],b[2000005];
int read(){
int i=0,f=1;char ch=getchar();
for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') f=-1;
for(;ch<='9'&&ch>='0';ch=getchar()) i=(i<<3)+(i<<1)+ch-'0';
return i*f;
}
int main(){
//freopen("rock.in","r",stdin);
//freopen("rock.out","w",stdout);
n=read();
for(int i=1;i<=n;++i) b[i+n]=b[i]=read();
for(int i=1;i<=n;++i) a[i+n]=a[i]=b[i]-read();
int s=0,s1=0,s2=0;k=0;
for(int i=1;i<=n*2-1;++i){
s1+=b[i];s2+=a[i];s++;
if(s2<0){
s=0,s1=0,s2=0;
k=i;
}
if(s==n) break;
}
cout<<k<<endl;
}
T2 矩阵(matrix)输入
3 2 2
1 -3
2 3
-2 3
输出
9
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int read(){
int i=0,f=1;char ch=getchar();
for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') f=-1;
for(;ch<='9'&&ch>='0';ch=getchar()) i=(i<<3)+(i<<1)+ch-'0';
return i*f;
}
int buf[1024];
inline void write(int x){
if(!x){putchar('0');return ;}
if(x<0){putchar('-');x=-x;}
while(x) buf[++buf[0]]=x%10,x/=10;
while(buf[0]) putchar(buf[buf[0]--]+48);
return ;
}
#define stan 111
int n,m,k,amte[stan][stan],ansi,f[stan][stan][stan],a[stan];
signed main(){
n=read();m=read();k=read();
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
amte[i][j]=read();
memset(f,-10,sizeof(f));
if(m==1){
for(int i=1;i<=n;++i)
amte[i][1]+=amte[i-1][1];
for(int i=0;i<=n;++i)
f[i][0][0]=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=k;++j){
f[i][j][0]=f[i-1][j][0];
for(int t=0;t<i;++t)
f[i][j][0]=max(f[i][j][0],f[t][j-1][0]+amte[i][1]-amte[t][1]);
}
write(f[n][k][0]);
return 0;
}else{
ansi=-999999999;
f[0][0][0]=0;
for(int i=1;i<=n;++i){
f[i][0][0]=0;
for(int j=1;j<=k;++j){
f[i][j][0]=max(f[i-1][j][0],max(f[i-1][j][1],max(f[i-1][j][2],max(f[i-1][j][3],f[i-1][j][4]))));
f[i][j][1]=amte[i][1]+max(f[i-1][j-1][0],max(f[i-1][j-1][1],max(f[i-1][j-1][2],max(f[i-1][j-1][3],f[i-1][j-1][4]))));
f[i][j][1]=max(f[i][j][1],amte[i][1]+max(f[i-1][j][1],f[i-1][j][3]));
f[i][j][2]=amte[i][2]+max(f[i-1][j-1][0],max(f[i-1][j-1][1],max(f[i-1][j-1][2],max(f[i-1][j-1][3],f[i-1][j-1][4]))));
f[i][j][2]=max(f[i][j][2],amte[i][2]+max(f[i-1][j][2],f[i-1][j][3]));
if(j>=2)f[i][j][3]=amte[i][1]+amte[i][2]+max(f[i-1][j-2][0],max(f[i-1][j-2][1],max(f[i-1][j-2][2],max(f[i-1][j-2][3],f[i-1][j-2][4]))));
f[i][j][3]=max(f[i][j][3],amte[i][1]+amte[i][2]+max(max(f[i-1][j-1][1],f[i-1][j-1][2]),f[i-1][j-1][3]));
f[i][j][3]=max(f[i][j][3],amte[i][1]+amte[i][2]+f[i-1][j][3]);
f[i][j][4]=amte[i][1]+amte[i][2]+max(f[i-1][j-1][0],max(f[i-1][j-1][1],max(f[i-1][j-1][2],max(f[i-1][j-1][4],f[i-1][j-1][3]))));
f[i][j][4]=max(f[i][j][4],amte[i][1]+amte[i][2]+f[i-1][j][4]);
}
}
for(int i=1;i<=n;++i)
for(int l=0;l<=4;++l)
ansi=max(ansi,f[i][k][l]);
write(ansi);
}
return 0;
}
T3 裁剪表格 (table)输入
4 4 2
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
1 1 3 3 2 2
3 1 1 3 2 2
输出
4 4 3 3
4 4 3 3
2 2 1 1
2 2 1 1
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,q,r1,r2,c1,c2,h,w;
int a[1005][1005];
int read(){
int i=0,f=1;char ch=getchar();
for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') f=-1;
for(;ch<='9'&&ch>='0';ch=getchar()) i=(i<<3)+(i<<1)+ch-'0';
return i*f;
}
int main(){
//freopen("table.in","r",stdin);
//freopen("table.out","w",stdout);
n=read();m=read();q=read();
int fl=1;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j){
a[i][j]=read();
if(a[i][j]!=1) fl=0;
}
if(fl){
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j) cout<<"1"<<" ";
cout<<endl;
}
return 0;
}
for(int i=1;i<=q;++i){
r1=read(),c1=read(),r2=read(),c2=read();h=read();w=read();
for(int j=0;j<h;++j)
for(int k=0;k<w;++k){
swap(a[r1+j][c1+k],a[r2+j][c2+k]);
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j) cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}