赞
踩
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e6+7; const int mod = 1e9+7; int t,n,m,k; int a[N],b[N]; vector<int> v1,v2; signed main(){ cin>>t; while(t--){ cin>>n>>k; for(int i =0 ; i < n ; i ++) cin>>a[i]; sort(a,a+n); int flag = 1; if(a[n-1] > k){ flag = 0; } if(flag) { cout<<"YES"<<endl; continue; } if(a[0]+a[1] <= k){ cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } } return 0; }
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e6+7; const int mod = 1e9+7; int t,n,m,k; int a[N],b[N]; vector<int> v1,v2; bool div(string s1,string p){ //cout<<s1<<" "<<p<<endl; if(s1.size()%p.size() == 0){ for(int i = 0 ; i < s1.size() ; i += p.size()){ for(int j = 0 ; j < p.size() ; j ++){ if(s1[i+j] != p[j]) return false; } } return true; } return false; } int getgcd(string s1,string s2){ string tmp = ""; int gcd = -1; for(int i = 0 ; i < s1.size() ; i ++){ tmp += s1[i]; if(div(s1,tmp) && div(s2,tmp)){ gcd = i+1; } } return gcd; } int GCD(int a,int b){ if(a < b) swap(a,b); return b == 0 ? a : GCD(b,a%b); } int lcm(int a,int b){ return a/GCD(a,b)*b; } signed main(){ cin>>t; while(t--){ string s1,s2; cin>>s1>>s2; int g = getgcd(s1,s2); if(g == -1){ cout<<-1<<endl; }else{ string tmp = s1.substr(0,g); int lc = lcm(s1.size()/g,s2.size()/g); for(int i = 0 ; i < lc ; i ++){ cout<<tmp; } cout<<endl; } } return 0; }
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e6+7; const int mod = 1e9+7; int t,n,m,k; int a[N],b[N]; vector<int> v1,v2; signed main(){ cin>>t; while(t--){ cin>>n>>k; int res = n-k; int tmp = k-res-1; for(int i = 1 ; i <= tmp ; i ++){ cout<<i<<" "; } for(int i = k ; i > tmp ; i --){ cout<<i<<" "; } cout<<endl; } return 0; }
8 4
-+--+--+
1 8
2 8
2 5
1 1
样例解释:
1.empty program — x was only equal to 0;
2."-" — x had values 0 and −1;
3."---+" — x had values 0, −1, −2, −3, −2 — there are 4 distinct values among them;
4."+--+--+" — the distinct values are 1, 0, −1, −2.

#include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e6+7; const int mod = 1e9+7; int t,n,m,k; int a[N],b[N]; int res[N]; vector<int> v1,v2; struct node{ int maxx,minn,now; }seg[N],seg2[N]; signed main(){ cin>>t; while(t--){ cin>>n>>k; string s; cin>>s; int maxx = 0; int minn = 0; int now = 0; for(int i = 0 ; i < n ; i ++){ // 从前往后维护 前半部分 if(s[i] == '-') now -= 1; if(s[i] == '+') now += 1; maxx = max(maxx,now); minn = min(minn,now); seg[i].maxx = maxx; seg[i].minn = minn; seg[i].now = now; } maxx = 0; minn = 0; now = 0; for(int i = n-1 ; i >= 0 ; i --){ // 从后往前维护 后半部分 if(s[i] == '-') now -= 1; if(s[i] == '+') now += 1; maxx = max(maxx,now); minn = min(minn,now); seg2[i].maxx = now-minn; seg2[i].minn = now-maxx; seg2[i].now = 0; } // 防止 越界 seg[n].maxx = seg2[n].maxx = 0; seg[n].minn = seg2[n].minn = 0; for(int i = 0 ; i < k ; i ++){ int x,y; cin>>x>>y;x--,y--;x--,y++; int maxx = 0; int minn = 0; // 合并两个区间,计算最大值和最小值。因为前面可能为空。所以maxx,minn初始都为0。 if(x >= 0){ maxx = max(seg[x].maxx,seg[x].now+seg2[y].maxx); minn = min(seg[x].minn,seg[x].now+seg2[y].minn); }else{ maxx = seg2[y].maxx; minn = seg2[y].minn; } res[i] = maxx-minn+1; } for(int i = 0 ; i < k ; i ++){ cout<<res[i]<<endl; } } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。