NOIP模拟29(B)


T1爬山

简单题,赛时找到了$O(1)$查询的规律于是切了。

从倍增LCA那里借鉴了一点东西:先将a、b抬到同一高度,然后再一起往上爬。所用的步数$×2$就是了。

抬升到同一高度的过程中,如果高度不是d的整数倍,则必定有一步没有走满d个高度。

如果剩下的步数为偶数,则直接累计答案,可以证明没有更优的情况(虽然我懒并没有证明但我觉得这挺显然的啊……)

如果剩下的步数为奇数,考虑把原来没有走满的那一步走满,然后把多余的那一步补到下降中,也可以证明没有更优的情况。(显然……于是我就又弃坑证明)

T2学数数

怕是考场上只有我一个人敲了一遍splay /捂脸.jpg

一开始以为是个平衡树果题,然后就写了。最需要处理的那一部分被我一个sb的sort给干掉了。

正解单调栈+离散化+桶。

开一个单调栈维护序列,栈内单调递减。

顺序扫序列的每一个元素。push的时候记一下push前栈顶元素,即为该点左侧第一个比它大的值。该点被pop的时候记录一下是哪一个元素pop了它,即为该点右侧第一个比它大的

值。(注意记录的都是位置)

算出左侧的长度l和右侧的长度r,$l×r$即为该点在最终序列里面出现的次数。

然后开桶统计前缀和,实现$O(1)$查询。

T3七十和十七

至今不知道dp转移方程的意义。。。

于是听了某一个打表找规律赛时A掉的大神讲了一下规律……

先鸽了,回头自己推一下或者稍微问一下……

NOIP模拟30(B)


T1Return

sb语文题,读了大概20分钟题。然而赛场上的代码各种错误于是完美爆零了。

正解sort+去重,累加答案的柿子题目都给出来了……

错误原因:

1.没注意输出格式冒号后面有一个空格

2.下面的东西显然不能处理出现0了的情况。

if(in_a[i]!=in_a[i-])
a[++n]=in_a[i],sum[n]=;

T2One

约瑟夫问题2改编题目。

结论:ans=(ans+i)%(n-i+1);

T3Magic

注意模数不一定是质数,crt就好

鸽了。

NOIP模拟31


T1math

赛时乱搞A了。把k和所有的ai取一个gcd,在k内递增,每个都取出来就好。

T2biology

赛时暴搜20分。

正解将坐标转化一下:(x,y)->(x+y,x-y),原本的曼哈顿距离($|x_1-x_2|+|y_1-y_2|$)转化为切比雪夫距离($max{|x_1-x_2|,|y_1-y_2|}$)。

然而我并没有严格按照正解打啊/滑稽.jpg

由于转移需要按照a的大小顺序,于是考虑将节点信息存进结构体里,按a的大小排序。

顺序扫一遍标记a变化的位置,按段转移。

由于需要加n个b数组,所以转移前加转移后加都一样。于是选择在转移后加。

用四个变量分别维护出$f[i]-x-y,f[i]-x+y,f[i]+x-y,f[i]+x+y$,然后进行状态转移:

$f[i]-x_1-y_1$用于转移$+x_2+y_2$,以此类推。

(其实直接把式子写开就是f[i]+(x_2-x_1)+(y_2-y_1),四种情况只是把绝对值拆了而已)

注意是按阶段转移的,所以需要8个变量,4个记录现在这个阶段以前所有阶段的max值,4个记录转移到当前节点的max值。

每个阶段末更新一下总体u最大值即可。

T3english

赛时暴搜20分。

20%算法:

暴搜。枚举左右端点直接暴力累加贡献。n<=1000测试点可过。

40%算法:

考虑另外20%数据的特殊性质:ai<=1。

对于ans1,不难发现,对答案有贡献当且仅当两个端点一个为0一个为1,此时对答案的贡献为1。于是答案就是(1的个数)×(0的个数)。

对于ans2,由于只有当区间内最大值为1时才对答案有贡献。而数列元素两两异或不可能大于1。故输出0即可。

100%算法:

不难猜测时间复杂度应该是$O(n)$或$O(nlogn)$。

考虑先用单调栈维护对于每个$a[i]$值左侧第一个比它大的元素的位置和右侧第一个比它大的元素的位置。

对于ans1,考虑对于每一位维护1的个数的前缀和,方便$O(1)$查询左右区间中1的个数。

考虑$xor$的运算法则,查询左边0的个数、右侧1的个数相乘然后左移对应的位数,左边1的个数、右边0的个数相乘左移对应的位数,求和然后乘上ai即可。

对于ans2,考虑用01trie解决问题。

1e6二进制下20位足够了,于是把每一个数字都按照20位从高位到低位插进01trie。

插入的时候别忘了记录一个num代表有多少个数插入的时候经过当前节点。

正解是可持久化01trie,但是我不会打又懒得学(我错了我去学)于是问了lockey大佬,

大佬说莫队优化可过。于是就用莫队过了……(记得自己yy一个删除操作)

查询的代码大概长这样:

inline void query(int k,bool lmt,int ri,int ai,int wei)//k为trie树上的节点编号
{//lmt为是否在下界,为1即前面几位都是恰好等于最大值的。ri表示对应ai的右区间中的数,ai即为ai,wei为当前查到第几位
if(!lmt)//如果!lmt,即下面的数字一定比ai要大,
{
ans2=(ans2+ai*num[k]%mod)%mod;//直接将维护的num累加进答案
return ;
}
int lin=(ri>>wei)&,pre=(ai>>wei)&;//取出两个值的这一位
if(trie[k][lin^])//如果lin^1的儿子存在,xor操作后为1,一定可以走。
query(trie[k][lin^],pre,ri,ai,wei-);//如果pre为0,走1一定大于ai了,所以没有限制。反之则依旧处于下界上
if(trie[k][lin]&&pre==)//pre为0才能走xor为0的节点,否则一定比它要小
query(trie[k][lin],lmt,ri,ai,wei-);//必定是下界
return ;
}

(我知道我写的跟shi一样但是我实在懒的写了就鸽掉吧回头找时间填坑反正也没有什么人看)

「题解」NOIP模拟测试题解乱写I(29-31)的更多相关文章

  1. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  2. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  3. 「NOIP2009」最优贸易 题解

    「NOIP2009」最优贸易 题解 题目TP门 题目描述 \(C\)国有\(n\)个大城市和\(m\)条道路,每条道路连接这\(n\)个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 ...

  4. 「NOIP2016」天天爱跑步 题解

    (声明:图片来源于网络) 「NOIP2016」天天爱跑步 题解 题目TP门 题目 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...

  5. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  6. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  7. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  8. 「NOWCODER」CSP-S模拟赛第3场

    「NOWCODER」CSP模拟赛第3场 T1 货物收集 题目 考场思路即正解 T2 货物分组 题目 考场思路 题解 60pts 算法:一维 DP 100pts 算法:一维 DP ?线段树 + 单调栈 ...

  9. 「工具」Dubbo可视化测试工具的设计和实现

    「工具」Dubbo可视化测试工具的设计和实现 学习了:https://blog.csdn.net/qq355667166/article/details/78914453

随机推荐

  1. c++ 11新特性学习1

    static_assert 静态断言,特点是编译期的断言检查 assert 运行时期的断言检查 二者参数用法相同

  2. 神经网络中使用Batch Normalization 解决梯度问题

    BN本质上解决的是反向传播过程中的梯度问题. 详细点说,反向传播时经过该层的梯度是要乘以该层的参数的,即前向有: 那么反向传播时便有: 那么考虑从l层传到k层的情况,有: 上面这个 便是问题所在.因为 ...

  3. Lombok 常用注解

    Lombok Lombok 能以简单的注解形式来简化 java 代码,提高开发人员的开发效率.例如开发中经常需要写的 javaBean,都需要花时间去添加相应的 getter/setter,也许还要去 ...

  4. 解决ios10及以上Safari双击和双指缩放无法禁止的问题

    移动端web缩放有两种: 1.双击缩放: 2.双指手势缩放. 在iOS 10以前,iOS和Android都可以通过一行meta标签来禁止页面缩放 <meta content="widt ...

  5. web前端好书推荐 CSS权威指南《第3版,Bootstrap实战,精通CSS 高级Web标准解决方案 第2版 中文

    在我的新博客中==> http://www.suanliutudousi.com/2017/08/24/web%E5%89%8D%E7%AB%AF%E5%A5%BD%E4%B9%A6%E6%8E ...

  6. sshpass批量分发ssh秘钥

    首先安装sshpass: yum -y install sshpass 单条命令: sshpass -p“password” ssh-copy-id -i /root/.ssh/id_rsa.pub ...

  7. python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程

    python学习7—函数定义.参数.递归.作用域.匿名函数以及函数式编程 1. 函数定义 def test(x) # discription y = 2 * x return y 返回一个值,则返回原 ...

  8. 次梯度(Subgradient)

    参考链接:https://closure11.com/subgradient/

  9. 笔记:Python实现二分查找

    def search(sequence, number, lower=0, upper=None): if upper is None: upper = len(sequence) - 1 if lo ...

  10. 【JZOJ6273】欠钱

    description analysis 读懂题就可知\(b\)的收益即为\(a\)到\(b\)这一条链上边权的最小值 那么就是动态维护一个森林,询问链上最小值,同时必须满足儿子走向父亲 明显\(LC ...