P3669 [USACO17OPEN]Paired Up S

有M(M为偶数)头奶牛,每头奶牛有一个产奶量,将这些奶牛两两配对,每对奶牛的产奶的时间为两头奶牛产奶量的总和。现在这M/2对奶牛同时产奶,问所需的最短时间是多少 M保证为偶数

最短时间也就是m/2对中的最长时间,贪心很好想,肯定是时间最短的牛和时间最长的牛匹配才会使最长时间最短。这题比较有意思的是配对的双指针操作。如果直接给出每个牛的时间,直接排序,然后正反相加取最值即可。但是这题对时间进行分组,而且数据量很大,展开也会超时。所以这里的双指针设定一个头尾指针,直接判断这个时间的牛的数量然后相减可以剩下大量时间,而不能一个一个的匹配。

#include <bits/stdc++.h>
#include<iostream>
#include<thread>
using namespace std;
#pragma warning(disable:4996);
#define ll long long
#define int ll
#define endl "\n"
#define rep(j,b,e) for(int j=b;j<=e;j++)
#define eb(arr) arr.begin(),arr.end()
#define mm(arr) memset(arr,0,sizeof(arr))
#define get(a,node) get<a-1>(node)
int T;
const int N = 2e5 + 10;
int n, m, k, q;template <class T, class ...Arg>
void inline pln(T t, Arg ...args);//打印一行参数
template<typename T>
void inline pln(vector<T> a, string s = " ");
template<class T, class ...Arg>
void inline  inln(T& t, Arg&...args);//输入一行数据
//----------------------------------struct node {int x, y;
};
signed main()
{
#ifndef ONLINE_JUDGE//freopen("in.txt", "r", stdin);//freopen("out.txt", "w", stdout);
#endifcin >> n;vector<node>arr(1);rep(j, 1, n) {int x, y;inln(x, y);arr.push_back({ x,y });}int ans = 0;sort(arr.begin() + 1, arr.end(), [](node a, node b) {return a.y < b.y;});int i = 1, j = n;while (i <= j) {auto t1 = arr[i];auto t2 = arr[j];ans = max(ans, arr[i].y + arr[j].y);if (t1.x > t2.x) {arr[i].x -= arr[j].x;j--;}else if (t1.x < t2.x) {arr[j].x -= arr[i].x;i++;}else {i++;;j--;}}pln(ans);return 0;
}//-------------------------------------
void inline  inln() {}
template<class T, class ...Arg>
void inline  inln(T& t, Arg&...args) {cin >> t;inln(args...);
}
void inline pln() {cout << "\n";
}
template <class T, class ...Arg>
void inline pln(T t, Arg ...args) {cout << t << " ";pln(args...);
}
template<typename T>
void inline pln(vector<T> a, string s) {for (T& x : a) {cout << x << s;}cout << endl;
}

P3669 [USACO17OPEN]Paired Up S 贪心+双指针相关推荐

  1. [贪心|双指针] leetcode 11 盛最多水的容器

    [贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...

  2. 7068 Dota2 Pro Circuit 杭电多校(2021“MINIEYE杯”中国大学生算法设计超级联赛9) [贪心+双指针]

    题目 Dota2 Pro Circuit *Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Oth ...

  3. 贪心 双指针----Codeforces Round #727 (Div.2) D. PriceFixed

    题目链接 题目大意: 市场上有 nnn 种商品,每种商品的价格都是 222 .现在你需要买第 iii 种商品 a[i]a [ i ]a[i] 件.但是对于第 iii 种商品有一个属性 bbb ,意味着 ...

  4. 【贪心+双指针】LeetCode 11. Container With Most Water

    LeetCode 11. Container With Most Water Solution1: 参考网址:http://www.cnblogs.com/grandyang/p/4455109.ht ...

  5. 验证回文字符串 II(贪心+双指针)

    面对该题我们最最容易想到的算法就是暴力,我一开始也是没注意看该题的数据大小 直接暴力-- 首先判断原串是否是回文串,如果是,就返回 true:如果不是,则枚举每一个位置作为被删除的位置,再判断剩下的字 ...

  6. LeetCode 1775. 通过最少操作次数使数组的和相等(贪心+双指针)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个长度可能不等的整数数组 nums1 和 nums2 . 两个数组中的所有值都在 1 到 6 之间(包含 1 和 6). 每次操作中,你可以选择 任 ...

  7. [力扣刷题总结](双指针篇)

    文章目录 |||||||||||||||||||| 双指针 |||||||||||||||||| 905. 按奇偶排序数组 解法1:双指针+原地交换 解法2:两次遍历+保持相对位置 475. 供暖器 ...

  8. Codeforces Round #481 (Div. 3)【完结】

    2022.3.1 题目地址:https://codeforces.com/contest/978 目录 A. Remove Duplicates[模拟] B. File Name[贪心 / 双指针] ...

  9. 牛客小白月赛37【部分题解】

    目录 A: 经此一役小红所向无敌[难度: 一般 / 知识点: 模拟] B: 擅长解密的小红同学[难度: 中 / 知识点: 组合数学 数学期望] D: 比那名居的桃子[难度: 一般 / 知识点: 前缀和 ...

最新文章

  1. 《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(3)--- 服务访问和配置模式...
  2. 互联网公装企业“inDeco领筑智造”完成A+B轮近1.1亿元融资
  3. go语言的书籍的淘宝调查
  4. 阅读与html阅读的区别,w3c School读书笔记(一):HTML基础
  5. 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc
  6. 绘制彩虹html代码,HTML5 Canvas 彩虹螺旋图生成器
  7. [SDK2.2]Windows Azure Storage (16) 使用WCF服务,将本地图片上传至Azure Storage (上) 客户端代码...
  8. C语言 #define
  9. V-Play入门手册3-如何编写高效的代码?
  10. 基于linux桌面3d面打印机,基于DLP技术的桌面级3D打印机研发
  11. java 随机抽取数组内容_工具类:随机抽取数组或集合中的几个不重复元素
  12. Mixly编程使用Arduino ESP32实现ESP-NOW组网
  13. 关于ruoyi框架整合ueditor富文本编辑器
  14. m_sequencer和p_sequencer
  15. 使用微PE安装U盘windows系统
  16. mysql 1058_MySQL数据库之mysql启动服务报1058错误的解决方法
  17. linux固态硬盘检测,linux 检查硬盘是 SSD or HDD
  18. 开源SSL加快器的构建
  19. 基于MRS-Hudi构建数据湖的典型应用场景介绍
  20. eclipse注释字体大小显示不一样大

热门文章

  1. eclipse neno 将jar包自动导入WEB-INF\lib
  2. Kubernetes详解
  3. js爬山之作用域和自由变量~~狂徒李四
  4. 哪位有没有reportbuilder的教程?共享一下。万分感谢!
  5. js:使用nodejs为页面传递mysql中的数据
  6. ECCV2022 Workshop | 复杂环境中的多目标跟踪和分割
  7. three.js创建简单的凹凸贴图
  8. 凹凸贴图和法线贴图的区别
  9. 基于Patachmatch的stereo matching笔记(二):《DeepPruner》
  10. 使用nginx反向代理发起跨域请求