Rank Solved A B C D E F G H I J k L M
40/854 5/13 Ø O Ø O O Ø Ø . Ø . Ø O O

O: 当场通过

Ø: 赛后通过

.: 尚未通过

A Blank

upsolved by chelly


chelly’s solution

首先有个很好想的dp:dp[i][a][b][c][d]dp[i][a][b][c][d]dp[i][a][b][c][d]表示填了前iii个位置,0,1,2,30,1,2,30,1,2,3的最后一次出现位置分别位a,b,c,da,b,c,da,b,c,d情况下的方案数,每个限制在右端点处check。但是这样是O(n5)O(n^5)O(n5)的。
注意到iii一定和a,b,c,da,b,c,da,b,c,d中的某一个数字相同,所以我们可以压缩一维,时间变成O(n4)O(n^4)O(n4)
dp[t][i][j][k]dp[t][i][j][k]dp[t][i][j][k]表示填了前ttt个位置,四个数字最后出现的位置从大到小排序依次是t>i>j>kt>i>j>kt>i>j>k情况下的方案数。
空间可以滚动成O(n3)O(n^3)O(n3)。

B

solved by chelly


chelly’s solution

容易想到维护前缀线性基。
现在我们已经有了[1,R][1,R][1,R]的线性基,如何求[L,R][L,R][L,R]的答案呢?
我们可以对线性基的每一个主元位都记录一个最靠右的位置,表示它由这个位置贡献,处理询问的时候,若当前主元位对应的向量最靠右出现位置在LLL的左边,那么就不考虑这个主元位向量。
插入x的时候,若当前主元位已经有了向量,那就更新成下标最靠右的即可。

C

upsolved by chelly


chelly’s solution

对于每行预处理出cost[i][0/1]cost[i][0/1]cost[i][0/1]表示从中间位置出发,喝iii个牛奶,是/否回到中间位置情况下的最小花费。
然后从上往下遍历每行,枚举每行喝多少牛奶,做个背包即可。
如何预处理这个cost[i][0/1]cost[i][0/1]cost[i][0/1]呢?
我们可以以midmidmid为分界线,向左去做个背包,向右去做个背包,然后把两部分mergemergemerge起来即可。
时间复杂度O(klogk+k2)O(klogk+k^2)O(klogk+k2)

D

solved by viscaria&Feynman1999


viscaria’s solution

E

solved by chelly


chelly’s solution

选出所有最短路径图中的边,对这个图求个最小割就行了。

F

upsolved by chelly


chelly’s solution

容易想到一个dp,dp[i]dp[i]dp[i]表示打出前i位的最小花费,那么显然dp[i]=min(dp[i−1]+p,dp[j]+q)dp[i]=min(dp[i-1]+p,dp[j]+q)dp[i]=min(dp[i−1]+p,dp[j]+q)其中要求s[j+1..i]s[j+1..i]s[j+1..i]要是s[0..j]s[0..j]s[0..j]的子串。
容易发现dp[i]dp[i]dp[i]是单调不减的,所以这个jjj一定是满足条件的最小的jjj。
假设对于某个局面,我们将s[0..j]s[0..j]s[0..j]加入了SAM,s[j+1..i]s[j+1..i]s[j+1..i]在SAM上走到了某个节点nownownow(这意味着它是一个子串),考虑加入s[i+1]s[i+1]s[i+1]:

  • 若s[j+1..i+1]s[j+1..i+1]s[j+1..i+1]也能在树上走出,那么就OK
  • 若s[j+1..i+1]s[j+1..i+1]s[j+1..i+1]不能在树上走出,那么j+=1j+=1j+=1,将s[j]s[j]s[j]加入SAM,同时nownownow要根据当前节点的minlen,maxlenminlen,maxlenminlen,maxlen以及是否有s[i]s[i]s[i]的出边适当在SAM上跳slink链

于是对于每个i,我们都知道了其对应的最小的jjj,和第一种转移选个最小值即可

G

upsolved by chelly


chelly’s solution

我们的目标是二分一个分数pq\frac{p}{q}qp​,使得不超过pq\frac{p}{q}qp​的答案个数是kkk,然后通过枚举分母或者在Stern-Brocot树上二分得到最后的答案。
怎么二分这个分数呢?

  • 我们可以手写分数类去二分,那么要二分多少次呢?容易发现精度是1n∗n\frac{1}{n*n}n∗n1​的,所以我们二分log2nlog^2nlog2n次就行了。
  • 我们也可以固定分母,去二分分子,即二分x2n2\frac{x}{2n^2}2n2x​中的xxx

至于判定就转换成了这样一个问题:求分子分母不超过nnn的且分数值不超过pq\frac{p}{q}qp​的最简真分数的个数。这个是个经典问题,可以莫比乌斯反演+类欧几里得解决。

最后我们需要找到一个最大的在pq\frac{p}{q}qp​内的解,可以枚举分母或者在Stern-Brocot树上二分得到最后的答案。

H

unsolved


I

upsolved by chelly


chelly’s solution

求字典序最小,就贪心放,维护每个位置的后缀每个字符个数,来判定当前能不能放。

J

unsolved


K Function

upsolved by Feynman1999


Feynman1999’s solution

令m=⌊n3⌋−1m=\lfloor \sqrt[3]{n} \rfloor-1m=⌊3n​⌋−1,

则∑i=1ngcd(floor(i3),i)=∑i=1m∑j=i3(i+1)3−1gcd(i,j)+∑i=(m+1)3ngcd(m+1,i)\sum_{i=1}^{n}gcd(floor(\sqrt[3]{i}),i) = \sum_{i=1}^{m}\sum\limits_{j=i^{3}}^{(i+1)^{3}-1}gcd(i,j) \quad + \quad \sum\limits_{i=(m+1)^{3}}^{n}gcd(m+1,i)∑i=1n​gcd(floor(3i​),i)=∑i=1m​j=i3∑(i+1)3−1​gcd(i,j)+i=(m+1)3∑n​gcd(m+1,i)

考虑一个函数(前缀和,差分后即为上面部分所求,这个想法也比较自然),f(n)=∑i=1ngcd(m,i)f(n) = \sum_{i=1}^ngcd(m,i)f(n)=∑i=1n​gcd(m,i)
f(n)=∑i=1ngcd(m,i)=∑i=1n∑d∣gcd(m,i)ϕ(d)=∑d∣mϕ(d)∗⌊nd⌋f(n) = \sum_{i=1}^ngcd(m,i) \\ = \sum_{i=1}^n \sum_{d|gcd(m,i)}\phi(d) \\ = \sum_{d|m} \phi(d)*\left \lfloor \frac{n}{d} \right \rfloor f(n)=i=1∑n​gcd(m,i)=i=1∑n​d∣gcd(m,i)∑​ϕ(d)=d∣m∑​ϕ(d)∗⌊dn​⌋
则 注意,m=⌊n3⌋−1m=\lfloor \sqrt[3]{n} \rfloor-1m=⌊3n​⌋−1
∑i=1ngcd(floor(i3),i)=∑i=1m∑j=i3(i+1)3−1gcd(i,j)+∑i=(m+1)3ngcd(m+1,i)=∑i=1m∑d∣iϕ(d)∗[⌊(i+1)3−1d⌋−⌊i3−1d⌋]+∑d∣m+1ϕ(d)∗[⌊nd⌋−⌊(m+1)3−1d⌋]=∑d=1mϕ(d)∗∑i=1⌊m/d⌋[⌊(id+1)3−1d⌋−⌊(id)3−1d⌋]+∑d∣m+1ϕ(d)∗[⌊nd⌋−⌊(m+1)3−1d⌋]=∑d=1mϕ(d)∗∑i=1⌊m/d⌋[3di2+3i+1(注意这里是下取整)]+∑d∣m+1ϕ(d)∗[⌊nd⌋−⌊(m+1)3−1d⌋]\sum_{i=1}^{n}gcd(floor(\sqrt[3]{i}),i) = \sum_{i=1}^{m}\sum\limits_{j=i^{3}}^{(i+1)^{3}-1}gcd(i,j) \quad + \quad \sum\limits_{i=(m+1)^{3}}^{n}gcd(m+1,i) \\ = \sum_{i=1}^{m}\sum_{d|i}\phi(d)*\left [ \left \lfloor \frac{(i+1)^3 -1}{d} \right \rfloor - \left \lfloor \frac{i^3-1}{d} \right \rfloor \right ] \quad + \quad \sum_{d|m+1}\phi(d)*\left [ \left \lfloor \frac{n}{d} \right \rfloor - \left \lfloor \frac{(m+1)^3-1}{d} \right \rfloor \right ] \\ = \sum_{d=1}^{m}\phi(d)*\sum_{i=1}^{ \lfloor m/d \rfloor}\left [ \left \lfloor \frac{(id+1)^3 -1}{d} \right \rfloor - \left \lfloor \frac{(id)^3-1}{d} \right \rfloor \right ] \quad + \quad \sum_{d|m+1}\phi(d)*\left [ \left \lfloor \frac{n}{d} \right \rfloor - \left \lfloor \frac{(m+1)^3-1}{d} \right \rfloor \right ] \\ = \sum_{d=1}^{m}\phi(d)*\sum_{i=1}^{ \lfloor m/d \rfloor}\left [ 3di^2 + 3i + 1(注意这里是下取整) \right ] \quad + \quad \sum_{d|m+1}\phi(d)*\left [ \left \lfloor \frac{n}{d} \right \rfloor - \left \lfloor \frac{(m+1)^3-1}{d} \right \rfloor \right ] i=1∑n​gcd(floor(3i​),i)=i=1∑m​j=i3∑(i+1)3−1​gcd(i,j)+i=(m+1)3∑n​gcd(m+1,i)=i=1∑m​d∣i∑​ϕ(d)∗[⌊d(i+1)3−1​⌋−⌊di3−1​⌋]+d∣m+1∑​ϕ(d)∗[⌊dn​⌋−⌊d(m+1)3−1​⌋]=d=1∑m​ϕ(d)∗i=1∑⌊m/d⌋​[⌊d(id+1)3−1​⌋−⌊d(id)3−1​⌋]+d∣m+1∑​ϕ(d)∗[⌊dn​⌋−⌊d(m+1)3−1​⌋]=d=1∑m​ϕ(d)∗i=1∑⌊m/d⌋​[3di2+3i+1(注意这里是下取整)]+d∣m+1∑​ϕ(d)∗[⌊dn​⌋−⌊d(m+1)3−1​⌋]
因此可以计算 ,时间复杂度O(1e7+T∗(1e7+1e7)O(1e7 + T*(1e7+\sqrt{1e7})O(1e7+T∗(1e7+1e7​) 其中TTT为数据组数,最左边的1e71e71e7为预处理欧拉函数的时间。

本题的关键在于推导的倒数第二行变换贡献,从枚举iii变为枚举ddd,使得复杂度降了下来


upsolved by chelly

chelly’s solution

注意到对于上述式子的第一部分,是完整的,所以可以分块打表,然后对于每个询问暴力询问。

L

solved by chelly


chelly’s solution

容易发现交换操作顺序是不影响最后的结果,所以就可以三个NTT。注意求一个多项式卷多次不能直接把点值快速幂,只能分治+NTT求。

M

solved by viscaria&Feynman1999


viscaria’s solution

Dirty Replay

  • E题有个int忘记开成ll,WA了一发
  • L题错误的认为多项式的幂就直接给点值快速幂就行了,实际上需要类似快速幂的分治

2019杭电多校训练营(第一场)相关推荐

  1. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  2. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  3. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  4. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  5. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  6. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)

    题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...

  7. 2019牛客多校训练营第一场 H题 HOR 题解

    题目描述: 输入描述: 输出描述: 示例1: 题解: 更多问题可关注牛客竞赛区,一个刷题.比赛.分享的社区. 传送门:https://ac.nowcoder.com/acm/contest/discu ...

  8. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

  9. 2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题目大意:对于每一个等级,可以花ai元,有pi概率升级,如果升级失败就退到xi级,问从li级升到 ...

  10. 2019杭电多校第七场 HDU - 6656 Kejin Player 期望

    题目链接:https://vjudge.net/problem/HDU-6656 题解: 维护一个前缀sum[i] : 从1到 i 的期望 第 i 到达 i + 1是:ai + (1 - r[i] / ...

最新文章

  1. 「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板!
  2. 12C -- DDL日志
  3. [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform
  4. 【Linux】一步一步学Linux——iptables命令(186)
  5. MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
  6. 《WinForm开发系列之控件篇》Item3 BindingSource (暂无)
  7. python 通过索引迭代列表_Python的索引迭代
  8. 计算机与管理科学的交叉与融合,计算机信息管理学科交叉融合研究论文
  9. 8.14 few-shot learning——幻想数据
  10. 如何使用ImageRanger Pro Edition mac版创建缩略图?
  11. ansys18安装教程_ANSYS|ansys18.0完整安装过程及常见问题解决方案「图文」
  12. Java教学视频下载(全集)
  13. 一个前端写的php博客系统--支持markdown哦
  14. python3:从 logging 库中摘‘零件’另造小轮子 简单日志功能
  15. 大疆aeb连拍_不适合航拍?不如深度发掘大疆spark拍照功能
  16. SCCM 2012系列之二 Operations Manager系统要求
  17. Gartner发布《2021年企业低代码平台魔力象限》低码一体化平台成趋势
  18. UnityEffects(3)之闪电链
  19. Java到底好不好学
  20. php视频播放地址,视频网站播放地址获取方法

热门文章

  1. easyexcel保存数据到本地磁盘
  2. S5P4418裸机开发(五):时钟
  3. 清华大学鲍橒计算机1999,《最强大脑》鲍橒:世界盲棋第一人的最强记忆
  4. [转载]AlphaGo 的棋局,与人工智能有关,与人生无关
  5. 【一坨理论AC的题】Orz sxy大佬
  6. Python用win32模块让窗体闪烁!附源码
  7. 谈谈对Promise的理解
  8. 这个卷走175个国家和地区45亿英镑的“加密女王”忽然失踪,骗局崩盘
  9. 【产业互联网周报】微软、谷歌再布局边缘云;美团放弃公有云业务;开普云登陆科创板...
  10. 【颜纠日记】5个存钱方法摆脱月光族,如何存钱秘籍,轻松存到人生第一个100万。