Roundgod and Milk Tea 贪心
生活随笔
收集整理的這篇文章主要介紹了
Roundgod and Milk Tea 贪心
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個題好像可以用一種類似與置換的貪心方法來做~
sum記為剩余奶茶,一開始sum等于奶茶和
ans記錄已經喝的奶茶數
不用排序,我們就從前往后直接處理,考慮的是每一個班最多可以喝多少杯奶茶
就是從剩余的奶茶里邊減去本班的奶茶數(不讓喝自己的)
但是這時候我們貪心考慮之間已經喝的奶茶都是盡量優先喝的是該班
但是這個時候你就能知道,本班這些人能喝多少杯奶茶了~
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<stack>
#include<vector>
#include<map>
#include<queue>#define myself i,l,r
#define lson i<<1
#define rson i<<1|1
#define Lson i<<1,l,mid
#define Rson i<<1|1,mid+1,r
#define half (l+r)/2
#define inff 0x3f3f3f3f
#define lowbit(x) x&(-x)
#define PI 3.14159265358979323846
#define min4(a, b, c, d) min(min(a,b),min(c,d))
#define min3(x, y, z) min(min(x,y),min(y,z))
#define pii make_pair
#define pr pair<int,int>
const int dir[4][2] = {0, -1, -1, 0, 0, 1, 1, 0};
typedef long long ll;
const ll inFF = 9223372036854775807;
typedef unsigned long long ull;
using namespace std;
const int maxn = 1e6 + 5;struct node {ll num, tea;
} a[maxn];int main() {int t, n;cin >> t;while (t--){cin >> n;ll sum=0,ans=0,c,x;for (int i = 1; i <= n; i++){scanf("%lld %lld", &a[i].num, &a[i].tea);sum+=a[i].tea;}for(int i=1;i<=n;i++){c=sum-(max(0LL,a[i].tea-ans));//可以喝的奶茶,就是這個x=min(c,a[i].num);//本班最多喝多少sum-=x;ans+=x;}printf("%lld\n",ans);}return 0;
}
?
總結
以上是生活随笔為你收集整理的Roundgod and Milk Tea 贪心的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P3168 [CQOI2015]任务查询
- 下一篇: 2019南昌网络赛 C题,Hello 2