喝奶茶最大值(不能喝自己班级的)2019 Multi-University Training Contest 8--hdu杭电第8场(Roundgod and Milk Tea)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6667
题意:
有 n个班级,每个班级有a个人、b个奶茶,每个班的人不能喝自己的奶茶,只能喝别人班的奶茶,问你最多有多少人喝到奶茶。
思路:
明显一道贪心题:
n=3
3 4 min=3
4 2 min=2
4 2 min=2
首先根据min值从大到小排序(先消除大的更优),两个min值是肯定可以消掉一个的,ans+=min*2,而且消到最后最多只有一个a、b都不为0。
然后就是要先判一下最后一个能不能消去。
最后就是除了最后一个其他a、b的总和就可以加起来了,取个min,ans+=min 就可以了。
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
#include <cstdio>//sprintf islower isupper
#include <cstdlib>//malloc exit strcat itoa system("cls")
#include <iostream>//pair
#include <fstream>
#include <bitset>
//#include <map>
//#include<unordered_map>
#include <vector>
#include <stack>
#include <set>
#include <string.h>//strstr substr
#include <string>
#include <time.h>//srand(((unsigned)time(NULL))); Seed n=rand()%10 - 0~9;
#include <cmath>
#include <deque>
#include <queue>//priority_queue<int, vector<int>, greater<int> > q;//less
#include <vector>//emplace_back
//#include <math.h>
//#include <windows.h>//reverse(a,a+len);// ~ ! ~ ! floor
#include <algorithm>//sort + unique : sz=unique(b+1,b+n+1)-(b+1);+nth_element(first, nth, last, compare)
using namespace std;//next_permutation(a+1,a+1+n);//prev_permutation
#define fo(a,b,c) for(register int a=b;a<=c;++a)
#define fr(a,b,c) for(register int a=b;a>=c;--a)
#define mem(a,b) memset(a,b,sizeof(a))
#define pr printf
#define sc scanf
#define ls rt<<1
#define rs rt<<1|1
void swapp(int &a,int &b);
double fabss(double a);
int maxx(int a,int b);
int minn(int a,int b);
int Del_bit_1(int n);
int lowbit(int n);
int abss(int a);
//const long long INF=(1LL<<60);
const double E=2.718281828;
const double PI=acos(-1.0);
const int inf=(<<);
const double ESP=1e-;
const int mod=(int)1e9+;
const int N=(int)1e6+; struct node
{
long long a,b;
long long mi;
friend bool operator<(node a,node b)
{
return a.mi<b.mi;
}
}P[N]; int main()
{
// freopen("D:\\QQ DATA\\1659826587\\FileRecv\\hdu-multi2019-8 5个账号 - 复件\\data\\k.in","r",stdin);
int T;
sc("%d",&T);
while(T--)
{
int n;
sc("%d",&n);
fo(i,,n)
{
sc("%lld%lld",&P[i].a,&P[i].b);
P[i].mi=min(P[i].a,P[i].b);
}
sort(P+,P++n);
long long ans=;
int pos=n;
for(int i=n-;i>=;--i)
{
long long temp=min(P[i].mi,P[pos].mi);
ans+=temp*;
P[i].mi-=temp;P[i].a-=temp;P[i].b-=temp;
P[pos].mi-=temp;P[pos].a-=temp;P[pos].b-=temp;
if(P[i].mi)
pos=i;
}
sort(P+,P++n);
struct node temp=P[n];
long long x=,y=;
for(int i=;i<=n-;++i)
x+=P[i].a,y+=P[i].b;
if(x&&temp.b)
{
long long tt=min(x,temp.b);
ans+=tt;
x-=tt;temp.b-=tt;
}
if(y&&temp.a)
{
long long tt=min(y,temp.a);
ans+=tt;
y-=tt;temp.a-=tt;
}
long long xx=min(x,y);
ans+=xx;
x-=xx;y-=xx;
pr("%lld\n",ans);
}
// fclose(stdin);
return ;
} /**************************************************************************************/ int maxx(int a,int b)
{
return a>b?a:b;
} void swapp(int &a,int &b)
{
a^=b^=a^=b;
} int lowbit(int n)
{
return n&(-n);
} int Del_bit_1(int n)
{
return n&(n-);
} int abss(int a)
{
return a>?a:-a;
} double fabss(double a)
{
return a>?a:-a;
} int minn(int a,int b)
{
return a<b?a:b;
}
喝奶茶最大值(不能喝自己班级的)2019 Multi-University Training Contest 8--hdu杭电第8场(Roundgod and Milk Tea)的更多相关文章
- HDU 6319.Problem A. Ascending Rating-经典滑窗问题求最大值以及COUNT-单调队列 (2018 Multi-University Training Contest 3 1001)
		
2018 Multi-University Training Contest 3 6319.Problem A. Ascending Rating 题意就是给你长度为k的数列,如果数列长度k<n ...
 - 2019 Multi-University Training Contest 8
		
2019 Multi-University Training Contest 8 C. Acesrc and Good Numbers 题意 \(f(d,n)\) 表示 1 到 n 中,d 出现的次数 ...
 - [转]cookie、session、sessionid 与jsessionid
		
cookie.session.sessionid 与jsessionid,要想明白他们之间的关系,下面来看个有趣的场景来帮你理解. 我们都知道银行,银行的收柜台每天要接待客户存款/取款业务,可以有几种 ...
 - cookie、session、sessionid ,jsessionid 的区别
		
本文是转载虫师博客的文章http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html cookie.session.sessionid 与js ...
 - HDU1160 FatMouse's Speed —— DP
		
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1160 FatMouse's Speed Time Limit: 2000/1000 MS ...
 - hdu1078 FatMouse and Cheese(记忆化搜索)
		
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=1078" target="_blank">http://acm. ...
 - 2019DX#8
		
Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 Acesrc and Cube Hypernet 7.32%(3/41) 1002 A ...
 - Bzoj3441 乌鸦喝水
		
Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 258 Solved: 97 Description [题目背景] 一只乌鸦在自娱自乐,它在面 ...
 - Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)
		
简介 奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人. 相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花.花叶生生两不见,相念相惜永相失,路尽头有一条河叫忘川河,河上 ...
 
随机推荐
- Minimal Labels
			
Minimal Labels 这个题需要用到拓扑排序的思维,但是这个题还有一个条件--字典序最小,因此可以用一个递增的优先队列来维护,每找到一个入度为 0 的点就把它 push 进去因而每一次判断的点 ...
 - sql注入的基本小知识
			
load_fie('') into outfile '' into dumpfile('') 堆叠注入 ;insert into liunx密码读取 /etc/passwd /etc/shadow W ...
 - linux安装软件时/usr/lib/python2.7/site-packages/urlgrabber/grabber.py文件异常
			
linux安装软件时,经常出现以下异常信息 Traceback (most recent call last): File , in <module> main() File , in m ...
 - C++中的to_string()
			
目录 C++中的to_string() 注:原创不易,转载请务必注明原作者和出处,感谢支持! C++中的to_string() C++中的 to_string()系列函数将数值转换成字符串形式.注意, ...
 - JS中在当前日期上追加一天或者获取上一个月和下一个月
			
/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date. ...
 - ip地址后面的斜杠24
			
ip地址后面的斜杠24表示掩码位是24位的,即用32位二进制表示的子网掩码中有连续的24个“1”:11111111 11111111 11111111 00000000,将其转化为十进制,就是:255 ...
 - 如何在GitHub上下载一部分文件(单个文件夹)
			
Preface Github下的项目可能很大,里面有很多的子文件夹,我们可能只需要使用某个子目录下的资源,可以不用下载完整的repo就能使用. 例如,我想下载这个repo中的mnist_gan文件:h ...
 - 手动部署 OpenStack Rocky 双节点
			
目录 文章目录 目录 前言 OpenStack 架构 Conceptual architecture Logical architecture 网络选型 Networking Option 1: Pr ...
 - 七十八:flask.Restful之flask-Restful标准化返回参数以及准备数据
			
对于一个视图函数,可以指定好数据结构和字段用于返回,以后使用ORM模型或者自定义的模型的时候,它会自动获取模型中相应的字段,生成json数据,然后再返回给前端,这需要导入flask_restful.m ...
 - 工具类 分页工具类PageParamBean
			
自己编写的分页工具类,根据不同的数据库类型,生成对应的分页sql信息,分享给大家,希望大家共勉,工具类有些地方,大家可能不需要,请根绝自己的需要进行修改使用,核心逻辑都在,如果大家觉得有什么不妥,欢迎 ...