30. 序列构造
来源:互联网 发布:淘宝商城男装t恤 编辑:程序博客网 时间:2024/05/30 23:55
给定两个长度为 n 的正整数序列
- 序列 P 中的元素是不重复的
1≤pi≤n ,其中1≤i≤k 2×(ap1+⋯+apk) 大于序列 A 所有元素的和2×(bp1+⋯+bpk) 大于序列 B 所有元素的和- k 小于等于
⌊n2⌋+1
现在请你找出一个满足上述条件的序列 P。
输入
输入第一行包含一个整数 n (
输入第二行包含 n 个用空格分隔的整数
输入第三行包含 n 个用空格分隔的整数
输出
输出第一行为一个整数 k,表示找到的序列 P 中元素的个数;
输入第二行包含 k 个用空格分隔的整数
注意:答案可能有多个解,输出其中任意一组即可,此题开通 Special Judge。
测试输入 期待的输出 时间限制 内存限制 额外进程
- 5↵
- 8 7 4 8 3↵
- 4 2 5 3 7↵
- 3↵
- 1 4 5↵
//参考讨论区里大佬的思路,选择元素之和的两倍大于所有元素之和,等价于选择元素之和大于剩下的元素//先对A从大到小排序,这样两两一组看的话,不管怎么样A都是满足题意的//则接下来只要对B两两一组选大即可#include<stdio.h>#include<stdlib.h>typedef struct node{int Num_A;int Num_B;int Index;}NUM;NUM num[1000005];int cmp(const void*a, const void*b){return (*(NUM*)a).Num_A < (*(NUM*)b).Num_A ? 1 : -1;}int main(){int count, Count;scanf("%d", &Count);for (int i = 0; i < Count; i++){scanf("%d", &num[i].Num_A);num[i].Index = i + 1;}for (int i = 0; i < Count; i++)scanf("%d", &num[i].Num_B);qsort(num, Count, sizeof(num[0]), cmp);count = Count / 2 + 1;printf("%d\n%d", count, num[0].Index);for (int i = 1,j=1; j < count; i++,j++){if (num[i].Num_B > num[i + 1].Num_B)printf(" %d", num[i].Index);elseprintf(" %d", num[i + 1].Index);i++;}printf("\n");return 0;}
阅读全文
0 0
- 30. 序列构造
- 学会构造素数序列
- python_序列构造
- 构造回文序列
- Farey序列构造和查找
- hdu 4982 贪心构造序列
- 构造最长公共子序列
- _DataStructure_C_Impl:序列构造二叉树
- 使用Connect By构造序列
- 【c#】构造函数执行序列
- HDU 6130 Kolakoski(构造序列)
- 【cf 487C】【数论+构造】【根据前缀积取模构造序列】
- 缺省构造函数 和 xml序列化
- 由遍历序列构造二叉树
- HDU4671 Backup Plan(构造序列-多校七)
- POJ 1159 如何构造回文序列
- Java先序序列构造二叉树
- 几种构造序列的方法比较
- win7安装composer Failed to decode zlib stream
- 29. 邮件解密
- Android studio仿QQ好友列表
- 生产者与消费者模型
- Scala基础—Override示例(extends with)
- 30. 序列构造
- android studio实现发短信
- 23种设计模式之工厂模式
- CRC校验
- 31. 括号序列
- ECMAScript6(16):异步编程
- Java 8 Stream Filter 过滤null值
- 面试题15: 链表中倒数第k个结点
- 计算机网络之传输层