2021寒假训练(一)
| 题号 | A | B | C | D | E | F | G | H |
| AC | √ | Ο | √ | √ | Ο |
#include<list> #include<string.h> #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<string> #include<cstring> #include<vector> #include<map> #include<deque> #include<stack> #include<queue> #include<set> #include<iomanip> #include<cstdlib> #include<stdexcept> #include<fstream> #include<iterator> using namespace std; typedef long long ll; typedef unsigned long long ull; #define ll long long #define int long long const int maxn = 2e5 + 10; const int inf = 0x3f3f3f3f; const int Base = 131; const ll INF = 1ll << 62; //const double PI = acos(-1); const double eps = 1e-7; const int mod = 1e9 + 7; #define PI acos(-1) #define mem(a,b) memset(a,b,sizeof(a)) #define speed {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); } #define wait while(1){} #define debug cout<<"********"<<endl; // inline int gcd(int a, int b) { // while (b ^= a ^= b ^= a %= b); // return a; // } inline ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a%b); } long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power & 1) result = result * base % mod; power >>= 1; base = (base * base) % mod; } return result; } inline ll rd() { ll s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch>'9') { if (ch == '-')w = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar(); return s * w; } int n, m, price[maxn], front[maxn], back[maxn]; signed main() { n = rd(); set<int>money[4]; for (int i = 0; i < n; i++) { price[i] = rd(); } for (int i = 0; i < n; i++) { front[i] = rd(); } for (int i = 0; i < n; i++) { back[i] = rd(); money[back[i]].insert(price[i]); money[front[i]].insert(price[i]); } m = rd(); int pp = 0; for (int i = 0; i < m; i++) { int want = rd(); if (money[want].empty()) { if (pp == 0) { pp = 1; printf("-1"); } else { printf(" -1"); } } else { set<int>::iterator it = money[want].begin(); int x = *it; if (pp == 0) { pp = 1; printf("%lld", x); } else { printf(" %lld", x); } for (int j = 1; j <= 3; j++) { if (money[j].find(x) != money[j].end()) { money[j].erase(x); } } } } //system("pause"); return 0; }
#include<list> #include<string.h> #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<string> #include<cstring> #include<vector> #include<map> #include<deque> #include<stack> #include<queue> #include<set> #include<iomanip> #include<cstdlib> #include<stdexcept> #include<fstream> #include<iterator> using namespace std; typedef long long ll; typedef unsigned long long ull; #define ll long long #define int long long const int maxn = 2e5+10; const int inf = 0x3f3f3f3f; const int Base = 131; const ll INF = 1ll << 62; //const double PI = acos(-1); const double eps = 1e-7; const int mod = 1e9+7; #define PI acos(-1) #define mem(a,b) memset(a,b,sizeof(a)) #define speed {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); } #define wait while(1){} #define debug cout<<"********"<<endl; // inline int gcd(int a, int b) { // while (b ^= a ^= b ^= a %= b); // return a; // } inline ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b); } long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power & 1) result = result * base % mod; power >>= 1; base = (base * base) % mod; } return result; } inline ll rd() { ll s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch>'9') { if (ch == '-')w = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar(); return s * w; } // freopen("C:/Users/ASUS/Desktop/Struct/in.txt", "r", stdin); //输入重定向,输入数据将从in.txt文件中读取 // freopen("C:/Users/ASUS/Desktop/Struct/out.txt", "w", stdout); //输出重定向,输出数据将保存out.txt文件中 // fclose(stdin);//关闭重定向输入 // fclose(stdout);//关闭重定向输出 int mp[310][310]; signed main(){ int n = rd(); int sum=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) mp[i][j]=rd(),sum+=mp[i][j]; int k = rd(); sum>>=1; while(k--){ int u,v,w; u=rd(),v=rd(),w=rd(); if(w>=mp[u][v]){ printf("%lld ",sum); continue; } sum-=(mp[u][v]-w); mp[u][v]=mp[v][u]=w; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(mp[i][j]>mp[i][u]+mp[u][v]+mp[v][j]){ sum-=mp[i][j]-(mp[i][u]+mp[u][v]+mp[v][j]); mp[i][j]=mp[i][u]+mp[u][v]+mp[v][j]; mp[j][i]=mp[i][u]+mp[u][v]+mp[v][j]; } } } printf("%lld ",sum); } //system("pause"); return 0; }
#include<list> #include<string.h> #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<string> #include<cstring> #include<vector> #include<map> #include<deque> #include<stack> #include<queue> #include<set> #include<iomanip> #include<cstdlib> #include<stdexcept> #include<fstream> #include<iterator> using namespace std; typedef long long ll; typedef unsigned long long ull; #define ll long long #define int long long const int maxn = 1e2+10; const int inf = 0x3f3f3f3f; const int Base = 131; const ll INF = 1ll << 62; //const double PI = acos(-1); const double eps = 1e-7; const int mod = 1e9+7; #define PI acos(-1) #define mem(a,b) memset(a,b,sizeof(a)) #define speed {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); } #define wait while(1){} #define debug cout<<"********"<<endl; // inline int gcd(int a, int b) { // while (b ^= a ^= b ^= a %= b); // return a; // } inline ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b); } long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power & 1) result = result * base % mod; power >>= 1; base = (base * base) % mod; } return result; } inline ll rd() { ll s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch>'9') { if (ch == '-')w = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar(); return s * w; } // freopen("C:/Users/ASUS/Desktop/Struct/in.txt", "r", stdin); //输入重定向,输入数据将从in.txt文件中读取 // freopen("C:/Users/ASUS/Desktop/Struct/out.txt", "w", stdout); //输出重定向,输出数据将保存out.txt文件中 // fclose(stdin);//关闭重定向输入 // fclose(stdout);//关闭重定向输出 char x[4000010]; signed main(){ int T; T=rd(); while(T--){ string s; string ss; cin>>s>>ss; if(s.size()>ss.size()){ string tmp=s; s=ss; ss=tmp; } int f=0; for(int i=1;i<=ss.size();i++){ int nlen=s.size()*i; if(nlen%ss.size()!=0)continue; int ff=1; for(int j=0;j<nlen;j++){ x[j]=s[j%s.size()]; if(x[j]!=ss[j%ss.size()]){ ff=0; break; } } if(ff==1){ f=i; break; } } // printf("*%d\n",f); // for(int i=0;i<f*s.size();i++) // printf("%c",x[i]); // printf("\n"); if(f==0)printf("-1\n"); else{ for(int i=0;i<f;i++){ cout<<s; } cout<<endl; } } //system("pause"); return 0; }
#include<list> #include<string.h> #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<string> #include<cstring> #include<vector> #include<map> #include<deque> #include<stack> #include<queue> #include<set> #include<iomanip> #include<cstdlib> #include<stdexcept> #include<fstream> #include<iterator> using namespace std; typedef long long ll; typedef unsigned long long ull; #define ll long long #define int long long const int maxn = 2e5+10; const int inf = 0x3f3f3f3f; const int Base = 131; const ll INF = 1ll << 62; //const double PI = acos(-1); const double eps = 1e-7; const int mod = 1e9+7; #define PI acos(-1) #define mem(a,b) memset(a,b,sizeof(a)) #define speed {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); } #define wait while(1){} #define debug cout<<"********"<<endl; // inline int gcd(int a, int b) { // while (b ^= a ^= b ^= a %= b); // return a; // } inline ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b); } long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power & 1) result = result * base % mod; power >>= 1; base = (base * base) % mod; } return result; } inline ll rd() { ll s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch>'9') { if (ch == '-')w = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar(); return s * w; } // freopen("C:/Users/ASUS/Desktop/Struct/in.txt", "r", stdin); //输入重定向,输入数据将从in.txt文件中读取 // freopen("C:/Users/ASUS/Desktop/Struct/out.txt", "w", stdout); //输出重定向,输出数据将保存out.txt文件中 // fclose(stdin);//关闭重定向输入 // fclose(stdout);//关闭重定向输出 signed main(){ int T; T=rd(); while(T--){ int n,k; n=rd(); k=rd(); if(n==k){ for(int i=1;i<=k;i++)printf("%lld ",i); printf("\n"); }else if(2*k-1==n){ for(int i=k;i>=1;i--)printf("%lld ",i); printf("\n"); }else{ for(int i=1;i<2*k-n;i++)printf("%lld ",i); for(int i=k;i>=2*k-n;i--)printf("%lld ",i); printf("\n"); } } //system("pause"); return 0; }
#include <string.h> #include <algorithm> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <deque> #include <fstream> #include <iomanip> #include <iostream> #include <iterator> #include <list> #include <map> #include <queue> #include <set> #include <stack> #include <stdexcept> #include <string> #include <vector> using namespace std; typedef long long ll; typedef unsigned long long ull; #define ll long long #define int long long const int maxn = 2e5 + 10; const int inf = 0x3f3f3f3f; const int Base = 131; const ll INF = 1ll << 62; // const double PI = acos(-1); const double eps = 1e-7; const int mod = 1e9 + 7; #define PI acos(-1) #define mem(a, b) memset(a, b, sizeof(a)) #define speed \ { \ ios::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0); \ } #define wait \ while (1) \ { \ } #define debug cout << "********" << endl; // inline int gcd(int a, int b) { // while (b ^= a ^= b ^= a %= b); // return a; // } inline ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } long long fastPower(long long base, long long power) { long long result = 1; while (power > 0) { if (power & 1) result = result * base % mod; power >>= 1; base = (base * base) % mod; } return result; } inline ll rd() { ll s = 0, w = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') w = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar(); return s * w; } // freopen("C:/Users/ASUS/Desktop/Struct/in.txt", "r", stdin); // //输入重定向,输入数据将从in.txt文件中读取 // freopen("C:/Users/ASUS/Desktop/Struct/out.txt", "w", stdout); // //输出重定向,输出数据将保存out.txt文件中 fclose(stdin);//关闭重定向输入 // fclose(stdout);//关闭重定向输出 //最大值是+1加上去的,最小值是-1减下去的,所以最大值减去最小值+1就是出现过的不同数数量 //所以维护一个中间出现值得最大值前缀和和最小值前缀和就能求解 char s[maxn]; int pre[maxn]; int preMax[maxn],preMin[maxn]; int sufMax[maxn],sufMin[maxn]; signed main(){ int T = rd(); while(T--){ int n = rd(); int m = rd(); scanf("%s",s+1); int p = 0ll; pre[0] = 0ll; preMax[0] = 0ll; preMin[0] = 0ll; for(int i = 1; i <= n; i++){ if(s[i]=='-')p--; else p++; if(p > preMax[i-1])preMax[i] = p; else preMax[i] = preMax[i-1]; if(p < preMin[i-1])preMin[i] = p; else preMin[i] = preMin[i-1]; pre[i] = p; } p=0ll; sufMax[n+1] = 0ll; sufMin[n+1] = 0ll; for(int i = n; i >= 1; i--){ if(s[i] == '-')p=-1; else p=1; if(p + sufMax[i+1] > 0ll)sufMax[i] = p + sufMax[i+1]; else sufMax[i] = 0ll; if(p + sufMin[i+1] < 0ll)sufMin[i] = p + sufMin[i+1]; else sufMin[i] = 0ll; } while(m--){ int l = rd(); int r = rd(); int Max = max(max(0ll,preMax[l-1]),sufMax[r+1] + pre[l-1]); int Min = min(min(0ll,preMin[l-1]),sufMin[r+1] + pre[l-1]); printf("%lld\n",Max - Min + 1); } } //system("pause"); return 0; }

浙公网安备 33010602011771号