Codeforces Round #565 (Div. 3) A B C E
生活随笔
收集整理的這篇文章主要介紹了
Codeforces Round #565 (Div. 3) A B C E
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Codeforces Round #565 (Div. 3)
A?Divide it!
由題可知,分別消掉1個2,3,5分別需要1,2,3的花費
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll q,n; int main(){cin>>q;while(q--){cin>>n;ll cnt=0;ll p=-1;int flag=0;while(p<cnt){p=cnt;if(n%2ll==0) {n=n/2ll;cnt++;}if(n%3==0){n=n/3ll;cnt+=2ll;}if(n%5ll==0){n=n/5ll;cnt+=3ll;}if(n==1) flag=1;}if(flag)cout<<cnt<<"\n";else cout<<"-1\n";}return 0; } View Code?
B?Merge it!
將ai=ai%3(1<=ai<=1e9),統計 0 1 2的個數,res=a[0]+(1+2的個數)+剩余的1的個數/3或者剩余2的個數/3
#include<bits/stdc++.h> using namespace std; typedef long long ll;int t,n,a[4]; int main(){cin>>t;while(t--){for(int i=0;i<=2;i++){a[i]=0;}cin>>n;int c,res;for(int i=0;i<n;i++){cin>>c;c=c%3;a[c]++;}if(a[1]>a[2]){a[1]=a[1]-a[2];res=a[2];res=res+a[1]/3;}else{res=a[1];a[2]=a[2]-a[1];res+=a[2]/3;}res=res+a[0];cout<<res<<"\n";}return 0; } View Code?
C?Lose it!
4,8,15,16,23,42 分別記為 1 2 3 4 5 6
b[i]表示有b[i]個從1到i連續的序列
if b[i-1]>0 那么b[i]++,b[i-1]--;
最后得到b[6]個從1到6連續的序列
需要刪除的數 n-b[6]*6
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e6;int n; int a[N],p[50],b[10]={0}; int main(){p[4]=1,p[8]=2,p[15]=3,p[16]=4,p[23]=5,p[42]=6;b[0]=N;cin>>n;int res=0;int c;for(int i=0;i<n;i++){cin>>c;if(b[p[c]-1]>0) b[p[c]]++,b[p[c]-1]--;}res=n-b[6]*6;cout<<res<<"\n";return 0; } View Code?
E?Cover it!
二分染色,dfs bfs 都行,選擇點少的顏色輸出
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+100;int t; int n,m; int vis[N]; int cnt[2]; struct Edge{int to,next; }e[N*2]; int head[N],tot; void addEdge(int u,int v){e[tot].to=v;e[tot].next=head[u];head[u]=tot++; }int dfs(int u,int c){vis[u]=c;cnt[c]++;for(int i=head[u];i!=-1;i=e[i].next){int v=e[i].to;if(vis[v]==-1){dfs(v,c^1);}} } int main(){std::ios::sync_with_stdio(false);cin>>t;while(t--){cin>>n>>m;memset(head,-1,sizeof(int)*(n+100));memset(vis,-1,sizeof(int)*(n+100));tot=0;cnt[0]=0,cnt[1]=0;int u,v;for(int i=0;i<m;i++){cin>>u>>v;addEdge(u,v);addEdge(v,u);}dfs(1,0);int c,d;if(cnt[0]>cnt[1]) c=1,d=cnt[1];else c=0,d=cnt[0];cout<<d<<"\n";for(int i=1;i<=n;i++){if(vis[i]==c) cout<<i<<" ";}cout<<"\n";}return 0; } View Code?
轉載于:https://www.cnblogs.com/YJing814/p/11004792.html
總結
以上是生活随笔為你收集整理的Codeforces Round #565 (Div. 3) A B C E的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一款回到顶部的 jQuery 插件,支持
- 下一篇: eclipse 安装反编译软件jadcl