题目传送门(内部题118)


输入格式

  输入第一行是一个整数$n$,意义如以上所示。
  接下来有$2n+1$行,每行为两个正整数,第$i$行的两个正整数分别代表$A_i$和$B_i$。


输出格式

  如果无法选出$n+1$张卡片满足驴蛋蛋的要求,输出一个数$-1$。
  否则输出$n+1$行,每行有一个正整数,表示选出的卡片编号(从$1$开始)。如果有多解,输出任意一组解均可


样例

样例输入:

2
4 2
9 4
5 3
7 5
8 1

样例输出:

3
4
2


数据范围与提示

样例$1$解释:

  选择顺序随意,选择第二,三,四张三张卡片,$A$的总和为$21$,$B$的总和为$12$,均大于剩下的卡片$A,B$之和。

数据范围:

  共$10$组测试数据
  对于前$3$组测试数据有第$p$组中$N=2\times p+1$
  对于后$7$组测试数据有第$p$组中$N=p\times 10,000$
  对所有测试数据$1\leqslant A_i,B_i\leqslant 10^9$
  如果你通过某种方法$hack$掉了评测插件,你可以申请获得该测试点的分数=ω=


题解

随机划,没了……

随机打乱序列,取前$n+1$个,判断是够可行,不可行接着打乱,肯定不会存在$-1$。

千万记得开$long\ long$!!!

时间复杂度:$\Theta($玄学$)$。

期望得分:$30$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
struct rec{int x,a,b;}e[300000];
int n;
long long suma,sumb;
int main()
{
srand(time(NULL));scanf("%d",&n);
for(int i=1;i<=2*n+1;i++)
{
e[i].x=i;
scanf("%d%d",&e[i].a,&e[i].b);
suma+=e[i].a;sumb+=e[i].b;
}
while(1)
{
long long A=0,B=0;
random_shuffle(e+1,e+2*n+2);
for(int i=1;i<=n+1;i++)
{
A+=e[i].a;
B+=e[i].b;
}
if(2*A-suma>0&&2*B-sumb>0)
{
for(int i=1;i<=n+1;i++)printf("%d\n",e[i].x);
return 0;
}
}
return 0;
}

rp++

最新文章

  1. MySQL 常用的UPDATE操作
  2. 特殊js事件
  3. 风筝的C++随时记
  4. Apply 与 Call 的用法(简化版)
  5. Redis的Python客户端redis-py的初步使用
  6. MongoDB 相关下载
  7. ios 编码转换 保存文件
  8. jquery 学习日记之选择器
  9. Apache + Tomcat集群配置详解 (1)
  10. windows下python2和python3共存
  11. 文件同步服务器,iis 集群 ,代码同步(一)
  12. stream_context_create
  13. Python(五)编程小实例
  14. java复习要点(一)------- java语言的特点、java的工作原理、配置环境变量、java命令的使用
  15. Mecanim动画系统
  16. c++(排序二叉树插入)
  17. linux软连接文件的copy
  18. Docker容器开机自动启动
  19. linux下修改时间和时区
  20. XX-net

热门文章

  1. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
  2. The minimal unique substring CodeForces - 1159D (构造)
  3. JSTL标签+El表达式把list集合数据展示到 JSP页面
  4. tomcat进行压测时,cpu占用90%
  5. 如何去除List集合中的重复元素? a,b,c,a,c,b,d,,,,,,
  6. 禁止ios10双指缩放
  7. React前端有钱途吗?《React+Redux前端开发实战》学起来
  8. Python内置函数清单
  9. 什么是DDoS攻击?
  10. Ansible-Playbook实战