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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

POJ1456贪心(set或者并查集区间合并)

發布時間:2025/6/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1456贪心(set或者并查集区间合并) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 給你n商品,每個商品有自己的價值還有保質期,一天最多只能賣出去一個商品,問最大收益是多少?


思路:
? ? ? 比較好想的貪心,思路是這樣,每一次我們肯定拿價值最大的,至于在那天拿當然是盡可能的往后拖了,因為可以把前面的時間留給一些快過期的用,這種貪心策略很容易想到,對于實現的時候我嘗試了兩種方法,首先把商品按照價格從大到小排序,一個是我以前常用的set容器,他可以直接取出一個大于等于x的最小值(只要加上符號功能就是取最小的最大了),先把所有的天數都當成資源放進set里,然后對于沒一個物品,如果可以買的話,那么就消耗離他保質期最近的那個沒有備用的天,這樣就行了,總的時間復雜度應該是O(n*log(n))的,可以接受,第二個方法我是用的并查集來處理區間合并,思路都是一樣,就是在處理資源(天)的時候用并查集優化時間,比如一開始一個區間 1 2 3 4當第3天用了之后那么第三天就和第2天合并算一天了 1 2 4,就是這樣每個天數的祖宗存的就是他左側第一個沒有用過的天數。這樣寫的話,如果用上路徑壓縮時間復雜度是O(n)的,比set快不少,如果不用路徑壓縮時間在邏輯上是O(n*n)的,但是剛剛我測試了下,跑了200+ac了。哎!這不重要。呵呵。




并查集+貪心 79ms
#include<stdio.h>
#include<algorithm>


#define N 10000 + 10


using namespace std;


typedef struct
{
? ? int p ,d;
}NODE;


NODE node[N];
int mer[N];


bool camp(NODE a ,NODE b)
{
? ? return a.p > b.p;
}


int finds(int x)
{
? ? return x == mer[x] ? x : mer[x] = finds(mer[x]);
}


int main ()
{
? ? int n ,ans ,i ,max;
? ? while(~scanf("%d" ,&n))
? ? {
? ? ? ? max = 0;
? ? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? ? {
? ? ? ? ? ? scanf("%d %d" ,&node[i].p ,&node[i].d);
? ? ? ? ? ? if(max < node[i].d) max = node[i].d;
? ? ? ? }
? ? ? ? for(i = 0 ;i <= max ;i ++)
? ? ? ? mer[i] = i;
? ? ? ? ans = 0;
? ? ? ? sort(node + 1 ,node + n + 1 ,camp);
? ? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? ? {
? ? ? ? ? ? int x = finds(node[i].d);
? ? ? ? ? ? if(!x) continue;
? ? ? ? ? ? int y = finds(x-1);
? ? ? ? ? ? mer[x] = y;
? ? ? ? ? ? ans += node[i].p;
? ? ? ? }
? ? ? ? printf("%d\n" ,ans);
? ? }
? ? return 0;
}














set+貪心 474ms
#include<set>
#include<stdio.h>
#include<algorithm>


#define N 10000 + 10


using namespace std;


typedef struct
{
? ? int p ,d;
}NODE;


NODE node[N];
set<int>myset;


bool camp(NODE a ,NODE b)
{
? ? return a.p > b.p;
}


int main ()
{
? ? int n ,i;
? ? while(~scanf("%d" ,&n))
? ? {
? ? ? ? int max = 0;
? ? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? ? {
? ? ? ? ? ? scanf("%d %d" ,&node[i].p ,&node[i].d);
? ? ? ? ? ? if(max < node[i].d) max = node[i].d;
? ? ? ? }
? ? ? ? myset.clear();
? ? ? ? myset.insert(0);
? ? ? ? for(i = 1 ;i <= max ;i ++)
? ? ? ? myset.insert(-i);
? ? ? ? sort(node + 1 ,node + n + 1 ,camp);
? ? ? ? int ans = 0;
? ? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? ? {
? ? ? ? ? ? int x = *myset.lower_bound(-node[i].d);
? ? ? ? ? ? if(!x) continue;
? ? ? ? ? ? ans += node[i].p;
? ? ? ? ? ? myset.erase(x);
? ? ? ? }
? ? ? ? printf("%d\n" ,ans);
? ? }
? ? return 0;
}





總結

以上是生活随笔為你收集整理的POJ1456贪心(set或者并查集区间合并)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美一区二区三区免费 | 欧美一卡二卡 | 深夜福利成人 | 精品理论片| 日本福利一区 | 欧美黄色大片网站 | 亚洲成人黄色片 | 婷婷激情五月综合 | jizzjizz中国精品麻豆 | 一区二区三区四区在线 | 一级免费观看视频 | 欧美亚洲专区 | 国产成人精品亚洲日本在线观看 | 亚洲欧洲自拍偷拍 | 久久最新| aaa午夜 | 91夜色 | 欧美激情校园春色 | 亚洲色图第一页 | 国产一区二区在线观看免费 | 亚洲熟妇av一区二区三区漫画 | 免费观看污网站 | 欧美黑人一级 | 亚洲熟女综合一区二区三区 | 69国产成人精品二区 | 亚洲精品乱码久久久久久写真 | 亚州男人天堂 | 黄色网址链接 | 成人做爰www看视频软件 | 麻豆 美女 丝袜 人妻 中文 | 国产视频一区三区 | 国产精品水嫩水嫩 | 女性裸体瑜伽无遮挡 | 波多野结衣50连登视频 | 亚洲图片一区二区 | 国产精品久久久久久久久久久久久久久久 | 免费在线h| 国产精品欧美久久久久天天影视 | 天堂一区 | 欧美综合在线观看 | 亚洲午夜一区二区三区 | 青青草在线免费视频 | 日韩乱码人妻无码中文字幕久久 | 91麻豆视频在线观看 | 奇米网888 | 奇米四色网 | 真人抽搐一进一出视频 | 精品视频 | 欧美aaa视频 | 国内爆初菊对白视频 | 久爱视频在线 | 欧美一区二区三区视频 | 国产亚洲精品精品国产亚洲综合 | 欧美一级大片 | 麻豆中文字幕 | 西野翔之公侵犯中文字幕 | 日本a在线 | 国产91精品久久久久久久 | 少妇与公做了夜伦理69 | 免费色片网站 | 国产中文字幕网 | 四虎黄色网 | 黑丝美女啪啪 | 91看片在线观看 | 色姑娘av| 国产激情四射 | 久久久久久久久久久久久久久久久 | 男男车车的车车网站w98免费 | 少妇一级淫片免费视频 | 精品国产三级片在线观看 | 亚洲视频精品在线观看 | 欧美视频在线观看免费 | 亚洲综合激情小说 | 日韩在线免费视频 | 桃色91 | 久久久久爱 | av中文资源在线 | 日本色片网站 | 免费h片在线观看 | 在线免费观看欧美大片 | 国产一区二区三区在线观看免费 | 婷婷爱五月天 | 国产精品区在线 | 国产日韩欧美成人 | 黄色av网站免费在线观看 | 日韩亚射吧 | 成人免费看片在线观看 | 欧美顶级少妇做爰hd | 欧美大色网 | 欧美亚洲综合在线 | 色综合中文综合网 | 亚洲一区成人 | 久久精品视频9 | 免费一区二区三区视频在线 | 香蕉视频成人在线 | 在线观看精品 | 久久精品国产亚洲av久一一区 | 午夜国产片 | 韩国三级hd中文字幕 |