A26 贪心算法 P1190 [NOIP2010 普及组] 接水问题
视频链接:76 贪心算法 [NOIP2010 普及组] 接水问题_哔哩哔哩_bilibili
Luogu P1190 [NOIP2010 普及组] 接水问题
#include <iostream> #include <cstring> #include <algorithm> using namespace std; int n,m,w[10005]; //w:每人的接水量 int s[105]; //s:每个水龙头的出水量 int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&w[i]); for(int i=1,t; i<=n; i++){ t=1; // 找到出水量最少的水龙头 for(int j=2;j<=m;j++) if(s[t]>s[j]) t=j; s[t]+=w[i]; } int mx=0; for(int i=1;i<=m;i++) mx=max(mx,s[i]); printf("%d\n",mx); }
#include <iostream> #include <cstring> #include <algorithm> #include <queue> using namespace std; int n,m,w[10005]; //w:每人的接水量 priority_queue<int,vector<int>,greater<int> >s; //s:每个水龙头的出水量 int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&w[i]); for(int i=1;i<=m;i++) s.push(0); for(int i=1; i<=n; i++){ int t=s.top(); s.pop(); s.push(t+w[i]); } for(int i=1;i<m;i++) s.pop(); printf("%d\n",s.top()); }
Luogu P1376 [USACO05MAR] Yogurt factory 机器工厂
#include <iostream> #include <cstring> #include <algorithm> using namespace std; //上次的单价花费+s与当前单价花费做比较, //哪个花费更少,就取哪个。 int main(){ int n,s,c,y,last; long long ans=0; cin>>n>>s; for(int i=1;i<=n;i++){ cin>>c>>y; if(i==1) last=c; else last=min(last+s,c); ans+=last*y; } cout<<ans<<endl; return 0; }