首页 > 其他分享 >2024.8.5

2024.8.5

时间:2024-09-14 21:13:09浏览次数:1  
标签:10 暴力 2024.8 text 一个 操作 逆序

现在是 \(20:45\),场上只有三个小学生改出来 \(\text{T4}\) 了,你校小学生太可怕。不想写 \(\text{T4}\) 了,还有一个小时写写总结吧。

今天大爆炸,无论是思维上还是码力上还是读题上。
\(0+10+40+0\),真的要挂到地板上了(我发现一个规律,每次比赛 \(\text{T3}\) 的分都是最高的。

T1 逆流而上

今天的 \(\text{T1}\),还是像往常一样的 shi。

题意:给一个 \(01\) 串,\(A,B\) 两人先后轮流操作,都以最优方式,谁不能操作为输。问谁赢。操作方式为将以下四种之一的串反转:\(\text{"10","100","110","1010"}\)。

一上来又是猜结论。哎我们观察发现能反转的里面都带 \(10\),那么考虑从左往右找 \(10\),统计个数,诶我们发现两个 \(10\) 并在一起可以一次操作搞掉,于是我们手模发现当扫到一个地方发现这个位置之后的 \(10\) 个数为奇数,那么它就会赢。因为:\(“ABABA”\),这是个奇数次操作,最后一次刚好停在 \(A\) 手上,且第一次是 \(A\),于是就有了上述结论。然后又想到一个 \(1010\) 是一个关键操作,因为他可以转变奇偶性,然后对于奇偶情况分类讨论……

然后一个小时过去了,测一下第一个样例过了。后面的样例没一个对的,然后发现思路假了,就陷进去了,再也想不出什么新思路,甚至暴力也不会打,就死了。

来看看正解是怎么想的。首先最终状态一定是左边一坨 \(0\),右边一坨 \(1\),\(10\) 不能穿插着放,因为只要能放了,必然能反转。所以相当于就是要把所有的 \(1\) 往右边换,所有的 \(0\) 往左边换。呃呃然后你看看操作类型:把 \(10\) 反转成 \(01\),相当于把逆序对减少了 \(1\),\(100\) 反转是把逆序对减少了 \(2\),\(110\) 也是把逆序对减少了 \(2\),\(1010\) 还是把逆序对减少了 \(2\)。所以我们发现当只有一个逆序对时,肯定是类似于 \(00000010111111\) 这种情况,即中间只有一个 \(10\),两边都是好的;那其余情况的逆序对肯定都至少是 \(2\)。那么肯定就至少会包含 \(100,110,1010\) 中的一个。我们再仔细看看反转这些串发生了什么本质上的变化:\(100\) 反转成 \(001\) 其实就是把 \(1\) 移动到最右边;\(110\) 反转其实就是把 \(0\) 移动到最左边;\(1010\) 其实就是把最左边的 \(1\) 移动到最右边。那么这每一个逆序对 \(-2\) 的操作其实都在向最终序列靠近。又可以看到这些逆序对 \(-2\) 的操作其实是可以拆出来逆序对 \(-1\) 的操作的。因为他们里面都包含 \(10\),你可以单独拆出来 \(10\) 进行逆序对 \(-1\) 的操作。

综上得到如下结论:

  • 当总逆序对为 \(3\) 的倍数时,后手可以使它始终维持为 \(3\) 的倍数(因为先手给一个 \(-2\) 后手就能还上一个 \(-1\))。
  • 当总逆序对不为 \(3\) 的倍数时,先手总可以使它成为 \(3\) 的倍数(同上)。

所以: \(n \mod 3 = 0\) 时,后手胜;否则先手胜。

这其实是一个比较经典的博弈论问题了,或者说你观察题目名称“逆流而上”是不是也能看出来逆序对?然后观察观察样例输出和逆序对的关系也许就能发现结论。呃呃,以后 \(\text{T1}\) 就当结论题做。

T2 致命冲击

什么鬼,这不就是纵使日薄西山

对于一个长度为 \(n\) 的整数序列 \(a_n\),它的权值定义如下: 找到序列中最大的数 \(a_x\) ,将 \(a_{x-1},a_{x},a_{x+1}\) 均减 1. 如果有多个最大的数则取标号最小的那一个。

重复进行以上操作直到序列中不存在正数,操作的次数就是这个序列的权值。

现在给出 \(a_n\) 并有 \(q\) 次修改,每次将某个数修改。在每次修改后 \(a_n\) 的权值。

拿到这个题就想,你得查区间最大,还要找序号最小的那个,然后区间修改,怎么打暴力?直接上线段树啊。

然后打了一棵线段树,拿了 \(10\) 分。发现我的暴力比别人的暴力复杂度还多一个 \(n\),少 \(40\) 分。因为是真的纯暴力没有发现本质。

可以想到,每一个 \(a_{i-1},a_{i},a_{i+1}\) 大小关系一定是不变的。为啥,因为能操作肯定保证 \(a_i\) 是三个里面最大的,不可能改着改着 \(a_{i-1}\) 还比 \(a_i\) 大了吧。那你肯定偷偷把 \(a_i\) 用 \(a_{i+1}\) 修改了,而 \(a_{i+1}\) 又没 \(a_i\) 大,所以不可能。那么最终要使所有数到 \(0\),\(a_i\) 还没别人能改,只能是自己把自己一点点减成 \(0\) 的,所以肯定不用暴力减,每次找到一个 \(a_i\) 直接给总答案加上 \(a_i\) 然后给他们仨打标记就行了。这样复杂度应该可能是 \(O(q\log^2n)\) 的吧,好像差不多,但是常数是相当大啊。多了一个 \(\log\)。然后这个复杂度肯定是要比纯暴力优秀的,纯暴力是 \(O(nq)\),但是没多放部分分的档。

最重要也是本题最惨的挂分点加粗了。

T3 帝国飘摇

倍增写。砍一个 \(n\) 变成 \(\log\)。
想到平衡树维护区间,复杂度 \(O(Tnm\log n)\),有 \(80\) 分,但是这里的前驱后继是假的前驱后继,写的时候脑抽没想到,但是大样例四个过了三个,还以为是精度问题。。因为这里的前后是牵扯到相同元素的,所以你直接开个 vector 暴力跑都行,何必要用平衡树?……

T4 通天之塔

读错题可还行,它是每一个线路的平方和不是每一条边的平方和,所以你从起点开始往线路的每个点都连条边,长度可以前缀和求,跑最短路这样的话复杂度应该是 \(O(n^2)\) 的。

标签:10,暴力,2024.8,text,一个,操作,逆序
From: https://www.cnblogs.com/myyy115922/p/18414700

相关文章

  • 2024.8 模拟赛日志
    目录前七天讲课(20240730~20240805)24暑期集训ab班day1(20240806)24暑期集训ab班day2(20240807)24暑期集训ab班day3(20240808)24暑期集训ab班day4(20240809)24暑期集训ab班day5(20240810)24暑期集训ab班day6(20240811)24暑期集训ab班day7(20240812)24暑期集训ab班day8(20240813)24暑期集训ab......
  • AIGC月刊 | 大模型/多模态/文生图/AI视频最新技术进展(2024.8月第四期)|【魔方AI新视界
    〔更多精彩AI内容,尽在 「魔方AI空间」 公众号,引领AIGC科技时代〕关注了解更多AI内容本文作者:猫先生AIGCmagic社区知识库(免费访问)原文地址:AIGC月刊|大模型/多模态/文生图/AI视频最新技术进展(2024.8月第四期)【魔方AI新视界】写在前面【魔方AI新视界】专栏致......
  • 2024.8.10模拟赛17
    模拟赛今天是七夕耶!哦,今天是七夕呀。。。T1Non-decreasing题目背景先拿部分分,当全正或全负时很显然,只需要\(n\)次操作:正:如果\(a_i\gta_{i+1},a_{i+1}\gets(a_i+a_{i+1})\)。负:如果\(a_i\lta_{i-1},a_{i-1}\gets(a_i+a_{i-1})\)。然后开始想有正有负的情......
  • 2024.8.7 模拟赛 15
    模拟赛。。。T1绿绿和串串学习manacher。先说求回文串,manacher算法,每次记录向右能延伸最长的回文串和回文中心。这样对于新扩展的字符,按已有的回文中心对称过去,会得到一个已经求出的回文长度,在这个基础上向两端扩展就好了。对于普通的回文串,有奇回文和偶回文两种,为了方便......
  • 2024.8.8模拟赛16
    模拟赛重拾题解(刚刚写过一版忘保存了)T1其实就是个最长公共子序列的变形。把一样的数才匹配换成有倍数关系就匹配。最长公共子序列:一般转化为最长上升子序列,即在一个串中的数\(a\),找到它在另一个串中的位置\(j\),从\(1\dotsj-1\)转移即可,取最大值可用树状数组维护前缀最......
  • 2024.8
    1.ARC183DKeepPerfectlyMatched思考了一会后,发现答案是存在一个上界的:以重心\(r\)定根,一条边至多经过\(sz_i\)次。而这个东西一出来,就知道一定是能顶到的了,因为太典了。我们考虑,当且仅当,每次删除的两个叶子,都属于\(r\)的两颗不同子树,符合要求。而一次删除,怎么样才能让......
  • 第七周总结(2024.8.17)
    importrequestsimportre#请求URLurl='<http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html>'#请求头部headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58......
  • 第八周总结(2024.8.24)
    importtimefromseleniumimportwebdriverimportrequests#请求URLurl='<https://weibo.com/>'#请求头部headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0......
  • 第九周总结(2024.8.31)
    packagecom.java.hadoop.hive;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importorg.apache.hadoop.hive.metastore.api......
  • 第五周总结(2024.8.3)
     本周学习python爬虫所出现的问题:1、设置请求头Headers的问题一般headers设置user-Agent即可,如果有的数据是登陆后才能看到的话,还需要添加cookies参数(先登陆账号后,在浏览器的开发者工具中,拷贝Cookies即可)。这些参数都可以在浏览器的开发者工具中找到。2、编码问题......