726
官方题解
A - Arithmetic Array
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
inline void solve(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int sum=0;
int k;
for(int i=1;i<=n;i++){
cin>>k;
sum+=k;
}
if(sum==n) cout<<"0"<<endl;
else if(sum<n) cout<<"1"<<endl;
else cout<<sum-n<<endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
B - Bad Boy
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
inline void solve(){
ll t;
cin>>t;
while(t--){
ll n,m,i,j;
cin>>n>>m>>i>>j;
cout<<"1 1 "<<n<<" "<<m<<endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
C - Challenging Cliffs
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
ll dp[N];
inline void solve(){
ll t;
cin>>t;
while(t--){
ll n;
cin>>n;
for(int i=1;i<=n;i++) cin>>dp[i];
if(n==1) cout<<dp[1]<<endl;
else if(n==2){
if(dp[1]>dp[2]) swap(dp[1],dp[2]);
cout<<dp[1]<<" "<<dp[2]<<endl;
}
else{
sort(dp + 1, dp + 1 + n);
int pos;
int minn = inf;
for (int i = 1; i < n; i++) {
if (abs(dp[i] - dp[i + 1]) < minn) {
minn = abs(dp[i] - dp[i + 1]);
pos = i;
}
}
for (int i = pos + 1; i <= n; i++) cout << dp[i] << " ";
for (int i = 1; i <= pos; i++) cout << dp[i] << " ";
cout << endl;
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
D - Deleting Divisors
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
int dp[N];
bool vis[N];
inline void solve(){
int t;
cin>>t;
while(t--){
ll n;
cin>>n;
if(n==1){
cout<<"Bob"<<endl;
continue;
}
// double p=log(n);
// double to=log(2);
// ll q=p/to;
ll q=0;
bool flag=0;
ll nn=n;
while(nn){
if(nn%2==0){
q++;
nn/=2;
}
else break;
}
if(nn==1){
if(q&1) cout<<"Bob"<<endl;
else cout<<"Alice"<<endl;
}
else{
if(n&1) cout<<"Bob"<<endl;
else cout<<"Alice"<<endl;
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
E1 - Erase and Extend (Easy Version)
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
string ans[5111];
inline void solve(){
int n,k;
cin>>n>>k;
string s;
cin>>s;
int len=s.size();
string str="";
for(int i=0;i<len;i++){
str+=s[i];
string a="";
int siz=str.size();
int kk=k;
while(kk){
if(siz<=kk) a+=str,kk-=siz;
else{
for(int j=0;j<kk;j++) a+=str[j];
kk=0;
}
}
//cout<<a<<endl;
ans[i]=a;
}
sort(ans,ans+n);
cout<<ans[0]<<endl;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
E2 - Erase and Extend (Hard Version) (补)
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
inline void solve(){
int n,k;
cin>>n>>k;
string s;
cin>>s;
int pos=0;
string str;
str+=s[0];
for(int i=1;i<n;i++){
if(s[i]>s[pos]) break;
str+=s[i];
if(s[i]==s[pos]) pos++;
else pos=0;
}
while(pos){
str.pop_back();
pos--;
}
int len=str.size();
//cout<<str<<endl;
for(int i=0;i<k;i++) cout<<str[i%len];
cout<<endl;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
F - Figure Fixing(补)
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
vector<ll>vp;
vector<vector<ll>>G;
bool flag;
void DFS(ll v,ll s){
if(vp[v]){
if(s+vp[v]==3) flag=1;
return ;
}
vp[v]=s;
for(auto i:G[v]) DFS(i,3-s);
}
inline void solve(){
ll t;
cin>>t;
while(t--){
ll n,m;
cin>>n>>m;
G.assign(n,{});
flag=0;
//for(ll i=0;i<n;i++) G.eb();
vector<ll>dp(n);
for(auto &i:dp) cin>>i;
ll res=0;
ll k;
for(auto &i:dp){
cin>>k;
i-=k;
res+=i%2;
}
//cout<<":::"<<endl;
ll u,v;
while(m--){
cin>>u>>v;
u--;
v--;
G[u].eb(v);
G[v].eb(u);
}
//cout<<"**"<<endl;
if(res&1){
cout<<"NO"<<endl;
continue;
}
vp.assign(n,0);
DFS(0,1);
if(flag){
cout<<"YES"<<endl;
continue;
}
ll l=0,r=0;
for(int i=0;i<n;i++){
if(vp[i]==1) l+=dp[i];
else r+=dp[i];
}
if(l==r) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}