img
牛客周赛 Round 4
A
直接模拟即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include<bits/stdc++.h> using namespace std; using ll=long long; #define rep(i,a,n) for(int i=a;i<=n;i++) #define frep(i,a,n) for(int i=a;i>=n;i--) #define int long long const int N=1e5+100; #define PII pair<int,int> #define lowbit(x) (x&(-x)) const int mod=1e9+7; signed main() { int n,k; cin>>n>>k; if(k*3>n) { cout<<-1<<'\n'; return 0; } rep(i,1,k) { cout<<"you"; } rep(i,3*k+1,n) { cout<<'u'; } return 0; }
|
B
细细分个类,应该很快。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include<bits/stdc++.h> using namespace std; using ll=long long; #define rep(i,a,n) for(int i=a;i<=n;i++) #define frep(i,a,n) for(int i=a;i>=n;i--) #define int long long const int N=1e5+100; #define PII pair<int,int> #define lowbit(x) (x&(-x)) const int mod=1e9+7; signed main() { int n; cin>>n; if(n%3==0) { cout<<n/3-1<<'\n'; } else { cout<<n/3*2; } return 0; }
|
C
可以先考虑排序,有一个后面的变成负数,那么前面都会是0的,然后记录即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| #include<bits/stdc++.h> using namespace std; using ll=long long; #define rep(i,a,n) for(int i=a;i<=n;i++) #define frep(i,a,n) for(int i=a;i>=n;i--) #define int long long const int N=1e5+100; #define PII pair<int,int> #define lowbit(x) (x&(-x)) const int mod=1e9+7; const double pai=acos(-1.0); #define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); #define LF(x) fixed<<setprecision(x) int a[N];
int sum=1e9;
int ans=0; signed main() { ios; int n,k; cin>>n>>k; rep(i,1,n) { cin>>a[i]; } sort(a+1,a+1+n); int sum_x=0,sum_y=0; int j=1; rep(i,1,k) { int opt,x; cin>>opt>>x; if(opt==1) { sum_x+=x; sum_y+=x; } else { sum_y-=x; sum_x-=x; while(j<=n&&a[j]+sum_y<=0) { j++; } if(sum_x<0) { sum_x=0; } } } int sum=0; rep(i,j,n) { sum=(sum+a[i]%mod)%mod; sum%mod; } sum=(sum+sum_y%mod*(n-j+1)%mod+sum_x%mod*(j-1)%mod)%mod; cout<<sum<<'\n'; return 0; }
|
D
直接用vector模拟即可
注意先放一个数的因子,再放一个数的因子,再乘起来就可以。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include<bits/stdc++.h> using namespace std; using ll=long long; #define int long long #define rep(i,a,n) for(int i=a;i<=n;i++) #define frep(i,a,n) for(int i=a;i>=n;i--) const int N=1e5+100; #define PII pair<int,int> #define lowbit(x) (x&(-x)) const int mod=1e9+7; vector<int>a; vector<int>b; vector<int>ans; signed main() { int x,y; cin>>x>>y; rep(i,1,sqrt(x)) { if(x%i==0) { a.push_back(i); a.push_back(x/i); } } rep(i,1,sqrt(y)) { if(y%i==0) { b.push_back(i); b.push_back(y/i); } } rep(i,0,a.size()-1) { rep(j,0,b.size()-1) { ans.push_back(a[i]*b[j]); } } sort(ans.begin(),ans.end()); ans.erase(unique(ans.begin(),ans.end()),ans.end()); cout<<ans.size()<<"\n"; rep(i,0,ans.size()-1) cout<<ans[i]<<" "; cout<<'\n'; return 0; }
|
img