前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2018.10.23NOIP模拟赛解题报告

2018.10.23NOIP模拟赛解题报告

作者头像
attack
发布2018-11-09 16:09:08
3640
发布2018-11-09 16:09:08
举报

心路历程

预计得分:\(100 + 50 + (10 \sim 50)\)

实际得分:\(100 + 10 + 50\)

这可能是我打的最懵逼的一场考试没有之一。。

T1两个小时才做出来也是醉了。

T2讲过原题但是不会做其实只要改一个字符就能A了

T3只会打套路暴力。。

比赛开场看T1一点思路都没有,不管怎么想都是\(O(n^2)\)的复杂度,做了好久终于发现自己傻逼了这就是个傻逼题。。

开始做T2的时候慌的一批,因为旁边的大佬们都已经把暴力打完了。。T2没多想就写了50分(实际上已经无限接近正解了。)

距离考试还有\(30min\)的时候才开T3,发现暴力单调栈可以拿\(50\)分,但是写起来特别恶心。不过万幸在考试结束前\(2min\)写出来了。但是大数据一拍就wa。。感觉自己药丸。不过最后不知道啥原因该得的分还是拿到了。

出了成绩发现大家考的都不理想。T1、T2都有大佬fst了。

然后我就win了???。。。。

题解

题目数据代码

T1

一道很zz的题目然而被我硬生生的做成了一道不可做题。。

显然\(x\)与\(p\)互质的话一定存在一个\(y\)满足条件,为了不重复统计需要特殊考虑一下\(x = y\)的情况

T2

非常迷的一道题

cf547D. Mike and Fish(欧拉回路)

T3

这个就比较interesting了。。

直接说正解吧

按照cdq分治的思想来做,每次只考虑过\(mid\)的贡献

对于\(mid\)左边的点,维护后缀\(mn, mx\),对于在\(mid\)右边的点,维护前缀\(mn, mx\)

维护\(p_1, p_2\)分别表示在过\(mid\)的点中,比当前\(mn[i]\)小的第一个元素 / 比\(mx[i]\)大的第一个元素

显然\(p_1, p_2\)具有单调性。

这样需要统计的区间就被分成了三段(假设\(p_1 < p_2\))

\((mid - p_1](p_1 - p_2](p_2, r)\)

维护好\(mn, mx, mn \times mx\)的和。所有贡献都是可以算出来的,递归做即可

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 心路历程
  • 题解
    • T1
      • T2
        • T3
        相关产品与服务
        大数据
        全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档