省选联考2021vp记
考虑到将 \(a\) 和 \(b\) 放在一起排序,最后朝上的数字必然在左端点为最小值,右端点为最大值的区间中。这个区间中至少有 \(n-m\) 个是原来的 \(a\),且对于每张卡牌必然要有 \(a\) 或 \(b\) 在区间中。使用双指针即可实现。
vp时做 \(m=2\) 的部分分时想到:
\(b_i-b_{i-1}=a_{i+1,1}+a_{i+1,2}-a_{i-1,1}-a_{i-1,2}\)
\(b_i+b_{i-2}-b_{i-1}=a_{i+1,1}+a_{i+1,2}+a_{i-2,1}+a_{i-2,2}\)
又因为还有 \(0\le a_{i,j}\le 10^6\) 的限制条件,想到差分约束,但没有什么实际的做法。
又想到放下限制,产生了一种构造方法,将第一列和第一行设为 \(0\),剩下的就可以直接计算。但这种构造会产生大于 \(10^6\) 或小于 \(0\) 的解,但没有优化方法。
考虑正解,因为上述方法的解是未满足约束的。有一个性质:使某一行或某一列的奇数位 \(+x\),偶数位 \(-x\) 最后生成的 \(b\) 数组不变。
所以最后会产生一个矩阵(\(a_{i,j}\) 表示根据上述方法构造出的解,\(r_i\) 表示第 \(i\) 行的变化量,\(c_j\) 表示第 \(j\) 列的变化量)
\(\begin{bmatrix}a_{1,1}+r_1+c_1,a_{1,2}-r_1+c_2,a_{1,3}+r_3+c_3,\dots\\
a_{2,1}+r_2-c_1,a_{2,2}-r_2-c_2,a_{2,3}+r_2-c_3\dots\\
a_{3,1}+r_3+c_1,a_{3,2}-r_3+c_2,a_{3,3}+r_3+c_3\dots\\
\dots
\end{bmatrix}\)
但这个矩阵看起来不是很可做考虑将奇数列的变化量取反,偶数行的变化量取反,得到新矩阵
\(\begin{bmatrix}a_{1,1}+r_1-c_1,a_{1,2}-r_1+c_2,a_{1,3}+r_3-c_3,\dots\\
a_{2,1}-r_2+c_1,a_{2,2}+r_2-c_2,a_{2,3}-r_2+c_3\dots\\
a_{3,1}+r_3-c_1,a_{3,2}-r_3+c_2,a_{3,3}+r_3-c_3\dots\\
\dots
\end{bmatrix}\)
得到的矩阵中 \(r_i\) 和 \(c_j\) 的关系都是满足 \(-a_{i,j}\le r_i-c_j\le 10^6-a_{i,j}(i+j\equiv 0 \pmod 2)\) 或 \(-a_{i,j}\le c_j-r_i\le 10^6-a_{i,j}(i+j\equiv 0 \pmod 2)\),为只与减法有关的不等式,可以使用差分约束算出解。
vp时把结论推错了,非常可惜。
一个很重要的结论:若点对 \((u,v)\) 对图 \(G\) 有贡献,当且仅当 \(u<v\) 且在图 \(G\) 上存在由 \(u\) 到 \(v\) 和由 \(v\) 到 \(u\) 都只经过编号在 \([u+1,n]\) 的点的路径,考虑如何通过这个计算。显然去计算每个 \(f(u,v)\) 的值是非常不现实的,直接考虑点对 \((u,v)\) 对 \(h\) 函数的贡献。一个点对的贡献是一段前缀,因此可以倒序加边求差分数组。
现在问题就到了如何求差分数组上了。令 \(f_{u,v}\) 表示由 \(u\) 到 \(v\) 且只经过编号属于 \([u+1,n]\) 的路径中边的编号的最小值最大为多少,可以写出转移式 :
\]
初始若 \((u,v)\) 间有边 \(f_{u,v}=i\),\(i\) 为边 \((u,v)\) 的编号,\(f_{u,u}=m+1\)。
这个式子很像 Floyd
的式子,但如果直接写 Floyd
,\(O(n^3)\) 的复杂度会T。优化一些无用转移,因为 \((u,v)(u<v)\) 产生贡献时只会经过编号 \(>u\) 的点,所以当 \(u>w&&v>w\) 没必要进行转移。因为CCF数据太水放过去了。
非常典的树上倍增。
先将所有颜色重新标号。若 \((s,t)\) 答案为 \(x\),从 \(s\) 到 \(t\) 的路径上必然会按顺序出现标号为 \(1\sim x\) 的颜色。将路径拆成 \((s,lca)\) 和 \((lca,t)\),\((s,lca)\) 上会按顺序出现编号为 \(1\sim y\) 的颜色,\((lca,t)\) 上会按顺序出现编号为 \(y+1\sim x\) 的点。\(x\) 可以通过二分得到,那么需要计算的就只有 \(y\) 的值了。令 \(f1_{u,i}\) 表示在 \((u,1)\) 上,深度最深的颜色为 \(col[u]+2^i\) 点为哪个点,\(f2_{u,i}\) 表示在 \((u,1)\) 上,深度最深的颜色为 \(col[u]-2^i\) 点为哪个点,通过倍增可以找到在 \((s,lca)\) 上可以找到的最大的 \(y\) 和 \((lca,t)\) 上可以找到的最小的 \(y\),记为 \(y'\)。若 \(y'<=y\),则该 \(x\) 满足条件。
那么现在就只剩下一个问题了,如何求得在 \((u,1)\) 上的颜色为 \(x\) 且深度最深的点。建一棵下标为颜色的主席树,点 \(i\) 的线段树表示在 \((i,1)\) 上每个颜色的最深点的位置,每次在父亲的线段树上修改 \(col_u\) 的最深点的位置为 \(u\)。
总复杂度 \(O(n^3)\)。
根据一些简单的结论:
- 若 \(x\) 支配 \(y\),\(y\) 支配 \(z\),则 \(x\) 一定支配 \(z\),因为删除 \(x\) 后 \(y\) 被割开,而 \(y\) 一旦不可达 \(z\) 也就随之不可达了。
- 若 \(x\) 支配 \(a\),\(y\) 支配 \(a\),则 \(x,y\) 之间一定有支配关系,如不然则必定有一种情况,使得删除其中一个点后,\(1\) 可从另一个点到达 \(a\)。
- 加入一条边后每个点的受支配集要么变小要么不变,因为图会变得更联通。
- 在点 \(D_x(x\not=1)\) 中必然存在一个点 \(y\),使得 \(D_x=D_y\cup {x}\),因此该点为 \(D_x\) 中支配集最大的点,令 \(fa_x=y\)。
- 若 \(D_x\) 大小变化,当且仅当 \(D_{fa_x}\) 大小变化或 \(fa_x\) 不在支配 \(x\)。
根据前四条结论我们可以建出一颗树状结构,每个点 \(x\) 和 \(fa_x\) 连边,这颗树叫做支配树。令 \(delp_{u,v}\) 表示删除 \(v\) 后 \(1\) 能否到 \(u\),可以得知若 \(delp_{u,v}=0\),则 \(v\) 支配 \(u\),这样就用 \(O(n^2)\) 的时限求出所有 \(D_x\),建出支配树。
那么现在剩下的任务就只剩下判断 \(fa_x\) 是否仍然支配 \(x\) 了。令 \(f_{u,v}\) 表示删去 \(fa_v\) 后 \(u\) 能否到达 \(v\),这个在反图上dfs
一边可以求出。对于加的一条边 \((u,v)\),若删去 \(fa_x\) 后 \(1\) 能到 \(u\) 且删去 \(fa_x\) 后 \(v\) 能到 \(x\),则 \(D_x\) 大小会发生变化。再根据第五条结论,在支配树上bfs
一遍就能求出所有受支配集变化的点。
因为题目要求的是排名的总方案数,所以考虑贪心地分配 \(b_i\)。若 \(a_i>a_{i-1}\),令 $b_i=b_{i-1}},否则令 \(b_i=b_{i-1}+a_{i-1}-a_i\),最后如果剩下多的可以全部留个 \(b_n\)。对贡献变形可得:\(\sum b_i=\sum \max(a_i-a_{i-1},0)\times(n-i+1)\)
令 \(f(S,i,j)\) 表示前 \(|S|\) 位为 \(S\) 内元素,第 \(|S|\) 位为 \(i\),已选总贡献为 \(j\) 的方案数。
for(int i=1;i<=mx;i++){
Count[i]=Count[i>>1]+(i&1);
}
for(int i=0;i<n;i++){
int s=n*(a[t]-a[i]+(t<i));
if(s<=m){
f[1<<i][i][s]=1;
}
}
for(int i=1;i<mx;i++){
for(int j=i;j;j-=lowbit(j)){
for(int sum=0;sum<=m;sum++){
int p=num[lowbit(j)];
for(int k=0;k<n;k++){
if(!(i&(1<<k))){
int s=sum+(n-Count[i])*max(0,(p<k)+a[p]-a[k]);
if(s<=m){
f[i|(1<<k)][k][s]+=f[i][p][sum];
}
}
}
}
}
}
for(int i=0;i<=m;i++){
for(int j=0;j<n;j++){
ans+=f[mx][j][i];
}
}
省选联考2021vp记的更多相关文章
- 题解 P6622 [省选联考 2020 A/B 卷] 信号传递
洛谷 P6622 [省选联考 2020 A/B 卷] 信号传递 题解 某次模拟赛的T2,考场上懒得想正解 (其实是不会QAQ), 打了个暴力就骗了\(30pts\) 就火速溜了,参考了一下某位强者的题 ...
- [省选联考 2020 A 卷] 组合数问题
题意 [省选联考 2020 A 卷] 组合数问题 想法 自己在多项式和数论方面还是太差了,最近写这些题都没多少思路,看完题解才会 首先有这两个柿子 \(k*\dbinom{n}{k} = n*\dbi ...
- [省选联考 2021 A 卷] 矩阵游戏
很巧妙的一个构造. 我是没有想到的. 自己的思维能力可能还是不足. 考虑先满足\(b\)对\(a\)的限制,把\(a\)的第一行和第一列设\(0\),推出这个\(a\). 接下来考虑对这个\(a\), ...
- [省选联考 2021 A/B 卷] 卡牌游戏
垃圾福建垫底选手来看看这题. 大家怎么都写带 \(log\) 的. 我来说一个线性做法好了. 那么我们考虑枚举 \(k\) 作为翻转完的最小值. 那么构造出一个满足条件的操作,我们在 \(a_i\) ...
- jloi2017(shoi2017?)六省联考酱油记
Day -n 听说了4.22.4.23的省选,而且还是六省联考. 压力山大. 尽管我只是一名高一的simple OIer,在省选到来之前,心里还是很紧张的. 毕竟自己也知道南方dalao们都是神犇,像 ...
- P7518 & 省选联考2021 宝石
这是一篇极其简单连像我这样省三参加不了省选的蒟蒻都能看懂的题解 前置知识: 倍增LCA 二分 栈 题意 PS:这是一篇完全面向初学者的题解,会非常细,大佬请无视 题目传送门 没有思路的时候, 我们往 ...
- HEOI 十二省联考退役记
Day -1 简要的说了些注意事项 一整天都在刷树套树的水题 退役的感觉近了 Day 0 早上收拾好东西去了火车站之后 火车站居然还没有开门 等了半天 我们是从衡水到德州再到秦皇岛 到了德州之后 去车 ...
- [省选联考 2020 A/B 卷] 冰火战士
一.题目 点此看题 二.解法 其实这道题也不是特别难吧 \(......\) 但树状数组上二分是我第一次见. 我们把冰人和火人都按温度排序,那么考虑一个分界线 \(x\) ,问题就是求冰数组 \(x\ ...
- 洛谷 P6624 - [省选联考 2020 A 卷] 作业题(矩阵树定理+简单数论)
题面传送门 u1s1 这种题目还是相当套路的罢 首先看到 \(\gcd\) 可以套路地往数论方向想,我们记 \(f_i\) 为满足边权的 \(\gcd\) 为 \(i\) 的倍数的所有生成树的权值之和 ...
- 洛谷 P7516 - [省选联考 2021 A/B 卷] 图函数(Floyd)
洛谷题面传送门 一道需要发现一些简单的性质的中档题(不过可能这道题放在省选 D1T3 中偏简单了?) u1s1 现在已经是 \(1\text{s}\) \(10^9\) 的时代了吗?落伍了落伍了/ ...
随机推荐
- Vue 的下拉刷新指令
loadmore: { //自定义指令: 下拉加载 bind(el, binding) { let p = 0; let t = 0; let down = true; el.addEventList ...
- Inno 设置文件或注册表ACL(访问控制权限)
欢迎访问我的个人博客:xie-kang.com 在[Files]区段或者[Registry]区段中可以设置Permissions属性,从而达到指定操作ACL(访问控制权限),使用方法如下: <用 ...
- node.js缓冲区类与node-red向串口发数据
遇到的问题是使用node-red的串口模块向串口发送16进制数据,控制LED灯. 初学者经常想当然的认为只要msg的payload里放上对应的数就行了.其实不是. Node-red是node.js环境 ...
- 使用arcgis按掩膜批量处理MODIS.tif数据提取研究区.shp边界的python代码
在输入代码之前,需要先用arcgis把需要处理的数据导入,再把研究区shp导入,然后定义投影,先掩膜处理一个数据,再进行下一步输入代码批量处理数据的步骤.如果 不先定义投影,可能会出现输入代码不执行的 ...
- GPT-4 来了!这些开源的 GPT 应用又要变强了
近日,在 GPT-3.5 发布的半年后,OpenAI 正式推出了大版本的 GPT-4,不同于 GPT-3 到 GPT-3.5 耗时两年,这次版本升级只用了半年.如果你对 OpenAI 不熟悉,答应我读 ...
- 人脸关键点的应用场景及重难点解析丨Dev for Dev 专栏
本文为「Dev for Dev 专栏」系列内容,作者为声网视频组 AI 算法工程师 周世付. 人脸检测.人脸关键点检测,是计算机视觉的基础算法.许多酷炫应用背后,例如美颜.贴纸.人脸驱动 avatar ...
- 基于对象的实时空间音频渲染丨Dev for Dev 专栏
本文为「Dev for Dev 专栏」系列内容,作者为声网音频算法工程师 李嵩. 随着元宇宙概念的引入,空间音频这项技术慢慢映入大家的眼帘.关于空间音频的基础原理,我们做过一期科普视频 -- 「空间音 ...
- 基于 HLS 创建 Golang 视频流服务器
HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议, 并于 2009 年. HLS 流媒体已经成为应用最广泛的实时视频协议.它是一 ...
- 【读书笔记】Nice Families Of GF
目录 Nice Families Of GF rational rational algebraic D-finite总览 下定义 逻辑关系 例子 更多的例子和判别法 运算是否有性质? 运算是否有性质 ...
- 「java技术干货」switch分支结构详解
前言 在上一篇文章中,壹哥给大家介绍了Java里的顺序.分支.循环结构的概念,并且重点给大家讲解了分支结构中的条件分支.并在条件分支中,详细地给大家讲解了if条件分支的使用.现在我们应该知道,if条件 ...