首页 > 其他分享 >noip模拟11

noip模拟11

时间:2024-11-12 20:48:06浏览次数:1  
标签:11 移动 noip 位置 距离 序列 大于 排序 模拟

A 送信卒

考场上唐了,把方向搞反导致挂零。。。

然后就是跑一边 bfs,算出来最短路,并且记录横纵位移,就好了。

好像也可以二分然后去跑 djikstra。

其实有个 hack,会让我的代码在特定情况下不稳定地输出错解:

10 10
1 1 5 5
0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 0
0 1 1 1 0 0 0 0 0 0
0 1 1 1 0 1 1 1 1 1
0 1 0 0 0 1 1 1 1 1
0 1 0 1 1 1 1 1 1 1
0 1 0 1 1 1 1 1 1 1
0 1 0 1 1 1 1 1 1 1
0 1 0 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1
16

B 共轭树图

首先的结论,是 \(G\) 图是一棵树。

然后省略证明,然后考虑 dp:

设 \(f(x,i)\) 表示以 \(x\) 为根的子树,且 \(x\) 只允许与它的第 \(i\) 个祖先在 \(G\) 连边时,子树中的方案数。考虑枚举 \(x\) 在 \(G\) 中的父亲具体是哪一个,有转移:

\[f(x,i)=\sum_{j=1}^i \prod f(y,i-(j-1)+1) \]

然后在统计时用前缀和优化即可。

C 摸鱼军训

可算是搞懂了。

首先,我们需要确定一个数在 \(k\) 次冒泡排序后的位置,有以下几种可能:

  • 第 \(k\) 次排序后前面仍有比他大的数;

  • 没有比他大的数

  • 他已经不会再移动(前缀已经有序)

首先,有几个比较重要的引理:

若 \(x\) 后方有 \(k\) 个小于它的数,第 \(k+1\) 个数大于它,那么本次移动 \(x\) 和下一个大于 \(x\) 的数中间的数都会移动到 \(x\) 前方。

证明:
我们设小于 \(x\) 的数为 \(p_1,p_2...p_k\),大于 \(x\) 的数为 \(q_1,q_2,...q_k\)
假设一次排序前的序列为 \(x,p_1,p_2,p_3,q_1,p_4,q_3\),那么显然,\(x\) 会与 \(p_1\) 交换,然后指针依然在 \(x\) 上,会与 \(p_2\) 交换,直到 \(q_1\) 为止。而接下来 \(p_4\) 会从 \(q_1\) 和 \(q_2\) 中间移动到 \(x\) 和 \(q_1\) 中间,以此类推。

若 \(x\) 前方已无大于它的数,且保证接下来的序列一定会变,那连续 \(k\) 次排序,第 \(i\) 次排序后 \(x\) 应该距离 \(p_i\) 在序列中的原位置有 \(i\) 长度。

证明:
我们已知一次排序后 \(x\) 会处在某个大于它的数的前面,那么根据上面的结论,第 \(i\) 次排序会使 \(q_{i-1}\) 和 \(q_i\) 中间的所有 \(p\) 移动到 \(q_{i-2}\) 和 \(q_{i-1}\) 中间,
此时,我们假设序列中没有 \(<x\) 的数,那排序到 \(k\) 次时确实距离 \(p_k\) 为 \(i\)。
那现在有了 \(<x\) 的数,原序列中且 \(p_k\) 后面的、\(<x\) 的数来到了 \(x\) 的正后方,假设有 \(m\) 个,
也就是原 \(p_k\) 的位置向后推了 \(m\),设现在 \(x\) 到 \(p_k\) 距离为 \(n\),那有 \(n=m+k\)
就是每次向后使所有 \(p\) 产生位移的 \(m\) 加上本身距离的 \(k\),就是现在的距离。
那么 \(x\) 到 \(q_k\) 的原位置不就是 \(n-m\),那不就是 \(k\) 吗。

情况 \(1\):

若 \(x\) 前面仍有大于它的数,那距离 \(x\) 最近的、大于 \(x\) 的数一定会移动到 \(x\) 后方。证明可看引理 1

那么,有 \(i\) 个大于 \(x\) 的数,就一定需要 \(i\) 轮去把它们移动到 \(x\) 后方。并且,每移动一轮,\(x\) 的位置都会 \(-1\)。

因为有一个在它前面的大于它的数到了后面,且只有一个,所以会 \(-1\)。

记原序列中在位置 \(p\) 前方且大于 \(a_p\) 的数的个数为 \(rev_p\),那么对于所有 \(k\le rev_p\) 的轮,\(a_p\) 的位置一定是 \(p-k\)。

情况 \(2\):

此时,\(x\) 的前方已经没有比它大的数了,那我们根据引理 2,在第 \(k\) 轮,\(x\) 到 \(p_k\) 原位置的距离为 \(k\),只需要维护所有大于 \(x\) 的数的位置,并且找第 \(k\) 大的,那么本次排序后 \(x\) 的位置就是 \(pos_{p_k}-k\) 了。

情况 \(3\):

在第 \(i\) 轮,编号为 \(n-i+1\) 的数一定会被移动到最终位置。

D 神奇园艺师

标签:11,移动,noip,位置,距离,序列,大于,排序,模拟
From: https://www.cnblogs.com/ccjjxx/p/18542618

相关文章

  • error: NU1100: 无法解析 net8.0 的“System.Management.Automation (>= 7.2.0)”。
    前言最近,在使用Net调用PowerShell,碰到了一个很不常见的错误,记录一下,也许有朋友会遇到,希望有所帮助。正文错误截图如下,其实很奇怪,一样的代码,有些地方报错,有些没事。2.文字版本的错误,方便复制粘贴,如下:MicrosoftWindows[版本10.0.22000.2538](c)Micr......
  • SS241112A. 定向越野(walk)
    SS241112A.定向越野(walk)题意给你\(n\)个点,\(n\le12\),你可以从任意一个点出发以任意顺序依次遍历所有点燃火回到起点,你只能拐直角走,问最小路程。答案输出最小路程的平方,输出分数形式。可以证明最小路程的平方一定是有理数。思路显然枚举遍历顺序。首先需要明白为什么答案......
  • 11.12
    贺了好多道AT之后发现自己瞎猜的能力有所提升!!!11.11A.开场二十多分钟猜了个结论,感觉很对。由于只有一个小样例且题面没说有自环甚至暗示没有自环且数据故意造自环最后挂成了20分。最后环一定是每个点的读书都为\(2\),所以对于度数大于\(2\)的我们要对它进行一次拆,若度数......
  • NOIP模拟赛 #10
    ALuogu6472猜结论。B有\(n\)堆硬币,每堆有\(3\)枚,第\(i\)堆硬币从上到下价值分别为\(a_i,b_i,a_i\)。取若干个硬币,要求每堆必须先取上面再取下面,求分别取\(1,2,3,\dots,k\)枚硬币时的最大价值和。\(1\len\le5\times10^6,\1\lek\le3n\)对于第\(i\)堆,......
  • 每日打开 11.12
    [AHOI2021初中组]超市购物题目背景AHOI2021初中组T1你可以选择跳过背景部分。春的一天,正是乍暖还寒时候,狂风乍起。小可可裹紧了单薄的外衣,往小雪家中赶去。“今天真不是个出门的时候啊!”小可可感叹道。“但是我还有东西要买……你就陪我去下超市吧?”在超市里,小雪一共买......
  • [考试记录] 2024.11.12 noip模拟赛11
    T1使用\(bfs\)记录走到\(tx,ty\)的路径的横边和竖边的数量,然后取\(\max\)。这里取\(\max\)的原因是,找到的路径必须是最短路,当\(k\)取的小的时候竖边就会变多,所以这条路径就不一定是最短路了。#include<bits/stdc++.h>usingnamespacestd;#defineppair<int,int>i......
  • 2024/11/12日 日志 关于Servlet ---- Request(请求)& Response(响应) 的补充
    Request(请求)&Response(响应)--·Request:获取请求数据--·Response:设置响应数据Request点击查看代码--Request继承体系--ServletRequestJava提供的请求对象根接口--HttpServletRequestJava提供的对Http协议封装的请求对象接口--RequestFacade......
  • 2024.11.12 1842版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 20241112 模拟赛总结
    期望得分:100+100+0+10=210实际得分:100+80+0+10=190好困。。T1被硬控了很久。看着就像诈骗题,观察大样例发,答案就是\(a_1-a_2\),特判\(n=1\)的情况。证明的话,感觉就是后面的数,贡献成正数和负数应该是数量相同的,所以就抵消了,第一个数只能贡献成正数,第二个数只能贡献成负的。T......
  • Linux(11)——守护进程
    目录一、daemon:二、systemd:三、服务单元:1、单元类型:2、systemctl:3、依赖关系:4、屏蔽与取消屏蔽:一、daemon:        守护进程daemon是在后台运行或等待的进程,以执行不同的任。通常daemon在系统启动时运行,直到关机时才结束运行。二、systemd: ......