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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

POJ3614奶牛晒阳光DINIC或者贪心

發布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ3614奶牛晒阳光DINIC或者贪心 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? n個區間,m種點,每種點有ci個,如果一個點的范圍在一個區間上,那么就可以消耗掉一個區間,問最多可以消耗多少個區間,就是這n個區間中,有多少個可能被抵消掉。


思路:
? ? ? 方法不唯一,首先可以用貪心來做,看到網上說的都是優先隊列的解法,我說下我的想法,我是直接sort排序后暴力(其實根本達不到n*m*l的時間復雜度),我先把所有老牛也就是區間按照上端點(***不是他們說的下端點)從小打到排序,然后在把護膚品按照第一個值從小到大排序,然后就是給給每一個護膚品盡可能找到一個點,同時這個點的右端點盡可能的小,為了后面別的護膚品留下更大的機會,下面分析枚舉代碼
第i個護膚品的第j個和第k只奶牛


for(i = 1 ;i <= m ;i ++)
for(j = 1 ;j <= sp[i].c ;j ++)
{
? ? for(k = 1 ;k <= n ;k ++)
? ? if(!mark[k] && cow[k].l <= sp[i].p && cow[k].r >= sp[i].p)
? ? {
? ? ? ? ? ans ++;
? ? ? ? ? mark[k] = 1;
? ? ? ? ? break; ?
? ? }
? ? if(k == n + 1) 我個人覺得我加的這個地方可以很好的優化掉很多數據,這么加的
? ? break; ? ? ? ? 依據是如果第i種護膚品的第j個不能給剩下的奶牛用了,那么第i種
} ? ? ? ? ? ? ? ? ?的其他的也沒用了,直接break




還有就是這個題目可以最大流來做,至于用那種算法,自己隨意吧,我用的是DINC,建圖比較簡單,我不想說了,如果你做過流的話一下就能想到建圖了,其實我感覺這個題目用最大流有點懸,但是AC了,因為邊的條數可能達到 (2500*2500+5000)* 2 = 12510000。

貪心 #include<stdio.h> #include<string.h> #include<algorithm>#define N 2500 + 10using namespace std;typedef struct {int l ,r; }COW;typedef struct {int p ,c; }SP;COW cow[N]; SP sp[N]; int mark[N];bool camp1(COW a ,COW b) {return a.r < b.r; }bool camp2(SP a ,SP b) {return a.p < b.p; }int main () {int n ,m, i ,j ,k;while(~scanf("%d %d" ,&n ,&m)){for(i = 1 ;i <= n ;i ++)scanf("%d %d" ,&cow[i].l ,&cow[i].r);for(i = 1 ;i <= m ;i ++)scanf("%d %d" ,&sp[i].p ,&sp[i].c);sort(cow + 1 ,cow + n + 1 ,camp1);sort(sp + 1 ,sp + m + 1 ,camp2);memset(mark ,0 ,sizeof(mark));int ans = 0;for(i = 1 ;i <= m ;i ++)for(j = 1 ;j <= sp[i].c ;j ++){for(k = 1 ;k <= n ;k ++)if(!mark[k] && cow[k].l <= sp[i].p && cow[k].r >= sp[i].p){ans ++;mark[k] = 1;break;}if(k == n + 1)break;}printf("%d\n" ,ans);}return 0; }DINIC#include<queue> #include<stdio.h> #include<string.h>#define N_node 2500 + 10 #define N_edge (2500 * 2500 + 5000) * 2 + 100 #define INF 1000000000using namespace std;typedef struct {int to ,cost ,next; }STAR;typedef struct {int x ,t; }DEP;typedef struct {int l ,r; }COW;typedef struct {int p ,c; }SP;COW cow[N_node]; SP sp[N_node]; STAR E[N_edge]; int list[N_node] ,list2[N_node] ,tot; int deep[N_node]; DEP xin ,tou;int minn(int x ,int y) {return x < y ? x : y; }void add(int a ,int b ,int c) {E[++tot].to = b;E[tot].cost = c;E[tot].next = list[a];list[a] = tot;E[++tot].to = a;E[tot].cost = 0;E[tot].next = list[b];list[b] = tot; }bool BFS_Deep(int s ,int t ,int n) {memset(deep ,255 ,sizeof(deep));xin.x = s ,xin.t = 0;deep[xin.x] = xin.t;queue<DEP>q;q.push(xin);while(!q.empty()){tou = q.front();q.pop();for(int k = list[tou.x] ;k ;k = E[k].next){int to = E[k].to;if(deep[to] != -1 || !E[k].cost)continue;xin.x = to ,xin.t = tou.t + 1;deep[xin.x] = xin.t;q.push(xin);}}for(int i = 0 ;i <= n ;i ++)list2[i] = list[i];return deep[t] != -1; }int DFS_Flow(int s ,int t ,int flow) {if(s == t) return flow;int nowflow = 0;for(int k = list2[s] ;k ;k = E[k].next){int to = E[k].to;int c = E[k].cost;list2[s] = k;if(deep[to] != deep[s] + 1 || !c)continue;int tmp = DFS_Flow(to ,t ,minn(c ,flow - nowflow));nowflow += tmp;E[k].cost -= tmp;E[k^1].cost += tmp;if(flow == nowflow) break;}if(!nowflow) deep[s] = 0;return nowflow; }int DINIC(int s ,int t ,int n) {int ans = 0;while(BFS_Deep(s ,t ,n)){ans += DFS_Flow(s ,t ,INF);}return ans; }int main () {int n ,m, i ,j;while(~scanf("%d %d" ,&n ,&m)){memset(list ,0 ,sizeof(list));tot = 1;for(i = 1 ;i <= n ;i ++){scanf("%d %d" ,&cow[i].l ,&cow[i].r);add(0 ,i ,1);}for(i = 1 ;i <= m ;i ++){scanf("%d %d" ,&sp[i].p ,&sp[i].c);add(i + n ,m + n + 1 ,sp[i].c);}for(i = 1 ;i <= n ;i ++)for(j = 1 ;j <= m ;j ++)if(cow[i].l <= sp[j].p && cow[i].r >= sp[j].p)add(i ,j + n ,1);printf("%d\n" ,DINIC(0 ,n + m + 1 ,n + m + 1));}return 0;}



《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的POJ3614奶牛晒阳光DINIC或者贪心的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色网址你懂得 | 午夜资源 | 色视频国产 | 色综合一区二区 | 欧美精品一区二区三区久久久竹菊 | 欧洲最强rapper网站直播 | 视频网站在线观看18 | 超碰一区二区三区 | 久久久精品一区二区 | 国产a一级 | 日日草夜夜草 | 久久久久久国产 | 久久99国产精品 | 三级影片在线免费观看 | 无码人妻精品丰满熟人区 | 澳门黄色网 | 6080毛片| 啪在线视频 | 亚洲成a人在线观看 | 在线黄色大片 | 欧美日韩综合一区二区 | 中文字幕在线观看亚洲 | 17c一起操| 亚洲欧洲av在线 | 99热97| 精品产国自在拍 | 黑人番号 | 69福利视频| 99国产精品久久久 | 国产亚洲天堂网 | 在线观看免费黄网站 | 欧美另类videosbestsex日本 | 伦理一级片 | 精品一区二区三区免费看 | 免费a级| 欧美成人国产va精品日本一级 | 国产一区二区精彩视频 | 国产亚洲一区二区三区 | 黄色三级网络 | 激烈娇喘叫1v1高h糙汉 | 性网站在线观看 | 久久久久亚洲av成人网人人软件 | 少妇激情网 | 亚洲三区精品 | 我要看一级黄色片 | 亚洲一区第一页 | 久久久无码人妻精品一区 | 日韩女优在线视频 | 草草影院最新 | 国产精品无码一区二区无人区多人 | 国产在线精品一区二区 | 91叉叉叉 | 亚洲av永久无码精品三区在线 | 精品国偷自产国产一区 | 久久久看| 一级成人av | 亚州精品国产精品乱码不99按摩 | 亚洲精品网站在线播放gif | 亚洲色图图片 | 欧美经典一区 | 国产69精品久久久久999小说 | 成人av在线电影 | 日韩欧美三级在线 | 自拍亚洲综合 | 欧美黄色性 | 亚州三级| 处女朱莉第一次 | 精品一二三四 | 日本在线看片 | 黄网站在线播放 | 日产欧产va高清 | 日韩综合一区二区 | 极品美女高潮出白浆 | 日韩免费一区二区 | 精品在线一区二区三区 | 夜夜精品一区二区无码 | 日本免费一区二区三区最新 | 亚洲免费观看视频 | 黄视频国产| 激情综合丁香五月 | 公肉吊粗大爽色翁浪妇视频 | 亚洲最大在线观看 | 日本亲与子乱ay中文 | 久久男人网 | 国产在线不卡 | 色大师在线观看 | www.x日本| 欧美一区二区在线免费观看 | 丰满少妇一区 | 福利片网址 | 波多一区| 91情侣视频 | 欧美黄视频在线观看 | 国产精品麻豆果冻传媒在线播放 | 日少妇av | 91福利视频免费观看 | 久色资源 | 午夜爽爽爽 | 亚洲一区二区三区91 |