关闭

Codeforces Round #331 (Div. 2) C. Wilbur and Points

276人阅读 评论(0) 收藏 举报
分类:

题目链接

题意:

输入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 #459 (Div. 2) C. The Monster

题目链接 C. The Monster time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output As Will is...
  • ffgcc
  • ffgcc
  • 2018-01-30 09:48
  • 45

【解题报告】Codeforces Round #367 (Div. 2)

简略的解题报告。
  • TRiddle
  • TRiddle
  • 2016-08-12 21:37
  • 735

Codeforces Round #444 (Div. 2)-贪心&尺取-Ratings and Reality Shows

http://codeforces.com/contest/887/problem/D 一个模特有两种活动。 ① 拍照片,挣钱 a。 ②开演唱会,花费b 给定模特这两种工作的时间表。 模特可以选定一个时间举办一个座谈会,那么他拍照片的钱变c。开演唱会会花费d。 要求再模特座谈会之前和后l...
  • qq_35781950
  • qq_35781950
  • 2017-11-11 20:11
  • 124

Codeforces Round #204 (Div. 1) A. Jeff and Rounding

A. Jeff and Rounding time limit per test 1 second memory limit per test 256 megabytes input standard input output standard out...
  • u010422038
  • u010422038
  • 2013-10-05 08:54
  • 1480

Codeforces Round #350 (Div. 2)(C)模拟

C. Cinema time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output ...
  • qq_24489717
  • qq_24489717
  • 2016-05-06 15:29
  • 478

Codeforces Round #254 (Div. 1)C. DZY Loves Colors(线段树经典操作/分块)

题目链接 C. DZY Loves Colors time limit per test 2 seconds memory limit per test 256 megabytes input standard input output stan...
  • fouzhe
  • fouzhe
  • 2017-02-11 15:17
  • 277

Codeforces Round #214 (Div. 2) C. Dima and Salad (背包变形)

C. Dima and Salad time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output...
  • u010228612
  • u010228612
  • 2013-12-10 22:16
  • 1316

Codeforces Round #299 (Div. 2) C. Tavas and Karafs

【题意】这题看了好久好久!其实就是个二分水题! 首先给出a,b,n 这是一个由a开头,b为公差,长度无限的等差数列 然后n个询问 输入l,t,m 取这个数列从l开始,m个数,每一次这个数列中所有的数字-1 当首尾变成0的时候,可以向后移,问最后t次之后,最长的0序列的右边界是多少 ...
  • just_sort
  • just_sort
  • 2016-05-09 21:02
  • 204

Codeforces Round #116 (Div. 2, ACM-ICPC Rules) C - Letter

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #ifdef _WIN...
  • zz_1215
  • zz_1215
  • 2012-04-22 17:53
  • 533

Codeforces Round #214 (Div. 2) C: Dima and Salad 想减肥?吃沙拉

#include #include #include using namespace std; struct abc{ int t, a; }c[110]; int dp[2][200000]; int main(){ freopen("in.txt",&q...
  • u012952004
  • u012952004
  • 2013-11-29 01:27
  • 667
    个人资料
    • 访问:47767次
    • 积分:1461
    • 等级:
    • 排名:千里之外
    • 原创:103篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    最新评论