noip第四次模拟赛赛后总结

前言

感觉最近越来越会骗分了,但是就是各种的性质都有一点看不出来,简单的题目可以骗大部分得分,但是标答总是近在咫尺却拿不上

第一题

https://www.luogu.com.cn/problem/T197838

这是一道简单题,想一想就可以理解

首先去理解字典序最小,也就是要在前面的数字尽可能的少,那其实就可以想到贪心了(但是考试的时候并没有想到这个简简单单的方法,哎。。)

假如第一个数不是1,那么我们是不是就在前面一直插入1,这样的构造一定是“有趣”的。

但假如不是,其实就是另外的想法,假如这一个a[i]==1那么这一个的前面不可以插入1,那还不如不插入, 假如a[i]==2,我们就会发现这个和前面的数字有关系,假如a[i-1]!=1,显然一直插入1是最优的解。

同理就可以的出一个构造的方法
1.第一个大于1,就一直插入一
2. 找到第一个可以在a[i]前面插入1/2的i(这里很明显,如果插入不了1,那么前面那个数一定是1,那么后面那个数字假如不是2,显然插入2为最优解)。
3. 假如找不到就在最后一直插入1/2(这也是看最后一个数字是几)。

简简单单的贪心

第二题

https://www.luogu.com.cn/problem/T197839
这一题其实还是比较有意思的

其实先去想一下{0,1}的情况,就很容易去理解,首先我们发现先假如有两个数是一样大的并且是挨着的,那么他就会线下扩散

在这里插入图片描述
就像是这里的00 和 11
知道他俩相遇就不会在扩散了
在这里插入图片描述
那么这个的做法是不是就呼之欲出了,就是看那个离得近

欸,那这个有没有对其他的数据有一点点的启发,我们其实可以发现,这个有一个二分答案,比mid大的都是1,小的是0,最后check这个mid,就可以找到这个答案

这个还是一道好题啊,我认为是难题而且代码要是不想清楚的话,其实实现也是不叫麻烦的,但是想清楚了也就几行行。

还有两道题,我会在明天完成(大概吧)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值