P2123皇后游戏

P2123皇后游戏

参考题解

cpp 复制代码
#include <iostream>
#include <algorithm>
using namespace std;

int T;
int n;
long long res;

struct Person
{
	int a,b,d;
}p[20005];

bool person_cmp(const Person& x,const Person& y)
{
	if(x.d == y.d)
	{
		if(x.d < 0)
			return x.a < y.a;
		else if(x.d == 1)
			return x.b > y.b;
		else
			return x.a < y.a;//很奇怪,这里按照题解说法随便排则会出问题,写true会RE两个然后一个超时,写false和这里这个写法就能AC
	}
	else
		return x.d < y.d;
}

void queenGame()
{
	res = 0;
	scanf("%d",&n);
	for(int k = 0 ; k < n ; k++)
	{
		scanf("%d%d",&p[k].a,&p[k].b);
		p[k].d = p[k].a - p[k].b;
		if(p[k].d > 0)	p[k].d = 1;
		else if(p[k].d < 0) 	p[k].d = -1;
	}
	
	sort(p,p+n,person_cmp);
	
	long long sum_a = 0;
	
	for(int k = 0 ; k < n ; k++)
	{
		sum_a += p[k].a;
		res = max(res,sum_a)+p[k].b;
	}
	printf("%lld\n",res);
}

int main()
{
	scanf("%d",&T);
	while(T > 0)
	{
		T--;
		queenGame();
	}
}
相关推荐
香辣牛肉饭12 分钟前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
.徐十三.1 小时前
一篇文章看到最短路径——Dijkstra算法
算法
胖大和尚2 小时前
C++ 多线程编程的实现方式
c++·thread
科学实验家2 小时前
二叉树的几道题
算法
abcy0712133 小时前
flink state实例
大数据·算法·flink
qizayaoshuap3 小时前
# [特殊字符] 密码生成器 — 鸿蒙ArkTS安全算法与密码强度评估系统
java·算法·安全·华为·harmonyos
在水一缸3 小时前
深入浅出 Catch2:现代 C++ 测试框架的优雅实践
开发语言·c++·单元测试·log4j·测试框架·catch2
良木林3 小时前
滑动窗口 - LeetCode hot 100
javascript·算法·leetcode·双指针·滑动窗口
2401_841495643 小时前
【数据结构】B*树
数据结构·c++·b树·算法·删除·插入·三分分裂