#include<bits/stdc++.h>#defineendl'\n'#definedeb(x) cout << #x <<" = "<< x <<'\n';#defineINF0x3f3f3f3fusingnamespace std;voidsolve(){int a, b ,k;
cin >> a >> b >> k;if(a >= k * b){
cout <<"good"<< endl;}else{
cout <<"bad"<< endl;}}signedmain(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int t;
t =1;//cin >> t;while(t--)solve();}
B
#include<bits/stdc++.h>#defineendl'\n'#definedeb(x) cout << #x <<" = "<< x <<'\n';#defineINF0x3f3f3f3fusingnamespace std;voidsolve(){int n; cin >> n;
vector<int>a(n);int x =0;for(int i =0; i < n; i ++){
cin >> a[i];
x +=(a[i]-1);}if(x %2){
cout <<"gui"<< endl;}else{
cout <<"sweet"<< endl;}}signedmain(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int t;
t =1;// cin >> t;while(t--)solve();}
C
#include<bits/stdc++.h>#defineendl'\n'#definedeb(x) cout << #x <<" = "<< x <<'\n';#defineINF0x3f3f3f3fusingnamespace std;typedef pair<int,int> pii;voidsolve(){int n, m, x, y;
cin >> n >> m >> x >> y;
x --,y --;
vector<string>g(n +10);for(int i =0; i < n; i ++){
cin >> g[i];}int p, q; cin >> p >> q;
vector<pii>ops(q);for(int i =0; i < q; i ++){
cin >> ops[i].first >> ops[i].second;}while(p--){for(int j =0; j < q; j ++){int op = ops[j].first, z = ops[j].second -1;if(op ==1){char s = g[z][m -1];for(int i = m -1; i >=1; i --){
g[z][i]= g[z][i -1];}
g[z][0]= s;}else{char s = g[n -1][z];for(int i = n -1; i >=1; i --){
g[i][z]= g[i -1][z];}
g[0][z]= s;}}}
cout << g[x][y]<< endl;}signedmain(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int t;
t =1;// cin >> t;while(t--)solve();}
D
#include<bits/stdc++.h>#defineendl'\n'#definedeb(x) cout << #x <<" = "<< x <<'\n';#defineINF0x3f3f3f3f#defineintlonglongusingnamespace std;voidsolve(){int n; cin >> n;
vector<int>a(n);for(int i =0; i < n; i ++){
cin >> a[i];}if(n ==1){
cout <<1<< endl;return;}int s =0;for(int i =0; i < n; i ++){
s += a[i];}int ans =0;for(int i =1; i <= s / i; i ++){if(s % i){continue;}int a = i, b = s / i;if(s / a >= n){
ans ++;}if(a != b and s / b >= n){
ans ++;}}
cout << ans << endl;}signedmain(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int t;
t =1;//cin >> t;while(t--)solve();}
E
#include<bits/stdc++.h>#defineendl'\n'#definedeb(x) cout << #x <<" = "<< x <<'\n';#defineINF0x3f3f3f3f#defineintlonglongusingnamespace std;voidsolve(){int n, k; cin >> n >> k;
vector<int>a(n +1),s(n +1);for(int i =1; i <= n; i ++){
cin >> a[i];
s[i]= s[i -1]+ a[i];}int ans =0;
map<int,int>st;
st[0]=1;for(int i =1; i <= n; i ++){int p = s[i]% k;if(st[p]){
ans += st[p];
st.clear();}
st[p]++;}
cout << ans << endl;}signedmain(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int t;
t =1;//cin >> t;while(t--)solve();}
F
#include<bits/stdc++.h>#defineendl'\n'#definedeb(x) cout << #x <<" = "<< x <<'\n';#defineINF0x3f3f3f3f3f3f3f3f#defineintlonglongusingnamespace std;constint N =1e3+10;int a[N];int f[N][10], g[N][10], dp[N];int has[N][N][2];intcal(int x,int y){if(y - x +1<6){return0;}if(has[x][y -1][0]!= INF and has[x][y -1][1]!= INF){int res =max(has[x][y -1][1], has[x][y -1][0]- a[y]);return res;}for(int i = x; i <= y +1; i ++){for(int j =0; j <=6; j ++){
f[i][j]=-INF;
g[i][j]= INF;}}for(int i = x; i <= y; i ++){if(i != x){
f[i][1]=max(f[i -1][1], a[i]);
g[i][1]=min(g[i -1][1], a[i]);}else{
f[i][1]= a[i];
g[i][1]= a[i];}if(i - x +1>=2){
g[i][2]=min(g[i -1][2], g[i -1][1]- a[i]);
f[i][2]=max(f[i -1][2], f[i -1][1]- a[i]);}elsecontinue;if(i - x +1>=3){if(g[i -1][2]!= INF){
f[i][3]=max(f[i -1][3],max(g[i -1][2]* a[i], f[i -1][2]* a[i]));}else{
f[i][3]=max(f[i -1][3], f[i -1][2]* a[i]);}if(f[i -1][2]!=-INF)
g[i][3]=min(g[i -1][3],min(g[i -1][2]* a[i], f[i -1][2]* a[i]));else
g[i][3]=min(g[i -1][3], g[i -1][2]* a[i]);}elsecontinue;if(i - x +1>=4){
f[i][4]=max(f[i -1][4], f[i -1][3]- a[i]);
g[i][4]=min(g[i -1][4], g[i -1][3]- a[i]);}elsecontinue;if(i - x +1>=5){if(g[i -1][4]!= INF)
f[i][5]=max(f[i -1][5],max(g[i -1][4]* a[i], f[i -1][4]* a[i]));else
f[i][5]=max(f[i -1][5], f[i -1][4]* a[i]);if(f[i -1][4]!=-INF)
g[i][5]=min(g[i -1][5],min(g[i -1][4]* a[i], f[i -1][4]* a[i]));else
g[i][5]=min(g[i -1][5], g[i -1][4]* a[i]);}elsecontinue;if(i - x +1>=6)
f[i][6]=max(f[i -1][6], f[i -1][5]- a[i]);}int res =0;int xx =0;for(int i = x; i <= y; i ++){
res =max(res, f[i][6]);
xx =max(xx, f[i][5]);}
has[x][y][1]= res;//选6个数字的最大值
has[x][y][0]= xx;//选5个数字的最大值return res;}voidsolve(){int n;scanf("%lld",& n);for(int i =1; i <= n; i ++){scanf("%lld", a + i);}for(int i =1; i <= n; i ++){for(int j =1; j <= n; j ++){
has[i][j][0]= has[i][j][1]= INF;}}for(int i =1; i <= n; i ++){
dp[i]= dp[i -1];for(int j =1; j <= i; j ++){
dp[i]=max(dp[i], dp[j -1]+cal(j, i));}}printf("%lld", dp[n]);}signedmain(){int t =1;while(t--)solve();}
G、H(下面是hard版本的代码两个都可以过)
#include<bits/stdc++.h>#defineendl'\n'#definedeb(x) cout << #x <<" = "<< x <<'\n';#defineINF0x3f3f3f3fusingnamespace std;constint N =3e3+10;char g[N][N];int ul[N][N], ur[N][N], ls[N][N], rs[N][N];classBIT{private:
vector<longlong>tre;int n;public:BIT(int size):n(size),tre(size +1,0){};public:intlowbit(int x){return x &-x;}voidadd(int pos,longlong x){for(int i = pos; i <= n; i +=lowbit(i))
tre[i]= tre[i]+ x;}longlongsum(int pos){longlong res =0;for(int i = pos; i; i -=lowbit(i))
res = res + tre[i];return res;}};voidsolve(){int n, m; cin >> n >> m;for(int i =1; i <= n; i ++){
string s; cin >> s;for(int j =1; j <= m; j ++){
g[i][j]= s[j -1];}}for(int i = n; i >=1; i --){for(int j =1; j <= m; j ++){if(g[i][j]=='*'){
ul[i][j]= ul[i +1][j -1]+1;
ur[i][j]= ur[i +1][j +1]+1;
ls[i][j]= ls[i][j -1]+1;}else{
ul[i][j]= ur[i][j]= ls[i][j]=0;}}for(int j = m; j >=1; j --){if(g[i][j]=='*'){
rs[i][j]= rs[i][j +1]+1;}else{
rs[i][j]=0;}}}longlong ans =0;for(int j =1; j <= m; j ++){
BIT t(n);//记录合法点的个数
vector<vector<int>>del(n +1);//记录在v这个点需要删除的点。for(int i = n; i >=1; i --){if(g[i][j]=='*'){int v = i -min(ls[i][j], rs[i][j])+1;if(v >=1){
del[v].push_back(i);}int low = i +min(ul[i][j], ur[i][j])-1;
ans += t.sum(low);
t.add(i,1);}for(auto x: del[i]){
t.add(x,-1);}}}
cout << ans << endl;}signedmain(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int t;
t =1;// cin >> t;while(t--)solve();}