D. Mike and distribution

Mike and distribution

https://ac.nowcoder.com/acm/problem/112024

传送门

找到个互不相等的

使得

注意你构造的


我是废物^ _ ^

既然不限制,那么令

要大于原数组的一半

不妨先满足数组,挑选最大的个下标

那么如何调整让数组也满足条件?

是不是选择最大的的下标会比较好呢?但是如果相应的非常小呢?无法抉择,抛弃这种想法...

至此,废物的思想停止了

正文,上面都是废话

一共有组数据,先按照为关键字排序

然后可以直接选前个元素,这样对最优秀,但是肯定会因此不满足

然后发现可以转化为:选择的数字比没选的数字大即可

因为需要选一半的数字,那就两个两个来考虑

一组,一组...每组选择值较大的,这样就可以满足

但是不一定可以满足...但是如果我们一开始把排序后位置选掉

一组,一组...按照上面的策略可以满足

同时可以满足,因为第一个位置的一定大于中的

中的一定大于中的

至此问题得到解

我为什么这么菜啊

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+10;
struct p{int a,b,id;}d[maxn]; int n;
bool com( p a,p b ){ return a.a>b.a; }
int main()
{
    cin >> n;
    for(int i=1;i<=n;i++)    cin >> d[i].a;
    for(int i=1;i<=n;i++) { cin >> d[i].b; d[i].id = i; }
    sort( d+1,d+1+n,com );
    printf("%d\n%d ",n/2+1,d[1].id);
    for(int i=2;i<=n;i+=2)    printf("%d ",d[i+(d[i].b<d[i+1].b)].id );
}
全部评论
你是wfer
点赞 回复 分享
发布于 2021-01-14 22:52

相关推荐

程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
05-11 20:45
门头沟学院 Java
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
zhiyog:哈哈哈哈哈哈哈哈哈哈哈哈哈
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务