Codeforces 896B Ithea Plays With Chtholly 交互/构造

这是一道关于在线操作数组使其单调不降的竞赛题目。通过对每次操作中数x与c的关系,采用分治策略确定插入位置。如果x<=c/2,从左侧寻找空位或大于x的数替换;如果x>c/2,则从右侧操作。由于题设限制,这种方法总能找到合适的位置。
摘要由CSDN通过智能技术生成

题意

有一个长度为n的数组和m次操作并给出一个正整数c。每次操作会给出一个数x,保证x为不大于c的正整数。要求你每次都把x放到数组的某个空位置或替代掉某个数。使得在m次操作结束之前满足数组的每个位置都有数且其单调不降。这里写图片描述注意必须在线,也就是在输入下一个数之前就要输出当前数所放的位置且不能再更改。

分析

有点意思的脑洞题(其实并不难),在比赛快结束的时候才想到。不然估计就要掉回div2了。
就是设mid=c/2。则若加入的数不大于mid,则找到从数组最左边开始的第一个空位置。若放这个位置能使得前面的数仍然满足不降,则放,否则就找到第一个大于它的数并替代掉。若大于mid则从右边开始做。因为有题目给定的条件,所以这样做一定是有解的。

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值