36.1 party(CF623D)

很是鸡贼的一道题

首先要明确一点,抓人是有策略,而不是随机的,可以认为等同于按一个给定的顺序猜人,那么这时猜中的概率就只是抓住这个人的概率了

对于每一次猜测,因为使用最优策略,所以每一步都猜当前使游戏结束几率最大的那个人

令\(q_i=1-p_i\)即为第\(i\)个人不被猜中的概率

则第\(i\)个人在被猜\(j\)次后已经被猜中过的概率即为\((1-q_i^j)\)

那么这时游戏已经结束的概率即为\(\prod\limits_i(1-q_i^j)\)

于是模拟每轮,贪心找出对结束概率增长贡献最大的人,把猜他的次数++

要求精度为\(10^-9\),模拟\(300000\)次即可满足精度要求(这是最鸡贼的地方

最后……

\(\huge{戒瞎开long\ long}\)

36.2 fibonotci(CF575A)

看到每一项都由前面的两项结合指定的系数得到,而且有循环节,那么每个循环节的运算矩阵是可以用矩阵乘法维护的

但是有修改操作,所以需要一种支持高效修改与“求和”的方法

那么线段树是可以满足这个需求的

按循环节跳,每次如果发现当前循环节里有被修改的位置就先改,算完再改回来

很难写,至少对我来说……

36.3 parking(CF480E)

悬线法,似乎和玉蟾宫类似,只不过变成了求最大正方形,而且带修改

悬线法就是每个点求向上/向下延伸的最远距离,

首先考虑求最大正方形的方式:从大到小枚举区间长度,然后看这个长度的区间中是否存在一个区间,使它中向上/下延伸长度的两个最小值之和不小于这个区间的长度,那么这样找到的第一个符合条件的区间长度就是此时的最大正方形边长

那也肯定不是\(O(qn^3)\)求啊!

发现如果从前往后推,答案是不断减少的,但我们并不知道每个时刻的答案是在地图的哪个位置出现的,所以必须遍历每一个位置才能得到答案,效率极低

又发现其实刚开始就可以推出最后的状态,而如果从后往前推,也就是把点一个一个删去,可能出现改变答案的位置就只有删去的这个点所在的一行

那么可以把修改离线存下来,然后倒着来,首先用\(O(n^2)\)dp求,这样每次就只用\(O(n^2)\)查找一行的答案改变,因为答案是从后往前是单调不减的,每次从上一个答案开始,\(O(n^2)\)更新答案

查找区间最值的操作可以用线段树来维护,这样每次更新答案用当前行建一次树,更新答案时就可以\(O(n\log n)\)了

36.4 ant

高斯消元的主元法优化,留坑……

37.1 简单题

首先发现\((a+b)\)的值和\(c\)的值之和是不变的,而最后的答案只关心\(c\),所以可以把\((a+b)\)和\(c\)的值分开考虑

发现在\(%(a+b+c)\)意义下,加倍的操作和减去另一个数的操作是等价的,所以直接处理一个快速幂与原数相乘即可

37.2 斗地主

神仙思路:把每张牌正反两面的权值连边,那么在存在环的联通块中,所有值都能取,而在一棵树中,必有一个值取不到

所以并查集处理每个联通块,并记录每个联通块的最大/最小值,如果有一棵树权值的值域被询问区间包含,那么询问区间里必有一值取不到

可以用线段树处理区间包含的问题,就能做到\(O(q\log n)\)

37.3 变化的树

每次操作可以看作是树上加了一个等差数列

那么可以用线段树维护差分数组,然后树链剖分一下

38.1 理发

每一次大于\(h_i\)的头发被推平,那么之前等于\(h_i\)的头发与这些头发构成的逆序对就会被全部消除

那么处理出每个高度的头发贡献的逆序对个数,然后在\(j=0\)时答案为\(0\),那么相当于给上面处理出来的数组做一个前缀和

38.2 T形覆盖

考虑将"T"形转化成十字删一角,并重新建图,那么将摆放方式固定的十字连自环,否则与和他有角相交的点连边,用边表示这两个十字其中一个要删这个点占用,那么最终的方案每个点都要至多占有一条边,且每条边都必须被一个点占有,否则无解。

分析这个条件可以发现有解时每个联通块都是树或基环树:

  • 如果是基环树,那么每个点都可以恰好占有一条边,这块区域能被覆盖满
  • 如果是树,那么必须有一个点要放弃一条边,一个点得删,所以贪心取这个联通块里最小的权值减去

39.2 dequexlis

发现其实操作后的最长上升子序列长度就是把原序列镜像复制一遍再求到的长度

因为严格上升,所以可以保证一个数不会在两边被重复取到

39.3 最大前缀和

把数抽象成在网格上的移动,从原点出发,\(-1\)为向上走,\(1\)为向右走,那么经过的点中横纵坐标之差最小的位置就代表了最大前缀和

发现所有答案一样的点都在一条直线上,那么可以用卡特兰数时学的那个套路沿直线对称再组合数求出不超过某条对角线的方案总数,再记录上一条总数,相减得到恰好最大值为每个值时的答案

W2.1 袜子分配

选出一双袜子,一共有\(\binom{2n}{2}\)种方案,能取到一双袜子有\(2n\)中方案,取\(n\)次答案即为\(\frac{2n^2}{\binom{2n}{2}}\)即为\(\frac{n}{2n-1}\)种方案

W3.2 路径难题

明显需要求一个最短路,但条件比较复杂,考虑建图的方式:对于每条公交线路,所有站台向一个虚点连权值为票价的边,并从这个虚点向所有站台连权值为\(0\)的边

建好边后跑\(dijkstra\)即可,因为要上取整,注意每次坐公交时需要把当前的距离先上取整一下再乘回去,最后一起除以\(r\)就是对的

「考试」联赛模拟36-39,noip晚间小测2-3的更多相关文章

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

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

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

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

  3. 「考试」CSP-S 2020

    乱扯 爆炸的过程是这样的 写了\(2.5h\)的\(T1\)过不去大样例,自闭了 决定调\(T2\)然后过了样例但事实上写的完全是假的 这个时候突然\(T1\)灵光一闪就没再看\(T2\)了 然后就一 ...

  4. 「数据结构」:模拟指针(simulated pointer)

    模拟指针,也就是清华严老师<数据结构-C语言描述>中的静态链表,静态链表的引用是使用一段连续的存储区还模拟指针的功能,可以有效的利用一段连续内存进行一定范围内可变的子链表的空间分配,此数据 ...

  5. [考试反思]0907NOIP模拟测试39:角落

    题比较简单,但是做的非常烂. T1是个愚蠢的找规律组合数快速幂,数组开小了(看错数据范围) T2题目保证联通没看见,hack掉了正解. T3也挺蠢的,但是打乱了,思路不是很清晰导致丢了50分. 只能说 ...

  6. 「考试」weight

    正解是树剖. 首先Kru求最小生成树. 然后分别考虑树边和非树边的答案. 首先是非树边,非树边链接的两个点在MST上能够构成一条链. 这条链上最大的那条边-1就是这条边的答案. 为什么. 模拟Kru的 ...

  7. 「考试」$5T$

    啊因为最近题实在是好啊,只能四五篇四五篇写了. T1. 括号序列的确简单. 当我们维护左右$cnt$后. 到一个左括号的地方的话. 答案就是:$$\sum\limits_{i=1}^{min(lc,r ...

  8. 「考试」小P的生成树

    考场上想到一半正解,没想到随机化,不然也许能够$A$掉. 题目所说的其实就是向量加法,求模长最长的向量生成树. 我们考虑对于两个向量,必然在平行边形对角线方向上,他们的投影和是最大的,长度就是对角线长 ...

  9. 「考试」num (破800纪念)

    是第800题啦. 怎么说,$rvalue$学长写的已经挺好的了,我在这里做一点补充,写一点理解. 但是这道题真的值得写一下题解,毕竟一百行也算是数论工程题了. 定义函数 $Fp(k,n)$为$n$中$ ...

随机推荐

  1. python爬虫自定义header头部

    一.Handler处理器 和 自定义Opener 关注公众号"轻松学编程"了解更多. opener是 urllib.OpenerDirector 的实例,我们之前一直都在使用的ur ...

  2. [LuoguP1005]矩阵取数游戏 (DP+高精度)

    题面 传送门:https://www.luogu.org/problemnew/show/P1005 Solution 我们可以先考虑贪心 我们每一次都选左右两边尽可能小的数,方便大的放在后面 听起来 ...

  3. Java 将JSON反射到实体类

    通过服务间调用拿到的数据返回的格式是JSON,如果你当前这个服务有实体数据类型可以对应上,那么就可以轻松愉快的搞定. 如果数据格式对不上,例如这个JSON里面有些数据是我们不想要的,这样我们实体的数据 ...

  4. 常见特征金字塔网络FPN及变体

    好久没有写文章了(对不起我在划水),最近在看北京的租房(真真贵呀). 预告一下,最近无事,根据个人多年的证券操作策略和自己的浅显的AI时间序列的算法知识,还有自己Javascript的现学现卖,在微信 ...

  5. 面向初学者的Python爬虫程序教程之动态网页抓取

    目的是对所有注释进行爬网. 下面列出了已爬网链接.如果您使用AJAX加载动态网页,则有两种方式对其进行爬网. 分别介绍了两种方法:(如果对代码有任何疑问,请提出改进建议)解析真实地址爬网示例是参考链接 ...

  6. LSV又新增13个地质图!量测对比分析全都能搞定

    对于地质工作者来说,地质图是个十分重要的参考资料.随着国家解密的地质资料越来越多,能够有效的把各种地质资料结合起来,进而提高地质工作者的作业效率,是十分有意义的. LSV(LocaSpaceViewe ...

  7. gitlab - 解决添加webhook提示Url is blocked: Requests to the local network are not allowed的问题

    问题背景 给项目添加 webhook 保存之后报错了 解决方案 进入 admin  area 进入 settings-network 保存设置后,重新进入项目并设置 webhook 保存即可成功

  8. 睿象云:为什么 Zabbix 告警如此火热?

    每当我们谈及监控工具的时候,Zabbix 总是最惹人瞩目的那一个.如同清晨荷叶上的剔透露珠,卓尔不凡:如同巷子末头的百年酒香,让人倾心.我们都知道 Zabbix 是监控工具里当仁不让的龙头大哥,却没几 ...

  9. Socket accept 简要分析

    accept 用于从指定套接字的连接队列中取出第一个连接,并返回一个新的套接字用于与客户端进行通信,示例代码如下 #include <sys/types.h> /* See NOTES * ...

  10. 极客mysql06

    两阶段锁:在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放, 而是要等到事务结束时才释放. 建议:如果你的事务中需要锁多个行,要把最可能造成锁冲突.最可能影响并发度的锁 ...