题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6667

题目:


t≤25个样例,n≤1e6个班级,每个班级有个人,做了杯奶茶,每个人只能喝一杯奶茶且不能喝自己班做的奶茶。

问最多有多少学生能喝到奶茶?

input1:

1

2

3 4

2 1

output2:

3

input2:

1
4
4 2
3 5
3 4
2 1

output2:

12

解题思路:


按照从大到小排序,对于奶茶数目,按照贪心的思想,一定要先把数目最大的分配给其他人,那么分配给谁呢?做出的奶茶数目少的班级应该最后再安排哪些人喝他们的奶茶(当然可能最后没有人被分配到这些班级),这样才能使没被喝的奶茶数目最少。所以先把小的班级的人分配给大的班级去喝奶茶。

这样处理完之后需要考虑最后处理到的那个班级是否还有奶茶,因为那个班级的人不能和自己班的奶茶,对n=1这种情况特判。

ac代码:


#include <bits/stdc++.h>
#define maxn 1000005
using namespace std;
typedef long long ll;
struct node{int a, b;friend bool operator < (node aa, node bb){return aa.b > bb.b;}
}c[maxn];
ll suma, sumb;
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);int t, n;scanf("%d", &t);while(t--){scanf("%d", &n);suma = sumb = 0;for(int i = 1; i <= n; i++){scanf("%d %d", &c[i].a, &c[i].b);suma += c[i].a;sumb += c[i].b;}if(n == 1){printf("0\n");continue;}sort(c+1, c+1+n);int pb = 1, pa = n;ll ans = 0;while(pb <=n && pa >= 1){if(pb == pa){pa--;continue;}if(c[pa].a < c[pb].b){int x = c[pa].a;ans += x;suma -= x; sumb -= x;c[pb].b -= x;c[pa].a = 0;pa--;}else if(c[pa].a > c[pb].b){int x = c[pb].b;ans += x;suma -= x; sumb -= x;c[pb].b = 0;c[pa].a -= x;pb++;}else{int x = c[pb].b;ans += x;suma -= x; sumb -= x;c[pb].b = 0;c[pa].a = 0;pb++;pa--;}}if(pa == 0) pa++;if(pa >= 1 && c[pa].b != 0)  ans += min(suma, sumb - c[pa].b);else ans += min(suma, sumb);printf("%lld\n", ans);}return 0;
}

【2019杭电多校第八场1011=HDU6667】Roundgod and Milk Tea(贪心)相关推荐

  1. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  2. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  3. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  4. 杭电多校第七场 1011 Kejin Player HDU(6656)

    杭电多校第七场 1011 Kejin Player 题意:给你N行,代表从i级有花费a[i]元的r[i]/s[i]的概率达到i+1级,剩下的概率中可能会到达x[i]级.然后询问从L级到R级的花费会是多 ...

  5. 2021杭电多校第八场补题

    比赛传送门:Contest Problem List (hdu.edu.cn) 1006)GCD Game 题目翻译:爱丽丝和鲍勃正在玩游戏. 他们轮流操作.有n个数字,a1,a2,...,an.每次 ...

  6. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  7. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  8. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  9. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)

    题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...

  10. 2022 年杭电多校第八场补题记录

    A Theramore 题意:给定一个长度为 nnn 的 010101 串,每次可以选取一个奇数长度的连续子串进行位置上的翻转,问经过若干次操作能得到的字典序最小的串.n≤5×105n \leq 5\ ...

最新文章

  1. 系统架构性能问题诊断及优化思路,纯干货!
  2. 卷积神经网络CNN要点:CNN结构、采样层、全连接层、Zero-padding、激活函数及Dropout
  3. leetcode268. 缺失数字
  4. php html class,html中规定元素的类名的属性class
  5. 静态网站优化技巧总结
  6. Kotlin学习笔记19 阶段复习1
  7. SpringCloud学习笔记011---spring-boot-starter-actuator(健康监控)配置和使用
  8. sql中变量用法_SQL变量:基础和用法
  9. 【poker】WASD变成上下左右键(方向键)的解决方法
  10. vue实现分屏_VUE视频怎么分镜 VUE视频如何进行分镜编(图文步骤)
  11. 计算机系统的确认与验证,确认与验证(指南).pdf
  12. “十四五”国家信息化规划发布,十大要点解读
  13. c语言课程设计(图书馆管理系统)
  14. Vue项目中ico问题
  15. NBS的N把“瑞士军刀”——产品解读之规则设计器
  16. java ftp传图片_Java 图片上传方式一 : ftp 图片服务器
  17. 一缕黑暗中的火光-----------协作图--------------优雅的建模语言
  18. 免费App开发解决方案 一键生成App
  19. idea项目在maven projects中置灰色的解决办法
  20. 国际电工委员会发布标准 IEC 62077:2022 《光纤互连设备和无源元件-光纤环行器-通用规范》

热门文章

  1. 蓝桥杯 大整数乘法 试题 算法训练 P0805
  2. 包含的前缀数目超过了最大值。最大值为 2_「西法带你学算法」一次搞定前缀和...
  3. flowable 监听器中无法获取 oauth 上下文对象
  4. java.util.zip.ZipException:invalid distance distance too far back
  5. 安全结束线程 linux,启动线程以及安全终止线程
  6. CF 504E Misha and LCP on Tree——后缀数组+树链剖分
  7. Controller中servletFileUpload.parseRequest(request)解析为空
  8. Java 实验五 王奕开
  9. C++设计模式实现--职责链(Chain of Responsibility)模式
  10. Java CopyOnWrite容器