首页 > 其他分享 >2024.7.26 test

2024.7.26 test

时间:2024-07-27 20:30:03浏览次数:12  
标签:盏灯 26 le 2024.7 必败 偶数 最小化 那么 test

A

给定序列 \(A\),构造 \(p_i\),使得 \(\sum |i-p_i|\) 最小,且 \(B=\{A_{p_i}\}\) 满足奇偶交错出现,且最小化 \(B\) 字典序。
\(n\le 1e5\)。

如果没有最小化字典序,那么我们奇偶分别按照相对顺序分配位置即可。
最小化字典序怎么做呢?我们先把连续的向左或向右的连续段拿出来。
例如最后是连续向右的,那么只要最后还是连续向右的,就可以交换。可能需要数据结构。

B

有 \(n\) 盏灯,初始为熄灭,每盏灯只由一个开关控制,一个开关可以控制多盏灯。
\(q\) 次询问,更改某开关的状态后,极长的亮灯区间有多少个。\(n,q\le 1e5\)。

转化为计算 01 交错的个数除以 2。根号分治秒了。

C

我们发现只有 \(4\) 种不同的树。从结束状态开始往回推,(当前必胜,必败)*(之后必胜,必败)\(4\) 种。
用 \((0/1,0/1)\) 表示,\(0\) 表示输,\(1\) 表示赢。如果有 \((1,1)\) 那么把他放在第一位先手必胜。
逐个分析,如果已经确定后面的状态:
加入 \((0,1)\) 那么状态不会变,且先后手不变,所以这是无用的;加入 \((1,0)\),状态会改变,先后手交换;
如果有 \((0,0)\),因为没有 \((1,1)\),所以无论是先后手只能不断填 \((1,0)\),否则对方就填 \((0,0)\) 了。
所以如果有 \((0,0)\) 且 \((1,0)\) 为偶数个先手必败。其实,有偶数个 \((0,1)\),因为最后是 \(0\),所以一定会输。
所以先手必败的充要条件是:没有 \((1,1)\),且偶数个 \((1,0)\)。

D

\(n\) 个人之间打循环赛,对于 \((i,j)\) 之间的比赛,其中 \(i<j\),有 \(p\) 的概率 \(i\) 获胜,\(1-p\) 的概率 \(j\) 获胜。
把这 \(n\) 个人分成两个集合 \(A,B\),使得 \(A\) 集合里的所有人都战胜 \(B\) 集合的所有人。
对于所有 \(k\),求 \(|A|=k\) 的概率。\(n\le 1e6\)。

考虑 dp,设 \(F_{n,k}\) 表示当前考虑了 \(n\) 个人,\(|A|=k\) 的概率。
考虑新加一个点,往大的加,那么 \(F_{n+1,k}=p^{k}F_{n,k}+q^{n-k+1}F_{n,k-1}\)。
如果往下的加呢?\(F_{n+1,k}=q^kF_{n,k}+p^{n-k+1}F_{n,k-1}\),二式相减。
那么 \(F_{n,k}\times(p^k-q^k)=F_{n,k-1}\times (p^{n-k+1}-q^{n-k+1})\)。
那么我们可以 \(O(n)\) 的递推出 \(F_n\),其中 \(F_{n,0}=1\),需要特判 \(p=q\) 的情况,这个直接组合数算。

标签:盏灯,26,le,2024.7,必败,偶数,最小化,那么,test
From: https://www.cnblogs.com/Simon-Gao/p/18327415

相关文章

  • SMU Summer 2024 Contest Round 8
    SMUSummer2024ContestRound8Product思路注意到\(\prod\limits_{i=1}^NL_i\le10^5\),也就是说N不会超过16,因为\(2^{17}>10^5\),所以我们可以直接暴搜。代码#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ios::sync_with......
  • ACM日常训练日记——7.26
    Atcoder训练PowerfulDiscountTickets我们只需要动态维护使最大的值变小即可,这里我采用multiset去记录,有相同元素存在,也可以采用优先队列去维护#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;lln,m;llv[100010];multiset<ll>st;multiset<ll......
  • 算法训练 2024.7.27 17:25
    目录1.两数之和2.反转链表3.是否为有效的括号4.最长公共前缀5.合并两个有序数组6.岛屿的个数7.最小路径和8.三数之和9.计数质数10.字符串转换整数(atoi)1.两数之和题目:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整......
  • 2024.7.22至2024.7.27周总结
    本周学习任务清单数据结构:树链剖分。解题思路:CDQ分治,整体二分。数论:费马小定理,素数筛法,欧拉定理,逆元,拓展欧几里得算法,中国剩余定理,Miller_Rabin素数检测,PollarRho分解质因数算法。多项式和生成函数:拉格朗日插值法,普通生成函数。线性代数:向量,线性组合,线性变换,线性,矩阵,行列......
  • AtCoder Beginner Contest 363
    上周去玩了(逃A-PilingUp(abc363A)题目大意给定分数,问晋级还差多少分。分别到\(100,200,300\)分能晋级。解题思路找到第一个大于当前分数的,其差即为答案。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){io......
  • ABC260F 题解
    题面根据题目描述,原图为二分图,设两侧点集为\(S,T\),大小为\(s,t(s\le3\times10^5,t\le3\times10^3)\)。注意到有四元环当且仅当\(T\)中存在一个点对\((a,b)\)同时和\(S\)中的某两个点连边。可以先考虑暴力,一种想法是:考虑枚举\(S\)中的点\(c\),设和\(c\)连边的点......
  • ABC263F 题解
    题面注意到把对局在图上表示出来是一颗满二叉树(叶节点为选手,其他点为对局),可以考虑树形dp。设\(x\)为\([l_x,r_x]\)之间选手的比赛,且该节点到叶子结点距离\(d_x\)。设\(f(x,p)\)表示胜者为\(p\)的最大钱数,有转移:\[\begin{aligned}f(x,p)&=f(lson(x),p)+g(rson(x))+a......
  • ABC262F 题解
    题面把“移动\(a_n\)至数列头”称为rotate,删除一项称为erase。因为要求字典序最小,所以可以逐位贪心。考虑一个数\(a_i\)怎么变成第一个数:使用\(n-i\)次rotate/erase,再rotate一次。删除或移动原来的\(a_{i+1}\sima_n\),再移动原来的\(a_i\)(逐步移动到数列尾,再ro......
  • ABC261F 题解
    题面注意到如果两个球\(i,j\)有\(i<j,x_i>x_j\),那么这两个球一定会交换。所以要交换\(x\)的逆序对数次。但是相同颜色交换没有代价,所以答案是\(x\)的逆序对数减去满足\(c_i=c_j,i<j,x_i>x_j\)的\((i,j)\)对的数量。可以对每个\(j\)都求一遍满足\(c_i=j\)的\(......
  • ABC264F 题解
    题面注意到操作只对当前行/列有效,所以只要记录当前所在行和列是否有被操作。设\(f(i,j,x,y)\)表示到了位置\((i,j)\),第\(i\)行是否被操作,第\(j\)列是否被操作的最小代价。转移:设\(col=c(i,j)\oplusx\oplusy\)。\[\begin{aligned}f(i+1,j,x2,y)&\xleftarrow......