#include<bits/stdc++.h>usingnamespace std;#define ll long longconstint maxn =4050+100;int T, n, m, q, x, y, k;
ll val;
ll a[maxn][maxn];
ll sum[maxn][maxn];intmain(){scanf("%d",&T);while(T --){scanf("%d %d",&n,&m);for(int i =0; i <= n + m+2;++ i){for(int j =0; j <= n + m+2;++ j){
sum[i][j]=0;
a[i][j]=0;}}for(int i =1; i <= n ;++ i){for(int j =1; j <= m ;++ j){scanf("%lld",&val);
a[i+j][i-j+m]= val;}}/*for(int i = 1 ; i <= n + m ; ++ i){
for(int j = 1 ; j <= m + n ; ++ j){
cout << a[i][j] << ' ';
}
cout <<endl;
}*/for(int i =1; i <= n + m+2;++ i){for(int j =1; j <= m + n+2;++ j){
sum[i][j]= sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];}}scanf("%d",&q);while(q --){scanf("%d %d %d",&x,&y,&k);
x = x + y;
y = x -2* y + m;
cout << sum[min(x+k,n+m)][min(y+k,n+m)]+sum[max(x-k-1,0)][max(y-k-1,0)]-sum[max(x-k-1,0)][min(y+k,n+m)]-sum[min(x+k,n+m)][max(y-k-1,0)]<<endl;}}return0;}
I 排序
模拟题意,普通结构体排序
#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cstdlib>#include<cmath>#include<stack>#include<map>#include<string>#include<vector>#include<set>#include<bitset>#include<algorithm>#include<ctime>usingnamespace std;#define ll long long#define lb long double#define INF 0x3f3f3f3f#define LINF 0x3f3f3f3f3f3f3f3f#define ull unsigned long long#define endl '\n'#define clr(a, b) memset(a, b, sizeof(a))#define lowbit(x) x & -x#define lson rt << 1, l, mid#define rson rt << 1 | 1, mid + 1, r#define PB push_back#define POP pop_back#define max_ll 9223372036854775807#define PII pair<int, int>#define random(x) (rand()%x)//srand((ll)time(0));//freopen("E://one.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取//freopen("E://oneout.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中//std::ios::sync_with_stdio(false);constdouble eps =1e-14;constdouble pi =acos(-1);constint maxn =2e5+10;//30000000constint maxm = maxn *40;const ll mod =1e9+7;constint hash_mod =19260817;constint inf =2147483647;int T, n, m, q, t;
map<string ,int> ma;
string x, y, z;struct node{
string name;int pro[15][3];int num, time;boolfriendoperator<(node a, node b){if(a.num == b.num && a.time == b.time)return a.name < b.name;return a.num == b.num ? a.time < b.time : a.num > b.num;}}a[maxn];intmain(){scanf("%d",&T);while(T --){
ma.clear();scanf("%d %d",&n,&m);for(int i =1; i <= m ;++ i){clr(a[i].pro,0); a[i].time = a[i].num =0;
cin >> a[i].name; ma[a[i].name]= i;}scanf("%d",&q);while(q --){
cin >> x >> t >> y >> z;if(z[0]=='C')continue;if(a[ma[x]].pro[y[0]-'A'][0])continue;if(z[0]=='A'){
a[ma[x]].pro[y[0]-'A'][0]=1;
a[ma[x]].num ++;
a[ma[x]].pro[y[0]-'A'][2]= t;
a[ma[x]].time += a[ma[x]].pro[y[0]-'A'][1]*20+ t;
a[ma[x]].pro[y[0]-'A'][1]++;}else{
a[ma[x]].pro[y[0]-'A'][1]++;}}sort(a +1, a +1+ m);int rk =1;for(int i =1; i <= m ;++ i){if(i ==1) cout <<"1 ";elseif(a[i].num==a[i-1].num&&a[i].time==a[i-1].time) cout << rk <<' ';else{
rk = i;
cout << rk <<' ';}
cout << a[i].name <<' '<< a[i].num <<' '<< a[i].time <<' ';for(int j =0; j < n ;++ j){if(a[i].pro[j][0]){
cout <<"+"<< a[i].pro[j][1]<<"("<< a[i].pro[j][2]<<")"<<' ';}else{
cout <<"-"<< a[i].pro[j][1]<<' ';}}
cout << endl;}if(T >=1)
cout << endl;}return0;}
J n=abc
暴力枚举加剪枝
#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cstdlib>#include<cmath>#include<stack>#include<map>#include<string>#include<vector>#include<set>#include<bitset>#include<algorithm>#include<ctime>usingnamespace std;#define ll long long#define lb long double#define INF 0x3f3f3f3f#define LINF 0x3f3f3f3f3f3f3f3f#define ull unsigned long long#define endl '\n'#define clr(a, b) memset(a, b, sizeof(a))#define lowbit(x) x & -x#define lson rt << 1, l, mid#define rson rt << 1 | 1, mid + 1, r#define PB push_back#define POP pop_back#define max_ll 9223372036854775807#define PII pair<int, int>#define random(x) (rand()%x)//srand((ll)time(0));//freopen("E://one.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取//freopen("E://oneout.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中//std::ios::sync_with_stdio(false);constdouble eps =1e-14;constdouble pi =acos(-1);constint maxn =1e5+10;//30000000constint maxm = maxn *40;const ll mod =1e9+7;constint hash_mod =19260817;constint inf =2147483647;int T;boolp(int x){if(x ==1)returnfalse;for(int i =2; i * i <= x ;++ i){if(x % i ==0)returnfalse;}returntrue;}intmain(){int n;scanf("%d",&T);while(T --){scanf("%d",&n);if(p(n)){
cout <<"No solution"<< endl;continue;}int mini = INF, flag =0, a, b, c;for(int i =2; i * i * i <= n ;++ i){if(n % i !=0)continue;for(int j = i ; j * j * i <= n ;++ j){if(n %(i * j)!=0)continue;
ll k = n /(i * j);if(k - i < mini){
flag =1;
mini = k - i;
a = i; b = j; c = k;}}}if(flag)printf("%d=%d*%d*%d\n", n, a, b, c);else cout <<"No solution"<< endl;}return0;}
K 梅森素数
模拟然后判素数
#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cstdlib>#include<cmath>#include<stack>#include<map>#include<string>#include<vector>#include<set>#include<bitset>#include<algorithm>#include<ctime>usingnamespace std;#define ll long long#define lb long double#define INF 0x3f3f3f3f#define LINF 0x3f3f3f3f3f3f3f3f#define ull unsigned long long#define endl '\n'#define clr(a, b) memset(a, b, sizeof(a))#define lowbit(x) x & -x#define lson rt << 1, l, mid#define rson rt << 1 | 1, mid + 1, r#define PB push_back#define POP pop_back#define max_ll 9223372036854775807#define PII pair<int, int>#define random(x) (rand()%x)//srand((ll)time(0));//freopen("E://one.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取//freopen("E://oneout.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中//std::ios::sync_with_stdio(false);constdouble eps =1e-14;constdouble pi =acos(-1);constint maxn =2e5+10;//30000000constint maxm = maxn *40;const ll mod =1e9+7;constint hash_mod =19260817;constint inf =2147483647;int T, n, m;boolp(ll x){if(x ==0)returnfalse;if(x ==1)returnfalse;for(int i =2; i * i <= x ;++ i)if(x % i ==0)returnfalse;returntrue;}intmain(){int cnt =0;for(int i =0; i <=60;++ i){if(p((1LL<<i)-1)){
cout <<(1LL<< i)-1;if(cnt <=4) cout <<' ';
cnt ++;}if(cnt ==5)break;}return0;}
L 双流机场
只要判断四个角就行, 如果某个角是都出去或者都进来那么就不行
#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cstdlib>#include<cmath>#include<stack>#include<map>#include<string>#include<vector>#include<set>#include<bitset>#include<algorithm>#include<ctime>usingnamespace std;#define ll long long#define lb long double#define INF 0x3f3f3f3f#define LINF 0x3f3f3f3f3f3f3f3f#define ull unsigned long long#define endl '\n'#define clr(a, b) memset(a, b, sizeof(a))#define lowbit(x) x & -x#define lson rt << 1, l, mid#define rson rt << 1 | 1, mid + 1, r#define PB push_back#define POP pop_back#define max_ll 9223372036854775807#define PII pair<int, int>#define random(x) (rand()%x)//srand((ll)time(0));//freopen("E://one.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取//freopen("E://oneout.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中//std::ios::sync_with_stdio(false);constdouble eps =1e-14;constdouble pi =acos(-1);constint maxn =2e5+10;//30000000constint maxm = maxn *40;const ll mod =1e9+7;constint hash_mod =19260817;constint inf =2147483647;int T, n, m;char a[maxn], b[maxn];intmain(){scanf("%d",&T);while(T --){scanf("%d %d",&n,&m);scanf("%s", a +1);scanf("%s", b +1);int flag =0;if(a[1]!= b[1]) flag =1;if(a[1]== b[m]) flag =1;if(a[n]== b[1]) flag =1;if(a[n]!= b[m]) flag =1;if(flag) cout <<"Sad"<< endl;else cout <<"Happy"<< endl;}return0;}
#include<bits/stdc++.h>usingnamespace std;constint maxn =2e5+7;int T ;boolf(int x ){if(x==1)returnfalse;for(int i=2;i*i<=x;i++)if(x%i==0)returnfalse;returntrue;}intmain(){scanf("%d",&T);while(T--){double ans =0;int n ;scanf("%d",&n);if(n>=11800){printf("3\n");continue;}for(int i=2;i<=n;i++){if(f(i))
ans +=1.0/(i*1.0);}printf("%.0lf\n",ans);}return0;}
A 丁姐姐喜欢Fibonacci根据奇数+偶数等于奇,奇数+奇数等于偶数可以发现斐波那契的奇偶分布为奇奇偶 奇奇偶 奇奇偶 。。。。。。所以能被3整除就是偶数#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cstdlib>#...