日韩性视频-久久久蜜桃-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或者并查集区间合并)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 图书馆的女友动漫在线观看 | 日本少妇久久久 | 91成人福利视频 | 俺去操 | 久久婷婷综合色 | 日本高清免费aaaaa大片视频 | 男男肉耽高h彩漫 | xx视频在线 | 亚洲黄色精品 | 制服丝袜av电影 | 欧美体内谢she精2性欧美 | www,xxx69 japan | 国产乱码精品一区二区三区中文 | 午夜剧场欧美 | 青青草在线播放 | 久久亚洲精精品中文字幕早川悠里 | 日韩成人av电影 | 豆花视频成人 | 亚洲av毛片一区二二区三三区 | 中文字幕免费在线看线人动作大片 | 红桃视频一区二区三区免费 | 欧美做受高潮中文字幕 | 在线观看av网 | 日韩在线视频精品 | 中文天堂在线观看 | 国产真实乱人偷精品 | 成人午夜免费福利 | 小优视频污 | 国产主播喷水 | 国产素人av| 青草超碰 | 国产一区二区三区四区三区四 | 国产无套精品一区二区 | 精品国产乱码一区二区 | 国产做爰免费视频观看 | 人妻激情偷乱视频一区二区三区 | 日本狠狠操 | 欧美国产综合视频 | 三级成人在线 | 一本久久综合亚洲鲁鲁五月天 | 午夜伦理av | 亚洲av永久无码精品国产精品 | 插插射射 | 欧美一级一区二区 | 少妇一级淫免费播放 | 全黄一级男人和女人 | 涩涩视屏| av最新版天堂资源在线 | 国产视频入口 | 欧美另类一区 | 日韩精品麻豆 | 黑帮大佬和我的三百六十五天 | 偷偷操不一样 | 可以看毛片的网站 | 色婷婷av一区二区三区大白胸 | 手机看片日韩欧美 | 超碰不卡| 久在线播放 | 久久精品无码毛片 | 精品一二三区久久aaa片 | 看黄色网址| 免费a大片| 黄色片在线免费 | 亚洲人吸女人奶水 | 黄瓜视频在线免费看 | 国产人久久人人人人爽 | 欧美成人免费一级人片100 | 成年人黄色免费视频 | 香蕉人妻av久久久久天天 | 二区三区 | 午夜剧场福利社 | 高清乱码免费看污 | 123毛片| 色哟哟一区二区 | 91精品国产综合久久香蕉 | 午夜不卡在线观看 | 香蕉婷婷 | 欧美成年人 | 激情自拍偷拍 | 国产精品国语对白 | 男人插入女人下面视频 | 日韩精品极品视频免费观看 | 午夜a视频 | 国内偷拍av | 538国产精品一区二区免费视频 | 国精产品一区一区三区有限公司杨 | 一区二区三区中文视频 | 成人av影院 | 午夜粉色视频 | 欧美老女人xx| 成人91网站 | 免费黄色欧美 | 欧美日韩丝袜 | 日本成人免费观看 | 欧美性大交 | 欧美大波大乳巨大乳 | 黄色aa毛片 | 免费在线播放 | 久久依人|