二轮前的做题记录

记录一下做过的题目和简要题解,复习的时候多看看

1.数对子

题意:定义一个数对$(x,y)$是好的,当且仅当$x\le y$且$x\;xor\;y$二进制下有奇数个$1$,现在给定$n$个区间$[l_i,r_i]$,对每个$i(1\le i\le n)$求出区间内好的数对的个数

题解:首先可以发现答案一定是由二进制下$1$的个数为奇数的数个数乘以偶数的个数,考虑怎么去统计

我们发现$(0,1)(2,3)(4,5)...(2k,2k+1)$每相邻两个数都是由一个二进制下$1$的个数为奇数的数和一个偶数的数组成

剩下的问题就可以放到线段树上维护一下

2.逆序对

题意:给定一个由$[2,n]$的偶数组成的数组$b$,将所有$[1,n-1]$内的奇数按循序插入其中,求最少产生的逆序对的个数

题解:首先有一个简单的结论,即每个奇数的最优位置在数组$b$中是单调的,也就是说我们只需要单独考虑把每个奇数插在哪里即可

依次枚举奇数$i$,可以发现,当枚举到$i+2$时,若还放在$i$所在的位置上,那么只有$i+1$对位置会对答案产生影响

具体来说,若此时将$i+2$放在$i+1$的后面,那么就不会产生逆序对,但如果之前把某个奇数放在$i+1$之后则会产生一个逆序对

我们可以默认第$i$个位置本身会产生$i$的贡献,然后依次枚举每个奇数$i$,将$i-1$的位置$p$到$n$的整个区间都减去$2$

此时$i$点的最优答案就是$i/2+min(0,querymin(1,n/2))$,对$0$取$min$的意思是将$i$放在最前边,会和所有的小于$i$的数产生逆序对

然后用线段树维护一下这个过程即可

3.绕口令

题意:给出一个字符串,对每个$k(0\le k<n)$求是否存在一种方法使得割掉连续$k$个字符后剩下的序列不存在相邻两个相同的字符且首尾字符不同

题解:一个环删掉一段,剩下的也是连续的一段,所以考虑剩下的一段。如果原串中有相邻的相同字符,则在相同字符处切开把环切成若干段,剩下的显然是某个段的一部分。

判断某个段是否有长度为x的头尾不同的子段,相当于判断一个前缀和一个后缀是否相同,使用KMP或hash即可

这里稍微解释一下,如果某个段的长度为$k$的前缀和后缀相同,那么这一段一定无法在前缀和后缀上割下长度和为$k$的两段,具体证明画图即可理解

这样可以判断出哪些长度的串是可能被保留的,然后和串长做差得出的数也就是某个合法的$k$

4.亵渎

题意:你有一个可重集合$A$,$A$中的元素是正整数,当一个元素变为$0$时从集合中删除。 你可以花费$p$使一个元素$+1$,花费$q$使一个元素$−1$。 你有一次机会花费r使得集合中所有元素$−1$,若有元素因此被删除,则重复这个操作(不需要额外的花费)。 你的目标是最小化将集合变为空集的花费。

题解:如果不用亵渎就是暴力把所有的元素都砍成$0$,否则将其排成一个连续的序列然后最后用亵渎

可以用$dp$来处理这个过程,设$f[i][j]$表示将前$i$个砍成$1$到$j$的排列的最小代价,然后直接枚举元素转移即可

5.世界杯

题意:假设在世界杯决赛前,有$n$个人参与了赌博。第$i$个人认为法国队赢的概率是$p[i]$,克罗地亚队赢的概率是$1−p[i]$。对于每一只球队,如果根据博彩公司给出的赔率第$i$个人的期望收益非负,则他会给这只球队下注$a[i]$元(设赔率为$x$,某人下注了$y$元,如果他赢了可以返还$x∗y$元,他输了则会返还$0$元。不论输赢,下注的钱均不返还)。如果两只球队期望收益均非负,则他会给两只球队各下注$a[i]$元。

现在博彩公司要决定法国队和克罗地亚队的赔率,使得在自身收益最小的胜负情况下的收益最大。

题解:

设法国队赔率为$x$,克罗地亚队赔率为$y$

当且仅当$x>=1/p[i]$时第$i$个人会下注法国队,当且仅当$y>=1/(1-p[i])$时第$i$个人会下注克罗地亚队

把所有人按照$p[i]$从大到小排序,则下注法国队的是一个前缀,下注克罗地亚队的是一个后缀

$x$越大,下注法国队的越大,博彩公司在法国队赢时赔得越多,所以需要增加$y$使更多人下注克罗地亚队,即$y$随$x$增加而增加

枚举$x$,滑动$y$使得最小收益最大即可

6.配对

题意:给定一棵$n$个点的边有长度的无根树,小A的班里一共有$m$个男生和$m$个女生,他们各自会等概率出现在树上$n$个点中的某一个,(注意同一个点上可能会出现多个人)。

然后小 A 会将他们配对成$m$对男女,设$dis_i$是第$i$对男女在树上的最短距离,小A会选择使得 $\sum_{i=1}^m dis_i$最大的配对方案。

现在小$A$想知道,他选择的配对方案中$\sum_{i=1}^m dis_i$的期望,由于答案可能过大,你只需要输出答案$∗n^{2m}$后对$10^9+7$取模的值,这个值显然是一个整数

题解:可以发现最优方案一定是让所有边尽可能多的被经过,而一条边被经过的次数即为它连接的两个联通$x,y$的人数的较小值$min(s_x,s_y)$,原因是人数较少的一边一定无论是男生或者女生都会比另一个联通块少。然后就可以枚举每一条边,再枚举左右两个联通块内的人数,用组合数简单计算一下即可。

原文地址:https://www.cnblogs.com/Slrslr/p/10679301.html

时间: 2024-10-05 20:14:17

二轮前的做题记录的相关文章

退役前的做题记录5.0

退役前的做题记录5.0 出于某种原因新开了一篇. [CodeChef]Querying on a Grid 对序列建立分治结构,每次处理\((l,mid,r)\)时,以\(mid\)为源点建立最短路树,这样跨越\(mid\)的点对之间的最短路一定会经过\(mid\),因此两点之间的最短路径就可以描述成最短路树上的两段到根路径.对每棵最短路树处理\(dfs\)序,用树状数组维护权值修改即可. [Wannafly挑战赛4F]线路规划 类似SCOI2016萌萌哒一题,并查集\(f_{i,j}\)表示从

退役前的做题记录3

[CERC2017]Gambling Guide 设 \(f_u\) 表示 \(u\) 到 \(n\) 的期望. \(f_n=0\) \[f_u=1+\sum_{v\in suf_v}\frac{min(f_u,f_v)}{d_u}\] \[\rightarrow f_u=1+\sum_{v\in suf_u,f_v<f_u}\frac{f_v}{d_u}+\sum_{v\in suf_u,f_v\ge f_u}\frac{f_u}{d_u}\] \[\rightarrow f_u=\sum_{

省选前的做题记录(Round2)

[CF1109B] Sasha and One More Name 先把无解情况aaabaaa.aaaaaa判掉,然后我们可以证明答案不会超过2. 对于一个回文串,两个指针从两端向内移动直到字符发生变化,在这里看一刀然后交换左右两端即为一种合法方案. 所以我们只需要判断答案是否能为\(1\),暴力判即可. [CF1109C] Sasha and a Patient Friend 假设我们有一个序列数据结构,那么先考虑每个结点需要维护哪些值才能支持合并左右儿子. 维护: 当前点时刻\(time\)

退役前的做题记录

2019.12.17 2019.12.18 codechef STICNOT 问题等价于给每条边和每个点分配一个权值,使得点权\(\geq\)相邻边权 考虑将边权从大到小插入,插入第一条边的时候,我们也就确定了其两端的点的点权的最小值.接下来放第二条边的时候,肯定将其放在与第一条边有公共点的位置是最优的,因为公共点的点权一定是大于等于该边边权的,也就是这条边只确定了一个点点权的最小值. 一直做下去,问题就变成了第一条边确定两个点的最小值,之后每条边确定一个点的最小值,求最小修改数使其合法.直接贪

【BZOJ做题记录】07.07~?

在NOI一周前重开一个坑 最后更新时间:7.07 11:26 7.06 下午做的几道CQOI题: BZOJ1257: [CQOI2007]余数之和sum:把k mod i写成k-k/i*i然后分段求后面的部分就好了 BZOJ1258: [CQOI2007]三角形tri:在草稿纸上按照位置和边找一下规律就好了 BZOJ1260: [CQOI2007]涂色paint:简单的区间DP BZOJ1303: [CQOI2009]中位数图:小于中位数的改为-1大于的改为1,算一算前缀和然后哈希一下乘一乘就好

csp退役前的做题计划1(真)

csp退役前的做题计划1(真) 因为我太菜了,所以在第一次月考就会退役,还是记录一下每天做了什么题目吧. 任务计划 [ ] Z算法(Z Algorithm) 9.28 [x] ARC061C たくさんの数式 / Many Formulas [x] ARC061D すぬけ君の塗り絵 / Snuke's Coloring [x] ARC061E すぬけ君の地下鉄旅行 / Snuke's Subway Trip [x] ARC061F 3人でカードゲーム / Card Game for Three [

project euler做题记录

ProjectEuler_做题记录 简单记录一下. problem 441 The inverse summation of coprime couples 神仙题.考虑答案为: \[\begin{array}{c} S(n) & = & \sum_{i = 1} ^ n \sum_{p = 1} ^ i \sum_{q = p + 1} ^ i \frac {1}{pq}[p + q \geq i][gcd(p, q) = 1] \& = & \sum_{i = 1} ^

后缀自动机做题记录

目录 后缀自动机做题记录 sp1811 sp1812 sp10570 luogu 2463 CF873F TJOI2015 弦论 AHOI2013 差异 HEOI2016/TJOI2016 字符串 HAOI2016 找相同字符 SDOI2016 生成魔咒 ZJOI2015 诸神眷顾的幻想乡 留坑待填 广义SAM 其他 NOI原题练习 后缀自动机做题记录 来填之前的坑了...考后大概会做做有字符串的综合题吧 sp1811 lcs板子,对于第一个串建出SAM,第二个串在上面跑,即可求出对于每一个位置

清华集训2014 做题记录

清华集训2014做题记录 已完成 [清华集训2014]玛里苟斯 [清华集训2014]主旋律 [清华集训2014]奇数国 [清华集训2014]矩阵变换 [清华集训2014]sum [清华集训2014]虫逢 [清华集训2014]玄学 [清华集训2014]文学 未完成 [清华集训2014]卡常数 [清华集训2014]简单回路 [清华集训2014]Router [清华集训2014] Breaking Bomber 写一题要膜一题题解,膜完题解膜代码,膜完代码膜指导,膜了好几天了还有四个题没做. [清华集