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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【2012百度之星/资格赛】F:百科蝌蚪团

發(fā)布時(shí)間:2024/7/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【2012百度之星/资格赛】F:百科蝌蚪团 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
時(shí)間限制: 1000ms????? 內(nèi)存限制: 65536kB 描述

百度百科有一支神奇的隊(duì)伍,他們叫自己“百科蝌蚪團(tuán)”。為了更好的讓蝌蚪團(tuán)的成員們安排工作,百度百科的運(yùn)營(yíng)團(tuán)隊(duì)定出了一個(gè)24小時(shí)制的時(shí)間表。例如:
1.????每個(gè)蝌蚪團(tuán)成員工作時(shí)長(zhǎng)相同;
2.????必須安排蝌蚪團(tuán)成員在他們方便的時(shí)間段工作;
3.????蝌蚪團(tuán)成員安排時(shí)間最小安排時(shí)間節(jié)點(diǎn)(開始工作或停止工作)為半小時(shí),比如04:00或04:30,而不是04:15;
4.????蝌蚪團(tuán)成員一天在百度百科工作的時(shí)間是有上限的,他們會(huì)根據(jù)自己的情況給出上限。
5.????在特定時(shí)間段內(nèi)必須有一定數(shù)量的蝌蚪團(tuán)成員工作,以保證百度百科不斷的進(jìn)步
請(qǐng)幫運(yùn)營(yíng)團(tuán)隊(duì)計(jì)算一下,能保持24小時(shí)穩(wěn)定在崗的蝌蚪團(tuán)最少成員的數(shù)量。如果有2個(gè)蝌蚪團(tuán)成員工作結(jié)束,同時(shí)另2個(gè)蝌蚪團(tuán)成員開始工作,這段時(shí)間都算有2各成員穩(wěn)定在崗。

輸入
輸入有多組,每組測(cè)試數(shù)據(jù)以一個(gè)整數(shù)N開頭(1 ≤ N ≤ 50),表示蝌蚪團(tuán)的成員數(shù)。緊接著,我們會(huì)有N個(gè)數(shù)據(jù)塊,每一個(gè)數(shù)據(jù)塊對(duì)應(yīng)了一名蝌蚪團(tuán)成員的日程情況。
每個(gè)數(shù)據(jù)塊以兩個(gè)整數(shù)開始,分別為K(1 ≤ K ≤ 50)和M(1 ≤ M ≤ 1440),用空格隔開。K表示這個(gè)數(shù)據(jù)塊對(duì)應(yīng)蝌蚪團(tuán)成員方便的時(shí)間段的數(shù)量,M表示這個(gè)成員愿意每天在百度百科工作的最長(zhǎng)分鐘數(shù)。接下去的K行中,每行包括兩個(gè)時(shí)間,分別表示成“HH:MM”的格式,以空格分隔,分別對(duì)應(yīng)了該蝌蚪團(tuán)成員一個(gè)方便的時(shí)間段的開始時(shí)間、結(jié)束時(shí)間;例如09:00 10:00表明他在早上九點(diǎn)到十點(diǎn)的時(shí)間段是方便的,可以在百度百科工作。如果兩個(gè)時(shí)間相同,則說明這個(gè)他全天都是方便的。
最后一組數(shù)據(jù)的N為0,表示輸入結(jié)束。
輸出
對(duì)于每組數(shù)據(jù),輸出為一個(gè)整數(shù),占一行。表示能保持24小時(shí)穩(wěn)定在崗的蝌蚪團(tuán)最少成員的數(shù)量。
樣例輸入
5 1 720 18:00 12:00 1 1080 00:00 23:00 1 1080 00:00 20:00 1 1050 06:00 00:00 1 360 18:00 00:00 3 1 540 00:00 00:00 3 480 08:00 10:00 09:00 12:00 13:00 19:00 1 420 17:00 00:00 3 1 1440 00:00 00:00 1 720 00:00 12:15 1 720 12:05 00:15 0
樣例輸出
2 1 1
轉(zhuǎn)載網(wǎng)上的思路:求最大流。? 題目中說守衛(wèi)只能在整點(diǎn)或者整半點(diǎn)的時(shí)候交換工作,這是一個(gè)很明顯的暗示。
將每個(gè)守衛(wèi)看成點(diǎn),一天二十四個(gè)小時(shí),分成48個(gè)點(diǎn),如果一個(gè)守衛(wèi)能在某半個(gè)小時(shí)連線,就將其與該半個(gè)小時(shí)的點(diǎn)連條線。
再添加一個(gè)源點(diǎn),與每個(gè)守衛(wèi)連線,權(quán)值就是守衛(wèi)總共能工作的時(shí)間,添加一個(gè)匯點(diǎn),與每半個(gè)小時(shí)連線。
這樣就是一個(gè)最大流問題,最大流有很多中解決方法,四天中有兩天就是為了調(diào)那個(gè)ISAP算法……
但是仔細(xì)想想,會(huì)出現(xiàn)一個(gè)問題:
假設(shè)時(shí)間點(diǎn)到匯點(diǎn)的權(quán)值無窮大,如果守衛(wèi)一能在00:30和1:00工作,守衛(wèi)二也能在00:30和1:00工作,那么守衛(wèi)一和守衛(wèi)二在同時(shí)在00:30和守衛(wèi)在00:30,守衛(wèi)二在1:00工作的最大流是一樣的,但題目要求使得一天二十四小時(shí)都有警衛(wèi)工作。所以我們需要枚舉時(shí)間點(diǎn)到匯點(diǎn)的權(quán)值,做N次最大流。
另外還有一個(gè)需要注意的地方,源點(diǎn)到守衛(wèi)點(diǎn)的權(quán)值要設(shè)為T/30,而守衛(wèi)點(diǎn)到時(shí)間點(diǎn)的權(quán)值為1。為了這個(gè)我調(diào)了一個(gè)晚上……如果權(quán)值設(shè)為分鐘數(shù),守衛(wèi)點(diǎn)到時(shí)間點(diǎn)的權(quán)值為30的話,那么可能出現(xiàn)守衛(wèi)在一個(gè)時(shí)間點(diǎn)工作小于30分鐘的情況。

#include<iostream> #include<cstdio> #include<algorithm> using namespace std; #include<memory.h>#define maxn 102 #define MAX 0xfffffff int d[maxn],g[maxn][maxn],f[maxn][maxn],pre[maxn],map[maxn][maxn],sum[maxn],current[maxn]; int n,m,num,mm; struct node {int x,y; }seg[1000],mytime[1000];int cmp(const node &a,const node &b) {return a.x<b.x; } void rev_bfs(int t) {int queue[maxn],flag[maxn];int head,tail,i;memset(sum,0,sizeof(sum));for (i=0;i<=n+49;++i){d[i]=n+49;sum[n+49]++;}sum[n+49]--;sum[0]++;d[t]=0;queue[1]=t;flag[t]=1;head=1;tail=1;memset(flag,0,sizeof(flag));while (head<=tail){for (i=0;i<=n+49;++i)if (flag[i]==0&&g[i][queue[head]]>0){queue[++tail]=i;d[i]=d[queue[head]]+1;sum[n+49]--;sum[d[i]]++;flag[i]=1;}head++;} } void augment(int s,int t) {int i,min;min=MAX;for (i=t;i!=s;i=pre[i])if (g[pre[i]][i]<min)min=g[pre[i]][i];for (i=t;i!=s;i=pre[i]){g[pre[i]][i]-=min;;g[i][pre[i]]+=min;f[pre[i]][i]+=min;f[i][pre[i]]-=min;} } int retreat(int *u,int s) {int v,min;min=n+49;for (v=0;v<=n+49;++v)if (g[*u][v]>0&&d[v]<min)min=d[v];sum[d[*u]]--;if ((sum[d[*u]])==0&&d[*u]<=n+49)return 0;d[*u]=min+1;sum[d[*u]]++;current[*u]=0;if (*u!=s)*u=pre[*u];return 1; } void ISAP(int s,int t) {int u,v;rev_bfs(t);u=s;while (d[s]<n+50){ for (v=current[u];v<=n+49;v++) if (g[u][v]>0&&d[u]==d[v]+1)break;if (v<=n+49){current[u]=v;pre[v]=u;u=v;if (u==t){augment(s,t);u=s;}}else if(retreat(&u,s)==0)return;} } void solve() {int i,j,a,b,c,d,min,t,k,ans,max,st,en,temp;while(scanf("%d",&n)!=EOF){if(!n) break;memset(map,0,sizeof(map));;for (i=1;i<=n;++i){scanf("%d %d",&m,&t);map[48][i+48]=t/30;num = mm = 0;for(j=1;j<=m;++j){scanf("%d:%d %d:%d",&a,&b,&c,&d);if (a==c && b==d){for (k=0;k<48;++k)map[i+48][k]=1;continue;}if (!c && !d){++num;seg[num].x=a*60+b , seg[num].y=1440;}else if (a*60+b>c*60+d){++num;seg[num].x=a*60+b , seg[num].y=1440;++num;seg[num].x=0 , seg[num].y=c*60+d;}else{++num;seg[num].x=a*60+b , seg[num].y=c*60+d;}}if(num==0)continue;sort(seg+1,seg+num+1,cmp);st=seg[1].x;en=seg[1].y;seg[num+1].x=1500;seg[num+1].y=1600;for (j=2;j<=num+1;++j){a=seg[j].x;b=seg[j].y;if (st<=a && a<=en&&en<b)en=b;else if(a>en){mm++;mytime[mm].x=st , mytime[mm].y=en;st=a;en=b;}}for (j=1;j<=mm;++j){a=mytime[j].x/60;b=mytime[j].x-60*a;c=mytime[j].y/60;d=mytime[j].y-60*c;if (a==c){if (b==0&&d>=30)map[i+48][a*2]=1;}else{if (b>0&&b<=30)b=30;if (b>30) {a++;b=0;}if (d<30)d=0;if (d>30)d=30;while (a!=c||b!=d){map[i+48][a*2+b/30]=1;b+=30;if (b==60){a++;b=0;}}}}}max=MAX;for (j=0;j<48;++j){temp=0;for (k=49;k<n+49;++k)if (map[k][j]>0)++temp;if (temp<max)max=temp;}ans=0;for (j=1;j<=max;++j){memset(g,0,sizeof(g));memset(f,0,sizeof(f));memset(current,0,sizeof(current));for (i=0;i<=49+n;++i)for (k=0;k<=49+n;++k)g[i][k]=map[i][k];for (i=0;i<48;++i)g[i][n+49]=j;ISAP(48,n+49);min=MAX;for (i=0;i<48;++i)if (f[i][n+49]<min)min=f[i][n+49];if (min>ans)ans=min;}printf("%d\n",ans);} } int main(void) {solve();return 0; }


總結(jié)

以上是生活随笔為你收集整理的【2012百度之星/资格赛】F:百科蝌蚪团的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 九九九九精品九九九九 | 国产视频大全 | 91精品一区二区三区四区 | 国产一级视频在线播放 | 日韩国产精品久久 | 日日夜夜操av | 亚洲精品国产精品国自产观看浪潮 | 国产情侣一区二区三区 | 欧美女同在线 | 久久精品国产av一区二区三区 | 动漫美女露胸网站 | 无码人妻久久一区二区三区不卡 | 精品久久久久久久久久 | 国产美女一区 | av网站天堂 | 狠狠干快播 | 熟睡侵犯の奶水授乳在线 | 国产绿帽刺激高潮对白 | 欧美一二三视频 | 欧美18免费视频 | 欧美tickle狂笑裸体vk | 国产精品视频在线观看 | 亚洲乱码国产乱码精品精软件 | 久久大综合 | 亚洲天堂美女视频 | 黄色免费在线网站 | 那个网站可以看毛片 | 亚洲网站在线 | 中国人妖和人妖做爰 | 免费看黄色一级片 | 国产一级视频免费观看 | 欧美另类tv| av高清免费 | 欧美美女性视频 | 亚洲污片| 天堂av最新网址 | 国产日韩欧美在线 | 成人在线免费网址 | 丰满人妻一区二区三区46 | 午夜小视频在线播放 | 国产视频一区在线播放 | 在线成人看片 | 影音先锋激情在线 | 日本亚洲黄色 | www.人人干 | 色噜噜狠狠一区二区三区牛牛影视 | 高潮白浆女日韩av免费看 | 97国产在线观看 | 国产女人和拘做受视频免费 | 欧美男人天堂 | 午夜激情视频 | 男男车车的车车网站w98免费 | 男女激情大尺度做爰视频 | 国产老熟女伦老熟妇露脸 | 日韩福利在线播放 | 日本久久亚洲 | 国内视频精品 | 亚洲第一色站 | 久久艹这里只有精品 | 亚洲熟女少妇一区二区 | 免费中文字幕视频 | 黄色大片免费观看视频 | 性xxxx欧美老肥妇牲乱 | 亚洲福利影视 | 欧美乱妇高清无乱码 | 免费日皮视频 | 蕾丝视频污 | 欧美一卡 | 日韩特黄毛片 | www婷婷av久久久影片 | 精品免费囯产一区二区三区 | 极品尤物在线观看 | 国内自拍第三页 | 女人扒开腿让男人桶爽 | youjizz日韩 | 老子影院午夜伦不卡大全 | 美女主播在线观看 | 天堂中文字幕av | 一区二区在线视频免费观看 | 人人上人人干 | 奇米视频在线观看 | 污视频免费在线观看 | 国产极品美女在线 | 免费成人深夜小野草 | 手机在线看片1024 | 国产欧美日韩高清 | 成人免费黄色网 | 日韩精品av一区二区三区 | 久久精品色妇熟妇丰满人妻 | 自拍偷拍福利视频 | 日本成人在线免费 | av三级网站| 99热这里只有精品在线观看 | 日本成人一区 | www..com国产| 24小时日本在线www免费的 | 好吊色欧美一区二区三区视频 | 欧美一a一片一级一片 | xxxxav|