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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2015 German Collegiate Programming Contest (GCPC 15)

發布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2015 German Collegiate Programming Contest (GCPC 15) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2015 German Collegiate Programming Contest (GCPC 15)


B. Bounty Hunter II

給定一張DAG,求一種方案:用最少的路徑將所有點覆蓋。寫了按長度貪心,按出度的貪心。。。果斷掛了。下來搜了下題解,看到了二分圖。就懂了。。。把點拆開,每個出點最多允許連一個入點,反之也是這樣。那不就是二分圖最大匹配嗎?然后把用到的邊加進去,算一下聯通的鏈就行了,然后再考慮一下,既然是一條條鏈,把他們原先看作一條鏈,然后再斷開,斷開的地方加1,就是答案,斷開的位置一共就有 (點數-邊數-1) 個,那就解決了。

#include <bits/stdc++.h> #define pb push_back typedef long long ll; const int N = 1100; const int M = 1000002; const int inf = 0x3f3f3f3f; using namespace std; int n; vector<int> G[N]; int mch[N],nxt[N],used[N]; bool dfs(int u) {for(int i=0;i<G[u].size();++i) {int v = G[u][i];if(used[v]) continue;used[v] = 1;if(mch[v]==-1||dfs(mch[v])) {mch[v] = u;nxt[u] = v;return 1;}}return 0; } int hungray() {for(int i=0;i<=n;++i) mch[i] = nxt[i] = -1;int ans = 0;for(int i=1;i<=n;++i) {memset(used,0,sizeof(used));if(dfs(i)) ++ans;}return ans; } int main() {scanf("%d",&n);for(int i=1;i<=n;++i) {int m,x;scanf("%d",&m);for(int j=1;j<=m;++j)scanf("%d",&x),G[i].pb(x+1);}int ans = hungray();cout << n - ans << endl;return 0; }

E. Change of Scenery

就是讓你判斷一下是否有兩條長度相同的最短路。一開始的思路是,非嚴格次短路等于最短路,結果A*炸的很嚴重,然后看了下數據范圍,就寫了個暴力的枚舉最短路上的邊然后求次短路,各種優化還是TLE在test57了。然而這題換個思路不就是最短路計數嗎?直接在最短路的時候,維護到這點的最短路的數目就行了。然而注意到這個路徑數是非常大的,一開始沒有管他,讓long long自己溢出,覺得到1的可能性太小了吧。。。結果還真剛好溢出到了1。。。出題人真的是nb。。。于是多取了幾個模,就解決了。

#include <bits/stdc++.h> #define PII pair<int,int> #define MP make_pair typedef long long ll; const int N = 20000; const int M = 2000600; const ll inf = 10000000000LL; const ll P = 1e9 + 7; const ll P1 = 1e8 + 7; using namespace std; struct edge{int e,nxt;ll w;}E[M]; int cc,h[N]; void add(int u,int v,ll z) {E[cc].e=v;E[cc].w=z;E[cc].nxt=h[u];h[u]=cc;++cc; } int n,m,k,p[N],A[M],cnt;struct node{int x;ll d;node(){}node(int a,ll b){x=a;d=b;}bool operator < (const node a)const {return a.d < d;} };ll dis[N],num[N],num1[N]; int vis[N]; void dij() {for(int i=1;i<=n;++i)dis[i]=inf;priority_queue<node> q;q.push(node(1,0));dis[1]=0;num[1]=1;num1[1]=1;while(!q.empty()) {node tmp = q.top(); q.pop();int u=tmp.x;if(vis[u])continue;vis[u]=1;for(int i=h[u];~i;i=E[i].nxt) {int v=E[i].e;if(dis[v]>dis[u]+E[i].w) {dis[v]=dis[u]+E[i].w;num[v]=num[u];num1[v]=num1[u];q.push(node(v,dis[v]));}else if(dis[v]==dis[u]+E[i].w) {num[v]=(num[v]+num[u])%P;num1[v]=(num1[v]+num1[u])%P1;}}}return; }int main() {scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;++i) h[i]=-1;int x;for(int i=1;i<=k;++i) scanf("%d",&p[i]);for(int i=1;i<=m;++i) {int x,y;ll z;scanf("%d%d%I64d",&x,&y,&z);if(x>y) swap(x,y);add(x,y,z),add(y,x,z);}dij();if(num[n]!=1)puts("yes");else if(num1[n]!=1)puts("yes");else puts("no");return 0; }

F. Divisions

直接大數分解,然后約數個數定理

#include <bits/stdc++.h> typedef long long ll; #define inf 1000000000 using namespace std; ll read() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);} int n; ll x,mx; vector<ll> q; ll mul(ll a,ll b,ll p) {ll tmp=(a*b-(ll)((long double)a/p*b+1e-8)*p);return tmp<0?tmp+p:tmp; } ll pow(ll a,ll b,ll p) {ll ans=1;a%=p;for(ll i=b;i;i>>=1,a=mul(a,a,p))if(i&1)ans=mul(ans,a,p);return ans; } bool check(ll a,ll n,ll r,ll s) {ll ans=pow(a,r,n),p=ans;for(int i=1;i<=s;i++) {ans=mul(ans,ans,n);if(ans==1&&p!=1&&p!=n-1)return 1;p=ans;}if(ans!=1)return 1;return 0; } bool MR(ll n) {if(n<=1)return 0;if(n==2)return 1;if(n%2==0)return 0;ll r=n-1,s=0;while(r%2==0)r/=2,s++;for(int i=0;i<10;i++)if(check(rand()%(n-1)+1,n,r,s))return 0;return 1; } ll rho(ll n,ll c) {ll k=2,x=rand()%n,y=x,p=1;for(ll i=1;p==1;i++) {x=(mul(x,x,n)+c)%n;p=y>x?y-x:x-y;p=gcd(n,p);if(i==k)y=x,k+=k;}return p; } void solve(ll n) {if(n==1)return;if(MR(n)){mx=max(n,mx);return;}ll t=n;while(t==n)t=rho(n,rand()%(n-1)+1);solve(t);solve(n/t); } int main() {ll x,tmp=0,ans=1;scanf("%I64d",&x);while(x!=1){mx = 0;tmp=0;solve(x);while(x%mx==0)x/=mx,++tmp;ans=ans*(tmp+1);}cout << ans << endl;return 0; }

G. Extreme Sort

掃一遍

#include <bits/stdc++.h> typedef long long ll; using namespace std; int n,a[1055]; int main() {scanf("%d",&n);for(int i=1;i<=n;++i) {scanf("%d",&a[i]);}int f=0;for(int i=2;i<=n;++i) if(a[i-1]>a[i]){puts("no");f=1;break;}if(!f)puts("yes");return 0; }

H. Legacy Code

讀題惡心死了的水題

#include <bits/stdc++.h> #define pb push_back typedef long long ll; const int N = 555; const int M = 2000100; using namespace std; vector<int> G[N]; void add(int u,int v) {G[u].pb(v); } int n,m; string s[N],ts,fid[M]; vector<string> v[N];int ck(string s) {string t = "::PROGRAM";int c=t.size()-1;for(int i=c,j=s.size()-1;i>=0&&j>=0;--i,--j) {if(t[i]!=s[j]) return 0;}return 1; } map<string,int> id; queue<int> q; int cnt,vis[N]; void ins(string s) {if(id.find(s)==id.end()) {id[s] = ++cnt;fid[cnt] = s;if(ck(s)) vis[cnt]=1,q.push(cnt);} } void build() {for(int i=1;i<=n;++i)for(int j=0;j<v[i].size();++j){//add(id[s[i]],id[v[i][j]]);add(id[v[i][j]],id[s[i]]);} } int solve() {int ans = 0;while(!q.empty()) {int u = q.front(); q.pop();for(int i=0;i<G[u].size();++i) {int v=G[u][i];if(!vis[v]) {vis[v]=1;q.push(v);}}}for(int i=1;i<=cnt;++i)if(!vis[i]&&!ck(fid[i])) ++ans;return ans; } int main() {scanf("%d", &n);for(int i=1;i<=n;++i) {cin >> s[i] >> m;ins(s[i]);for(int j=1;j<=m;++j) {cin >> ts;v[i].pb(ts);ins(ts);}}build();printf("%d\n", solve());return 0; }

I. Milling machines

水題

#include <bits/stdc++.h> typedef long long ll; const int N = 555; using namespace std; int w,s,X,Y,mx[N],mp[20000][N]; int cal(int h,int s) {return min(h,Y-s); } int main() {scanf("%d%d%d%d",&w,&s,&X,&Y);for(int i=1;i<=w;++i)for(int j=1;j<=X;++j)scanf("%d",&mp[i][j]);for(int i=1;i<=s;++i) {for(int j=1;j<=X;++j) {int x;scanf("%d",&x);mx[j] = max(mx[j],x);}}for(int i=1;i<=w;++i) {int f=0;for(int j=1;j<=X;++j) {if(f)printf(" ");f=1;printf("%d",cal(mp[i][j],mx[j]));}puts("");}return 0; }

K. Upside down primes

按題意模擬。關鍵在于判素數,腦殘的用了大數素性測試,被卡的。。。然后寫了java的用自帶的測試,結果更涼。只用測兩個數啊,暴力就ok了啊。。。

#include <bits/stdc++.h> typedef long long ll; using namespace std;bool isp(ll n) {for(ll i=2;i*i<=n;i++) {if(n%i==0) return false;}return n!=1; } bool isp2(ll x) {if(x==1)return 0;if(x%2==0)return 0;for(ll i=2;i<x;++i)if(x%i==0)return 0;return 1; } int n,M[555]; char s[50]; int ckf() {for(int i=0;i<n;++i)if(M[s[i]]==-1)return 0;return 1; } ll fan() {ll ans=0;reverse(s,s+n);for(int i=0;i<n;++i){ll x=M[s[i]];ans = ans*10LL+x;}return ans; } int main() {M['0']=0;M['1']=1;M['2']=2;M['3']=-1;M['4']=-1;M['5']=5;M['6']=9;M['7']=-1;M['8']=8;M['9']=6;scanf(" %s",s);n=strlen(s);ll x=0;for(int i=0;i<n;++i)x=x*10LL+s[i]-'0';if(!isp(x)) {printf("no\n");}else if(!ckf()) {printf("no\n");}else {x = fan();if(!isp(x)) printf("no\n");else printf("yes\n");}return 0; }

總結:被水題場+模板題場干翻我是服氣的,下次讀完題再開始寫。。。英語閱讀能力太差了,根本不想看這題。。。

轉載于:https://www.cnblogs.com/RRRR-wys/p/9312673.html

總結

以上是生活随笔為你收集整理的2015 German Collegiate Programming Contest (GCPC 15)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91禁国产网站 | 色女人av | 少妇高潮惨叫久久久久久 | 美女被捅个不停 | 精品欧美乱码久久久久久1区2区 | 精品区| 美国一级特黄 | 久久久国产精品一区二区三区 | 91爱爱视频 | 一本久久道| 免费麻豆国产一区二区三区四区 | 久久国产精品免费看 | aaaa级片| 日韩一区二区三区免费在线观看 | 色视频一区 | 成人福利视频在线观看 | 一级作爱视频 | 按摩害羞主妇中文字幕 | 国产日韩精品一区 | 日韩国产欧美一区 | 影音先锋黄色资源 | 狠狠撸在线视频 | 福利一区二区 | 91看片就是不一样 | 香蕉视频在线网站 | 在线精品视频免费观看 | 欧美日韩在线观看一区 | 国产精品一区二区三区久久久 | 亚洲一区亚洲二区 | 中文久久久 | 性开放视频| 亚洲av日韩精品久久久久久久 | 亚洲天堂手机版 | 国产区高清| 91精品人妻一区二区 | 亚洲最新在线观看 | 在线观看黄色网页 | av一区二区三区在线观看 | 男人添女人下部高潮视频 | 中文字幕一区二区三区日韩精品 | 正在播放91| 日韩精品中文字幕在线观看 | 国色天香一区二区 | 欧美yyy | 欧美aa | 中文字幕免费av | 射久久久 | 日日摸夜夜 | 亚洲情侣在线 | 色盈盈影院 | 国产一区资源 | 好吊操av| 97成人资源 | 亚洲一区亚洲二区 | 中文字幕国产日韩 | 乌克兰极品av女神 | 粉嫩av国产一区二区三区 | 午夜家庭影院 | 熟妇人妻中文av无码 | 欧美在线视频观看 | 亚洲国产www | 久久久久久国产精品免费播放 | 免费看的毛片 | 色欧美片视频在线观看 | www.日韩.com| 涩涩久久 | 蜜桃视频在线观看污 | 男同毛片| av资源网址 | 日韩少妇裸体做爰视频 | av手机在线| 亚洲精品一区二区三区四区五区 | 国产制服在线 | 成年人的黄色片 | 久久视频一区二区 | 999在线视频 | 91在线看| 特级西西人体444www高清大胆 | 国产麻豆剧传媒精品国产av | 日本特黄视频 | 欧美天堂在线 | 欧美××××黑人××性爽 | 深夜小视频在线观看 | 99精品视频播放 | 亚洲精选中文字幕 | 欧美在线中文字幕 | 在线观看网址你懂的 | 少妇人妻综合久久中文字幕 | 三男一女吃奶添下面 | 久久波多野结衣 | av不卡在线观看 | 午夜时刻免费入口 | 波多野结衣亚洲视频 | 欧美在线观看www | 国产福利一区二区三区视频 | 王者后宫yin肉h文催眠 | 日韩三级在线免费观看 | 日韩黄色免费 | 久久精品一区二区国产 |