日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2016 CCPC 杭州

發(fā)布時間:2023/12/6 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2016 CCPC 杭州 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

A - ArcSoft's Office Rearrangement

均分石子。
好像怎么分答案都一樣,于是模擬一遍。

#include <bits/stdc++.h>using namespace std; typedef long long ll;template<typename T> inline void read(T &x){ x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f; }template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);} template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);} template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}ll a[100005],n,k,x; ll s;int main(){//freopen("in.txt","r",stdin);int T,cas=1;cin>>T;while(T--){read(n,k);s=0;for(int i=1;i<=n;i++)read(a[i]),s+=a[i];if(s%k!=0){printf("Case #%d: -1\n",cas++);continue;}ll cmp = s / k;ll ans = 0;for(int i=1;i<=n;i++){if(a[i]==cmp) continue;if(a[i]<cmp){if(a[i]+a[i+1]<=cmp){a[i+1]=a[i]+a[i+1];ans++;} else {a[i+1]=a[i+1]+a[i]-cmp;ans+=2;}} else {ll tmp = a[i] / cmp;ll tt = a[i] % cmp;if(tt!=0){ans+=2;a[i+1]+=tt;}ans+=tmp-1;}}printf("Case #%d: ",cas++);cout<<ans<<endl;}return 0; }

B - Bomb

Tarjan之后算一下不同scc里面的cost。

#include <bits/stdc++.h>using namespace std; typedef long long ll;struct infonode {ll x,y,r,d; }info[2005];struct tarjan {const static int maxn = 2e4+7;const static int maxm = 2e6+7;struct Edge {int to,nxt;Edge(){}Edge(int _to,int _nxt):to(_to),nxt(_nxt){}}edge[maxm];int head[maxn],tot,n;int Low[maxn],DFN[maxn],Stack[maxn],Belong[maxn];int Index,top;int scc;int num[maxn];bool Instack[maxn];int Min[maxn];inline void init(int n) {tot = 0;this->n=n;memset(head,-1,sizeof head);}inline void addedge(int u,int v) {edge[tot]=Edge(v,head[u]);head[u]=tot++;}void Tarjan(int u) {int v;Low[u] = DFN[u] = ++Index;Stack[top++] = u;Instack[u] = true;for(int i=head[u];i!=-1;i=edge[i].nxt){v = edge[i].to;if(!DFN[v]){Tarjan(v);Low[u]=min(Low[u],Low[v]);} else if(Instack[v] && Low[u]>DFN[v]){Low[u]=DFN[v];}}if(Low[u]==DFN[u]){scc++;do{v=Stack[--top];Instack[v]=false;Belong[v]=scc;num[scc]++;}while(v!=u);}}int indeg[maxn];inline ll solve(int n){memset(DFN,0,sizeof DFN);memset(num,0,sizeof num);memset(Instack,0,sizeof Instack);Index = scc = top = 0;for(int i=1;i<=n;i++)if(!DFN[i]) Tarjan(i);memset(indeg,0,sizeof indeg);//if(scc==1) return 0;for(int u=1;u<=n;u++)for(int i=head[u];i!=-1;i=edge[i].nxt){int v=edge[i].to;if(Belong[u]!=Belong[v]){indeg[Belong[v]]++;}}memset(Min,63,sizeof Min);for(int i=1;i<=n;i++)Min[Belong[i]]=min((ll)Min[Belong[i]],info[i].d);ll ret = 0;for(int i=1;i<=scc;i++)if(indeg[i]==0)ret += (ll)Min[i];return ret;} } g;int n,cas=1;template<typename T> inline void read(T &x){ x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f; }template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);} template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);} template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}int main(){//freopen("in.txt","r",stdin);int T;read(T);while(T--){read(n);g.init(n);for(int i=1;i<=n;i++)read(info[i].x,info[i].y,info[i].r,info[i].d);for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++){ll dist = (ll)(info[i].x-info[j].x)*(info[i].x-info[j].x)+(info[i].y-info[j].y)*(info[i].y-info[j].y);if(dist<=info[i].r*info[i].r){g.addedge(i,j);}if(dist<=info[j].r*info[j].r){g.addedge(j,i);}}ll ans = g.solve(n);printf("Case #%d: ",cas++);cout<<ans<<endl;}return 0; }

C - Car

模擬分數(shù),否則卡精度,因為涉及多次除被除除。。。

#include <bits/stdc++.h> #define maxn 100050 using namespace std; typedef long long LL; int t,n; int a[maxn]; int Case=1; int main(){//freopen("in.txt","r",stdin);scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);LL fenzi=a[n]-a[n-1],fenmu=1;LL time=1;for(int i=n-1;i>=1;i--){LL d=a[i]-a[i-1];fenmu*=d;LL tmp=fenmu/fenzi;if(fenmu%fenzi!=0) tmp++;time+=tmp;fenzi=d;fenmu=tmp;}printf("Case #%d: %lld\n",Case++,time);}return 0; }

D - Difference

每個k預處理一半,然后用中途相遇法,就是類似尺取。

#include <bits/stdc++.h>using namespace std; typedef long long ll;ll a[10][100005],b[10][100005]; ll base[11]; ll P[11][11];template<typename T> inline void read(T &x){ x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f; }template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);} template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);} template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}void init(){base[0]=1;for(int i=1;i<=10;i++)base[i]=base[i-1]*10ll;for(int i=0;i<=9;i++){P[i][1]=i;for(int j=2;j<=9;j++)P[i][j]=P[i][j-1]*i;}for(int kk=1;kk<=9;kk++){for(int i=0;i<=99999;i++){a[kk][i]=P[i%10][kk]+P[i%100/10][kk]+P[i%1000/100][kk]+P[i%10000/1000][kk]+P[i%100000/10000][kk]-(ll)i*100000ll;b[kk][i]=P[i%10][kk]+P[i%100/10][kk]+P[i%1000/100][kk]+P[i%10000/1000][kk]+P[i%100000/10000][kk]-i;}}for(int i=1;i<=9;i++){sort(a[i],a[i]+100000);sort(b[i],b[i]+100000);} }int main(){//freopen("in.txt","r",stdin);init();int T,k,cas=1;ll x;cin>>T;while(T--){read(x,k);ll res = 0;for(int l=0,r=99999;l<=99999 && r;){if(a[k][l]+b[k][r]>x)r--;else if(a[k][l]+b[k][r]<x)l++;else {ll l1=0,r1=0;ll t1=a[k][l];ll t2=b[k][r];while(a[k][l]==t1 && l<=99999) l++,l1++;while(b[k][r]==t2 && r!=0) r--,r1++;res += l1*r1;}}if(x==0) res--;printf("Case #%d: ",cas++);cout<<res<<endl;}return 0; }

F - Four Operations

貪心+枚舉。

#include <bits/stdc++.h>using namespace std; typedef long long ll;int cas=1; char s[55];int main(){//freopen("in.txt","r",stdin);int T;scanf("%d",&T);while(T--){scanf("%s",s+1);int len=strlen(s+1);ll ans = -INT_MAX;for(int i=1;i<=len-4;i++){for(int j=i+1;j<=len-3;j++){ll A=0,B=0,C=0,D=0,E=0;for(int c=1;c<=i;c++)A=A*10ll+s[c]-'0';for(int c=i+1;c<=j;c++)B=B*10ll+s[c]-'0';C=s[j+1]-'0';D=s[j+2]-'0';for(int c=j+3;c<=len;c++)E=E*10ll+s[c]-'0';ll tmp = A + B - C * D / E;ans = max(ans,tmp);}}printf("Case #%d: ",cas++);cout<<ans<<endl;}return 0; }

K - Kingdom of Obsession

二分圖匹配,建立匹配邊就行。
若有交合部分,s<n
實際上可以由(1...n)-(s+1...s+n)變成(1...s)-(n+1,...,n+s),中間部分自己匹配。

#include <bits/stdc++.h>using namespace std; typedef long long ll;const int maxn = 1005;int matches[maxn];int link[maxn][maxn]; bool used[maxn]; int n,s;bool find(int x){for(int j=1;j<=n;j++){if(link[x][j] && used[j]==false){used[j]=1;if(matches[j]==0 || find(matches[j])){matches[j]=x;return 1;}}}return 0; }int main(){//freopen("in.txt","r",stdin);int T,cas=1;scanf("%d",&T);while(T--){scanf("%d%d",&n,&s);if(s==0){printf("Case #%d: Yes\n",cas++);continue;}if(n>s) swap(n,s);if(n>1000) printf("Case #%d: No\n",cas++);else {memset(link,0,sizeof link);memset(matches,0,sizeof matches);for(int i=s+1;i<=s+n;i++){for(int j=1;j<=n;j++)if(i%j==0)link[j][i-s]=1;}int res = 0;for(int i=1;i<=n;i++){memset(used,0,sizeof used);if(find(i)) res++;}if(res==n){printf("Case #%d: Yes\n",cas++);} else {printf("Case #%d: No\n",cas++);}}}return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/foreignbill/p/7875880.html

總結(jié)

以上是生活随笔為你收集整理的2016 CCPC 杭州的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 狠狠婷婷| 国产999久久久 | 777久久久精品一区二区三区 | 一区二区三区四区亚洲 | 无码日本精品xxxxxxxxx | 国产精品系列在线播放 | 天天射狠狠干 | 青青青青青青草 | 日韩在线免费视频 | 少妇精品高潮欲妇又嫩中文字幕 | 亚洲成av | av网址在线免费观看 | 69xxx免费视频 | 久久av高潮av无码av喷吹 | 色婷婷婷婷| 日韩中文字幕网站 | 精品熟妇一区二区三区 | 天天爽夜夜爽夜夜爽精品视频 | 操人视频网站 | 日本精品视频网站 | 少女忠诚电影高清免费 | 欧美久久久久久久久久久久久久 | 黄色免费小视频 | 成人四色| 久久成人国产精品入口 | 欧美天天影院 | av一级黄色| 影音先锋成人资源 | 色婷婷欧美 | 99精品黄色 | 亚洲天堂性 | 少妇黄色片 | 用力使劲高潮了888av | av影片在线 | 久精品国产 | 亚洲视频综合 | 91在现看| 成年人的黄色片 | 免费看h网站 | 蜜臀av在线免费观看 | 一区视频 | 91操人视频 | 日韩欧美成人一区 | 欧美成性色 | 综合色影院 | 亚洲视频一区二区三区在线观看 | 色大师av一区二区三区 | 亚洲综合影视 | 日本精品一区在线观看 | 毛片视频网址 | 国产精华一区二区三区 | 国产日韩一区二区三免费高清 | 亚洲精品成a人 | 91久久精品夜夜躁日日躁欧美 | 涩涩视频网站在线观看 | 欧美日韩成人网 | 色污网站| 一区二区成人在线 | 久久av红桃一区二区小说 | 免费av播放 | 激情精品 | 福利社午夜影院 | 91在线无精精品白丝 | 乌克兰做爰xxxⅹ性视频 | 大地资源二中文在线影视免费观看 | 人人看人人爽 | 91精品国产99久久久久久 | 一区二区三区精品在线 | www,超碰| 岛国av噜噜噜久久久狠狠av | 中文字幕精品久久久久人妻红杏1 | 亚洲精品国产91 | 五月天青青草 | 99在线无码精品入口 | 久久无码人妻丰满熟妇区毛片 | 超碰成人免费 | 成人性毛片 | 久久精品视频18 | 亚洲一区二区三区免费 | 亚欧乱色 | 岛国大片在线免费观看 | 91快射| 国产精品久久久久久久久毛片 | 国产欧美一区二区三区鸳鸯浴 | 偷自拍| 国产精品2018 | 亚洲视频在线免费播放 | 99视频在线免费观看 | 色噜噜成人| 性综艺节目av在线播放 | 韩国美女啪啪 | 奇米精品一区二区三区在线观看 | 高hhhhh| 天堂网一区二区三区 | 中文精品在线观看 | 日日骚一区二区 | 西方裸体在线观看 | 美女久久久久久 | av在线观|