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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【贪心】Sunscreen(poj 3614/luogu 2887)

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【贪心】Sunscreen(poj 3614/luogu 2887) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Sunscreen

poj 3614

luogu 2887

題目大意:

有n個人,每個人要求選一個價值在minniminn_iminni?maxximaxx_imaxxi?的物品,現在有m件物品,每件的價值是spfispf_ispfi?,可以選covericover_icoveri?次,問最多可以滿足多少個人的要求

輸入樣例

3 2 3 10 2 5 1 5 6 2 4 1

輸出樣例

2

數據范圍

1≤N,M≤25001 ≤N, M ≤ 25001N,M2500
1≤minSPFi≤maxSPFi≤1,0001 ≤ minSPFi ≤ maxSPF_i ≤ 1,0001minSPFimaxSPFi?1,000

解題思路:

先按每個人的minn按從大到小排一遍序,然后每個人都盡量選價值大的物品然后計算結果即可

代碼:

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,m,num,ans; struct rec {int minn,maxx; }s[3000]; struct recc {int spf,cover; }S[3000]; bool cmp(rec x,rec y){return x.minn>y.minn;}//從大到小 bool cmpp(recc x,recc y){return x.spf>y.spf;}//從大到小 int main() {scanf("%d %d",&n,&m);for(int i=1;i<=n;++i)scanf("%d %d",&s[i].minn,&s[i].maxx);for(int i=1;i<=m;++i)scanf("%d %d",&S[i].spf,&S[i].cover);sort(s+1,s+1+n,cmp);//排序sort(S+1,S+1+m,cmpp);for (int i=1;i<=n;++i){num=0;for(int j=1;j<=m;++j)if(S[j].cover&&S[j].spf<=s[i].maxx&&S[j].spf>=s[i].minn)//可以選{num=j;//選break;} if(num){S[num].cover--;//數量減一ans++;//結果加一}}printf("%d",ans); } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【贪心】Sunscreen(poj 3614/luogu 2887)的全部內容,希望文章能夠幫你解決所遇到的問題。

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