PKUSC2018题解
PKUSC2018题解
真实排名
分别考虑第\(i\)个人翻倍和不翻倍的情况,组合数算一下即可,务必注意实现细节。
最大前缀和
设\(sum_s\)表示集合\(\sum_{i\in s} a_i\),\(f_s\)表示最大前缀和等于\(sum_s\)的方案数,\(g_s\)表示选出集合\(s\)排成的最大前缀和均不大于\(0\)的方案数。
因为最终的答案肯定是最大前缀和所在的位置\(pos\)后面一定不存在有一段前缀和大于\(0\),否则向后更新还可以更优。
令全集为\(U\)那么
\[
Ans=\sum_{S\subseteq U} sum_S\times f_S\times g_{\complement_U S}
\]
现在主要是考虑如何求\(f,g\):
考虑主动转移,由后往前插入数字\(i\),那么\(f_S\rightarrow f_{S\cup \{i\}},sum_S>0\),因为这样的话从i向后选一定会更优;\(g\)的转移比较简单,就是\(g_S\rightarrow g_{S\cup \{i\}},sum_{S\cup\{i\}}\leq 0\)。
主斗地
待填
星际穿越
令\(L(i)=\min_{j=i}^nl_j\),首先你从一个点\(i\)起跳你的往左的可达区间为\([l_i,i)\),然后第二步跳就可以跳到\([L(l_i),l_i)\),然后一直跳就是这么个情况:\([L(L(...L(l_i))),上一次落脚点)\)。
直接预处理一个跳到另外一个是\(O(n^2)\)的有\(70pts\),考虑怎么优化。
令倍增数组\(f_{i,j}\)表示从\(j\)左跳\(2^i\)下跳到哪,\(g_{i,j}\)表示\([f_{i,j},j]\)中所需贡献是多少。
那么你每次倍增求出\(x\rightarrow l\)的代价然后减去\(x\rightarrow r+1\)的代价即可,倍增的具体过程见代码。
神仙的游戏
考虑长度为\(len\)的\(border\)的性质,就是说对于长度为\(n\)的字符串\(s\),\(s[1...len]=s[n-len+1,n]\)(这不是定义吗)
也就是说位置\(i\equiv j\;(\bmod\;n-len)\)的话,\(i,j\)的数字相等。
那么对于一个不同的\(0,1\)假设他们的位置之差为\(x\),假设不成立,则有\(x \equiv 0\;(\bmod\;n-len\)),即对于\(y|x\),长度\(n-y\)的\(border\)不满足条件。
然后\(O(n^2)\)地做这个东西是\(67pts\),想办法优化。
构造多项式
\[
A(x)=\sum_{i=0}^{n-1}[s_i=0]x^i\\
B(x)=\sum_{i=0}^{n-1}[s_i=1]x^i
\]
因为我们要求确定差值,而多项式乘法能做的事是求出确定和,我们可以将\(A,B\)任意一个多项式\(reverse\)就可以做到了,最后枚举长度\(len\)的倍数,如果\(C=A\times B\)没有地方的\(C[n-1-k\cdot len]\geq 1\)以及\([n-1+k\cdot len]\geq 1\),那么长度\(len\)就满足条件,这一部分复杂度是调和级数的。
总复杂度\(O(n\log n+n\ln n)\)。
PKUSC
待填
PKUSC2018题解的更多相关文章
- loj 6433 「PKUSC2018」最大前缀和 题解【DP】【枚举】【二进制】【排列组合】
这是个什么集合DP啊- 想过枚举断点但是不会处理接下来的问题了- 我好菜啊 题目描述 小 C 是一个算法竞赛爱好者,有一天小 C 遇到了一个非常难的问题:求一个序列的最大子段和. 但是小 C 并不会做 ...
- 题解 洛谷 P5465 【[PKUSC2018]星际穿越】
首先考虑题目的性质,发现点向区间连的边为双向边,所以也就可以从一个点向右跳到区间包含该点的点,如图所示: 但事实上向后跳其实是不优的,可以有更好的方法来节省花费: 因此我们发现一个点跳到其前一个区间的 ...
- LOJ #6436. 「PKUSC2018」神仙的游戏(字符串+NTT)
题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 ...
- LOJ #6435. 「PKUSC2018」星际穿越(倍增)
题面 LOJ#6435. 「PKUSC2018」星际穿越 题解 参考了 这位大佬的博客 这道题好恶心啊qwq~~ 首先一定要认真阅读题目 !! 注意 \(l_i<r_i<x_i\) 这个条 ...
- LOJ #6432. 「PKUSC2018」真实排名(组合数)
题面 LOJ #6432. 「PKUSC2018」真实排名 注意排名的定义 , 分数不小于他的选手数量 !!! 题解 有点坑的细节题 ... 思路很简单 , 把每个数分两种情况讨论一下了 . 假设它为 ...
- 【LOJ6433】【PKUSC2018】最大前缀和
[LOJ6433][PKUSC2018]最大前缀和 题面 题目描述 小 C 是一个算法竞赛爱好者,有一天小 C 遇到了一个非常难的问题:求一个序列的最大子段和. 但是小 C 并不会做这个题,于是小 C ...
- 【LOJ4632】[PKUSC2018]真实排名
[LOJ4632][PKUSC2018]真实排名 题面 终于有题面啦!!! 题目描述 小 C 是某知名比赛的组织者,该比赛一共有 \(n\) 名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排 ...
- 【LOJ6436】【PKUSC2018】神仙的游戏(NTT)
[LOJ6436][PKUSC2018]神仙的游戏(NTT) 题面 LOJ 题解 看到\(zsy\)从\(PKUSC\)回来就秒掉了这种神仙题 吓得我也赶快看了看\(PKUSC\)都有些什么神仙题 然 ...
- [LOJ#6437][BZOJ5373]「PKUSC2018」PKUSC
[LOJ#6437][BZOJ5373]「PKUSC2018」PKUSC 试题描述 九条可怜是一个爱玩游戏的女孩子. 最近她在玩一个无双割草类的游戏,平面上有 \(n\) 个敌人,每一个敌人的坐标为 ...
随机推荐
- Mac 电脑无法登陆 账号了
版本:10.14.2 每次输入用户名和密码都没有反应: 进入 命令行执行: defaults delete com.apple.appstore.commerce Storefront 然后重启机器, ...
- python运维开发常用模块(7)web探测模块pycurl
1.模块介绍 pycurl(http://pycurl.sourceforge.net)是一个用C语言写的libcurl Python实现,功能非常强大,支持的操作协议有FTP.HTTP.HTTPS. ...
- BFS(四):搜索状态判重
在采用广度优先算法进行搜索时,一个需要重点注意的是在搜索过程中判重和去重.前面介绍的几个例子中,判重都较简单,如采用vis[]数组,若vis[i]==0,则i未访问过,i入队列:若vis[i]!=0, ...
- navicat远程连接mysql的方法
navicat远程连接mysql的方法1 先在打开phpmyadmin 添加用户 用户名和密码自己设置 设置如下 2 关闭防火墙service iptables status可以查看到iptables ...
- 【Zabbix】zabora批量部署
zabora简化批量部署 目的:简化部署zabora,批量监控数据库的常用指标 1 数据库用户赋权 上传cre_arp_monitor.sh,并且部署用户. [root@oradb ~]# chown ...
- .Net MVC 提示未能加载文件或程序集
最近在开发.Net MVC程序时,突然出现未能加载文件或程序集的错误, 错误1 错误2 猜测时由于引用了Swagger,导致Swagger依赖的组件版本和现有版本冲突(现在仍未确定是这个原因),浪费了 ...
- HTTP Protocol
HTTP协议 1 HTTP请求状态码 当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态 ...
- SAP MM 公司间STO里外向交货单与内向交货单里序列号对应关系
SAP MM 公司间STO里外向交货单与内向交货单里序列号对应关系 笔者所在的A项目,后勤模块里有启用HU管理,序列号管理,批次管理等功能,以实现各个业务场景下的追溯. 公司间转储订单流程里,如果是整 ...
- 解决jmeter进行分布式测试,远程机器来运行脚本,在察看结果树中的响应数据项为空白
下面为大家提供一个解决办法: 第一步:打开主控机的jmeter--bin目录下的jmeter.properties文件 第二步:查找到mode=Standard 项 第三步:将其前边的注释去掉,然后保 ...
- 个人项目:WC
一.GitHub项目地址:https://github.com/lseap/myWC 二.PSP表格: PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...