2021-2022 ACM-ICPC Latin American Regional Programming Contest
2021-2022 ACM-ICPC Latin American Regional Programming Contest
J. Joining Pairs
思路:
本题显然答案为NNN的情况为两条线段的顶点都出现在矩形边框上且连接会相交。其余为YYY。
如何判断连接会相交?我们可以把二维的矩形转化为一维来写
inline int go(int x, int y){if(y == 0) return x;if(x == n) return n + y;if(y == m) return m + 2 * n - x; if(x == 0) return (n + m) * 2 - y;return -1;
}
如果转化为一维 的两条线段没有交点或者一条线段把另一条包含在内就不会相交,其余情况能相交。我们可以先把所有点在边框上的线段进行升序排序,然后进行遍历:我们把前一条线段称为seg1
,当前线段称为seg2
,如果seg2
的左端点比 seg1
的左端点小那么就是完全包含的情况,不会相交,否则如果seg2
的左端点比seg1
的右端点小就是有交点,我们可以用栈模拟一下即可(可以自己画图理解)。
#include <bits/stdc++.h>using namespace std;
typedef pair<int,int> PII;vector<PII>q;int n, m, t;inline int go(int x, int y){if(y == 0) return x;if(x == n) return n + y;if(y == m) return m + 2 * n - x; if(x == 0) return (n + m) * 2 - y;return -1;
}int main(){scanf("%d %d %d",&n, &m, &t);while(t -- ){int a, b, u, v;scanf("%d %d %d %d",&a, &b, &u, &v);int l = go(a, b), r = go(u, v);if(l > r) swap(l, r);if(l > -1 && r > -1){q.push_back({r, l});}}sort(q.begin(), q.end());stack<PII>stk;for(auto [y, x] : q){while(!stk.empty() && x < stk.top().first) stk.pop();if(!stk.empty() && x < stk.top().second){puts("N");return 0;}stk.push({x, y});}puts("Y");return 0;
}
M. Most Ordered Way
题目给的0.85s0.85s0.85s把时间复杂度卡死在O(n2)O(n^2)O(n2), O(n2logn)O(n^2logn)O(n2logn)过不去。
思路(没有官方题解,看别人代码悟的)
循环n
次,每次找到第i
次应该写哪门作业,题目要求字典序尽可能最小,那么,我们每次循环,从下标小的往下标大的地方找,每次计算完成作业时间和作业截止时间中间的时间的差值,然后取个前缀最小值,如果能找到某门作业的需要做的时间小于等于前缀最小值且下标的字典序更小就更新一下,遍历n
次即可。
#include <bits/stdc++.h>using namespace std;typedef long long LL;int n;int main(){scanf("%d",&n);vector<array<int,3>>a(n);for(int i = 0; i < n; i ++ ){int t, d;scanf("%d %d",&t, &d);a[i] = {d, t, i};}sort(a.begin(), a.end());LL sum = 0;for(int i = 0; i < n; i ++ ){if(sum + a[i][1] > a[i][0]){printf("*\n");return 0;}sum += a[i][1];}LL now = 0;while(!a.empty()){//O(n^2)int j = -1, maxn = 1e9 + 1;LL s2 = now;for(int i = 0; i < a.size(); i ++ ){if(maxn >= a[i][1] && (j == -1 || a[i][2] < a[j][2])){j = i;}s2 += a[i][1];maxn = min(maxn * 1ll, a[i][0] - s2);}now += a[j][1];printf("%d ", a[j][2] + 1);if(a.size() == 1) printf("\n");a.erase(a.begin() + j);}
}
2021-2022 ACM-ICPC Latin American Regional Programming Contest相关推荐
- 2021-2022 ACM-ICPC Latin American Regional Programming Contest 题解
B 先两边贪心,然后中间部分卷积 #pragma GCC optimize("O3")#include<iostream> #include<string.h&g ...
- ICPC Latin American Regional – 2017 B题(模拟+思维)
ICPC Latin American Regional – 2017 Alan Curing is a famous sports programmer. He is the creator of ...
- The 2022 ICPC Asia Hangzhou Regional Programming Contest
比赛连接:Dashboard - The 2022 ICPC Asia Hangzhou Regional Programming Contest - Codeforces A. Modulo Rui ...
- 2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018)
2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018) 题号 题目 知识点 难度 A Access ...
- 2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020)
2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020) B. Reverse Game 题目描述: ...
- The 2020 ICPC Asia Shenyang Regional Programming Contest I题 Rise of Shadows(数论)
题目链接The 2020 ICPC Asia Shenyang Regional Programming Contest 题目大意: 一天内有H小时,每小时M分钟,时针分针以恒定速率旋转. 现在若时针 ...
- The 2020 ICPC Asia Yinchuan Regional Programming Contest
The 2020 ICPC Asia Yinchuan Regional Programming Contest A 开三个vector数组存储x,y,z轴上的点,unique+erase去重 #in ...
- The 2021 ICPC Asia Taipei Regional Programming Contest
待补:C.Community Service/D.Largest Remainder A. Ice Cream 直接O(1)O(1)O(1)计算即可. #include <bits/stdc++ ...
- 2021 ICPC Asia Taipei Regional Programming Contest C、F
C.Community Service 题意: 有一个0到1e60到1e60到1e6的数轴,有2e52e52e5次操作: 操作一:增加一条 从l到rl到rl到r的线段,每条线段有名字: 操作二:给定一 ...
最新文章
- 独家 | 数据科学家指南:梯度下降与反向传播算法
- 20家单位共同倡议发起成立上海人工智能发展联盟
- webpack Plugins列表
- php mysql 编码为utf-8_php连mysql用 utf-8编码乱码怎么办
- 【读书笔记】非暴力沟通
- Cloudera Manager 5和CDH5(最新版5.1.3) 安装
- oracle工作日记,Oracle学习日记【4】
- 【Linux】awk处理变量
- 洛谷——P1001 A+B Problem
- 如何在史上最糟糕的里约奥运会中活下去?(内附奥运赛事时间表)
- 访问网址(使用CDN)时 智能DNS调度 与 用户定位调度(根据IP定位)
- OCR识别发票扫描仪解决方案
- php爬虫post,PHPspider爬虫10分钟快速教程
- 比 Java 更强大的 kotlin.Deprecated
- h5 数字变化_那些H5用到的技术(6)——数字滚动特效
- 【通識:人生哲學與幸福】青年心理學 Part2 成熟
- Ultimate Developer PC 2.0-第3部分-有关构建WEI 7.9和RFC(用于构建GOM)的更新(上帝拥有的机器)...
- 一种加密,解密的思路
- 全网最详细安装 IntelliJ IDEA (原理+方法)看了不后悔
- 中国IT运维O2O市场发展研究及十四五前景规划分析报告2022-2027年
热门文章
- 旷厂练习生 Vol.15 | CV 小白在旷视 4 个月就能写顶会 paper?来听听机甲大师 Albert 的故事!...
- 成神结局量子计算机雏惨,成神之日:消失数月之后雏再次出现,不过形象却差点让人认不出...
- 深度:传统服装品牌大量进入,老年身体机能变化催生数千亿中老年服装市场!
- 【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
- iOS通过dSYM文件分析crash
- spring boot 项目增加flyway的使用遇到问题解决
- Verilog语法和典型电路
- PID循迹机器人及整定
- WHO IS MVP ?——线程
- 国内外顶级核心期刊TOP20