2020-10-10为了准备CCPC,师兄下午拉了场ICPC练习让我们模拟,负责读题的菜鸡晚上回来重新做了模拟场上有思路的题QAQ
文章目录
A - Berstagram
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
const int MAX=1e5+7;
map<int,int>mp;
int h[MAX],l[MAX],a[MAX];
int main(){
ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int n,m;cin>>n>>m;
for(int i=1;i<=n;i++)mp[i]=h[i]=l[i]=a[i]=i;
while(m--){
int x,y,ind;cin>>x;
ind=mp[x];
if(ind==1)continue;
y=a[ind-1];
swap(a[ind],a[ind-1]);
mp[x]=ind-1; mp[y]=ind;
h[x]=min(h[x],ind-1); l[x]=max(l[x],ind-1);
h[y]=min(h[y],ind); l[y]=max(l[y],ind);
}
for(int i=1;i<=n;i++)cout<<h[i]<<" "<<l[i]<<endl;
return 0;
}
B - The Feast and the Bus
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
ll a[10005];
int main(){
ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int n,k,x;cin>>n>>k;
for(int i=0;i<n;i++)cin>>x,a[x]++;
sort(a+1,a+1+k);
ll ans=LLONG_MAX;
for(int i=a[k];i<=(a[k-1]+a[k]);i++){
int l=1,r=k,tmp=0;
while(l<=r){
if(l<r&&(a[l]+a[r])<=i)l++,r--;
else r--;
tmp++;
}
ans=min(ans,1ll*i*tmp);
}
cout<<ans;
return 0;
}
F - Data Center
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
const ll inf=0x3f3f3f3f;
int main(){
ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);
ll n,ans=inf;cin>>n;
for(ll i=1;i*i<=n;i++)
if(n%i==0)ans=min(ans,2*(i+n/i));
cout<<ans;
return 0;
}
H - Happy Birthday
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
const int inf=0x3f3f3f3f;
int main(){
ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
vector<int>c(10,0);
for(int i=0;i<10;i++)cin>>c[i];
int mn=inf,id=-1;
for(int i=1;i<=9;i++){
if(mn>c[i]){
mn=c[i]; id=i;
}
}
if(mn<=c[0])
for(int i=1;i<=mn+1;i++)cout<<id;
else {
cout<<1;
for(int i=1;i<=c[0]+1;i++)cout<<0;
}
cout<<endl;
}
return 0;
}
J - The Parade
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
const int MAX=1e6+7;
ll a[MAX],n,k;
bool check(ll mid){
ll r=0,cnt=0;
for(int i=1;i<=n;i++){
if(a[i]+cnt<mid)cnt=0;
r+=(a[i]+cnt)/mid;
cnt=(a[i]+cnt)%mid;
}
if(r>=k)return 1;
return 0;
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i];
ll l=1,r=0x3f3f3f3f3f3f3f,ans=0;
while(l<=r){
ll mid=(l+r)/2;
if(check(mid))ans=mid,l=mid+1;
else r=mid-1;
}
cout<<k*ans<<endl;
}
return 0;
}
L - Divide The Students
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
int main(){
ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
int a,b,c; cin>>a>>b>>c;
if(a<c) swap(a,c);
int x=a/2,y=a-a/2,z=c;
int h=max(y,z);
int sum=3*h-x-y-z;
if(b<=sum) cout<<h<<endl;
else{
b-=sum;
cout<<h+b/3+(b%3?1:0)<<endl;
}
}
return 0;
}
N - Wires
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
struct edge{
ll to,id;
};
map<ll,vector<edge>>mp;
map<ll,bool>vis;
vector<pair<ll,ll> >ans;
int f;
void dfs(ll x){
vis[x]=1;
ll cnt=0;
for(auto &it:mp[x]){
if(!vis[it.to]){
dfs(it.to);
cnt++;
}
}
if(!cnt&&!f){
f=1;
ans.push_back({mp[x][0].id,x});
}
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--){
mp.clear();vis.clear(); ans.clear();
ll n;cin>>n;
for(ll i=1;i<=n;i++){
ll u,v;cin>>u>>v;
mp[u].push_back({v,i});
mp[v].push_back({u,i});
vis[u]=vis[v]=0;
}
for(auto it:vis){
if(!vis[it.first]){
f=0;
dfs(it.first);
}
}
if(ans.size()<=1)
cout<<0<<endl;
else {
cout<<ans.size()-1<<endl;
for(int i=1;i<ans.size();i++)
cout<<ans[i].first<<" "<<ans[i].second<<" "<<ans[0].second<<endl;
}
}
return 0;
}