Codeforces Round #331 (Div. 2) C. Wilbur and Points
来源:互联网 发布:病假条淘宝暗语大全 编辑:程序博客网 时间:2024/05/18 01:54
题目链接
题意:
输入n,然后给出n组 (x, y);
给出n 个w[i];
要求:将n组(x, y)排序,要求x[i] <= x[i + 1] || y[i] <= y[i + 1]
并且w[i] = y[i] - x[i]
若存在,输出YES以及排序结果
否则,输出NO
思路:
首先判断是否存在一个最佳的序列b[]使得:b[i] = y[i] - x[i] = w[j]
再判断序列b[]是否为关于二维点集的一个美观序列。
代码如下:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N = 2e5 + 10;int n; struct node{int x, y, v, id, rt;};node p1[N], p2[N];bool cmp1(node a, node b){if(a.v != b.v) return a.v < b.v;else{if(a.x != b.x) return a.x < b.x;else return a.y < b.y;}}bool cmp2(node a, node b){if(a.v != b.v) return a.v < b.v;else return a.id < b.id;}bool cmp3(node a, node b){return a.id < b.id;}int main(){while(~scanf("%d", &n)){ for(int i = 0; i < n; i++){scanf("%d%d", &p1[i].x, &p1[i].y);p1[i].v = p1[i].y - p1[i].x;p1[i].id = i;}sort(p1, p1 + n, cmp1);for(int i = 0; i < n; i++){scanf("%d", &p2[i].v);p2[i].id = i;}sort(p2, p2 + n, cmp2);bool flag = false;for(int i = 0; i < n; i++){if(p1[i].v != p2[i].v){flag = 1; break;}else p2[i].rt = p1[i].id;}if(flag){puts("NO"); continue;}else{sort(p1, p1 + n, cmp3);sort(p2, p2 + n, cmp3);for(int i = 1; i < n; i++){if(!(p1[p2[i].rt].x > p1[p2[i - 1].rt].x || p1[p2[i].rt].y > p1[p2[i - 1].rt].y)){flag = 1; break;}}if(flag){puts("NO"); continue;}else{puts("YES");for(int i = 0; i < n; i++){printf("%d %d\n", p1[p2[i].rt].x, p1[p2[i].rt].y);}}}}return 0;}
0 0
- Codeforces Round #331 (Div. 2) C. Wilbur and Points
- Codeforces Round #331 (Div. 2) C. Wilbur and Points
- Codeforces Round #331 (Div. 2) C. Wilbur and Points
- Codeforces Round #331 (Div. 2)-C. Wilbur and Points
- Codeforces Round #331 (Div. 2)C. Wilbur and Points(模拟+STL)
- Codeforces Round #331 (Div. 2)——C. Wilbur and Points
- Codeforces Round #331 (Div. 2) C. Wilbur and Points 贪心+排序
- Codeforces Round #331 (Div. 2)-C-Wilbur and Points(STL容器)
- 巧妙地利用STL map set pair 贪心+排序 Codeforces Round #331 (Div. 2)C. Wilbur and Points
- 【Codeforces Round 331 (Div 2)C】【脑洞 SET贪心写法】Wilbur and Points 锯齿图形差值编号,右上角的最大
- Codeforces Round #331 (Div. 2) A. Wilbur and Swimming Pool
- Codeforces Round #331 (Div. 2) B. Wilbur and Array
- Codeforces Round #331 (Div. 2) _A. Wilbur and Swimming Pool
- Codeforces Round #331 (Div. 2) A. Wilbur and Swimming Pool
- Codeforces Round #331 (Div. 2) B. Wilbur and Array
- Codeforces Round #331 (Div. 2) B. Wilbur and Array (贪心)
- codeforces#331-C - Wilbur and Points-set/贪心乱搞
- Codeforces 596 C Wilbur and Points
- ubuntu14.04,由于安装软件造成磁盘空间不足,无法登入Gnome解决办法!!
- unity3d 5.2 添加广点通广告
- 2. Spring4.1-Java Config
- 学习PMP第一步
- Linux sublime text3输入中文的问题.
- Codeforces Round #331 (Div. 2) C. Wilbur and Points
- 免费赠与c/c++海量视频 学习资料的
- 利用xShell实现windows与虚拟机的文件交换
- 用java实现计算String类型的四则运算——用栈和后缀表达式实现
- APP安全测试-数据安全性/通讯安全性/人机接口安全性
- 南大软院大神养成计划-第三天
- python之自动化生成解析ini文件的Qt类
- Android Studio 导入Volley模块后 gradle的修改。
- Android 接口定义语言AIDL使用解说