关闭
当前搜索:

组合和

题目大意求∑ni=1Cm(i,n)\sum_{i=1}^nC_{(i,n)}^m做法随手化一下式子变成 ∑d|nCmd∗ϕ(nd)\sum_{d|n}C_{d}^m*\phi(\frac{n}{d}) 发现很想狄利克雷卷积的形式,不妨尝试凑出另一个积性函数。 1m!∑d|n∑mi=0s(m,i)∗(−1)m−i∗di∗ϕ(nd)\frac{1}{m!}\sum_{d|n}\sum_{i=0}^...
阅读(213) 评论(0)

兔子

题目大意求fib(n) mod 10^9+9=k的最小n。做法我们知道fib(n)=1√5∗[(1+√52)n−(1−√52)n]fib(n)=\frac{1}{√5}*[(\frac{1+√5}{2})^n-(\frac{1-√5}{2})^n] 不妨设两个特征根分别为a和b,注意ab=−1ab=-1 根号5在1e9+9下是存在的,设为g,那么问题变为 an−bn=gka^n-b^n=gk的...
阅读(263) 评论(0)

Psy

题目大意一个字符集为0~9的长度为n的数字串,f(n)为其本身的字典序在所有后缀中是严格最小的字符串的数量。 求∑ni=1f(i)∗i2\sum_{i=1}^nf(i)*i^2结论我们发现一个有周期的串的本身不可能是严格最小后缀。 对于没有周期的串,当做循环串来看,可以转出n个不同的字符串,一定只有一个能被算入f(n)。 可以知道f(n)是没有周期的串个数除以n。 f(n)=∑d|nμ(d)...
阅读(262) 评论(0)

题目大意一颗点权树,有多少种将树划分成若干条路径的方法,使得每条路径点权和非负?做法不妨设f[i]表示i子树里全部成功覆盖方案数,g[i]表示i子树里除了i全部成功覆盖方案数。 g就是各个子树的f乘积。 f可以枚举lca穿过当前点的一条路径,设为j->k,那么j和k都贡献g,其余挂着的子树贡献f,乘起来即可。 这样太慢了。 考虑简单问题。 如果路径是j->i怎么做呢? 可以尝试对每个子树...
阅读(278) 评论(0)

几何题

题目大意给你n个三维空间的点(坐标为整数且非负)。 q次询问,每次询问一个很神秘的式子。做法显然是上三维FFT。 然后需要加入一系列优化卡常。#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) //#define abs(x) (x<0?-x:x) using names...
阅读(240) 评论(0)

[2017集训队作业自选题#115]Replace All

题解推荐wxh 可爱的修修 本题相较于CF794G,n加0了。 我们需要快速计算 ∑ni=1∑nj=12(i,j)\sum_{i=1}^n\sum_{j=1}^n2^{(i,j)} ∑nd=12d∑n/di=1∑n/dj=1[(i,j)=1]\sum_{d=1}^n2^d\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}[(i,j)=1] ∑nd=12d∗(2∗∑n/di=...
阅读(376) 评论(0)

[arc065f]Shuffling

题目大意一个01字符串。 m次操作,每次将[li,ri]随意排列。 保证li单调不降,问能形成多少不同字符串。简单DP只需对每个左端点求出最远右端点。 然后设f[i,j]表示1~i-1已经确定了,可以任意放置的1还有j个的方案数,转移很简单。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) usi...
阅读(235) 评论(0)

[arc065e]Manhattan Compass

题目大意不想讲。做法可以转45度角变成切比雪夫距离,这样图像是正方形。 先用bfs找出所有可以踩到的点(可以对每行每列维护set,一个被bfs到的直接在两颗平衡树中删去)。 然后对每个能被踩到的点统计与其切比雪夫距离为d的点的个数(可以对每行每列维护vector并二分)。 最后答案除以2。#include #include #include...
阅读(271) 评论(0)

[arc063e]Integers on a Tree

题目大意一颗点权树,相邻节点点权差绝对值为1。 现在一些点点权已确定,构造一种方案。做法自下而上推出每个节点点权区间范围。 为空则无解,同时如果儿子间对该点奇偶性要求不同也无解。 然后接下来只需自上而下构造,只要和父亲相差1,且点权在区间范围内一定可以合法。#include #include #define fo(i,a,b) for(i=a;i<=b;i...
阅读(72) 评论(0)

[arc064f]Rotated Palindromes

题目大意有多少字符集为k的长度为n的字符串经过旋转可以变成回文串。做法设f[i]表示周期为i的回文串数量。 有f[i]=k(i+1)/2−∑j|i且j<if[j]f[i]=k^{(i+1)/2}-\sum_{j|i且j<i}f[j] 显然border为i的串能旋转出i个字符串。 然后注意一个偶border串会被算两次。#include #include #...
阅读(82) 评论(0)

[agc007c]Pushing Balls

题目大意不想讲。做法发现期望距离序列d始终是个等差序列。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; typedef double db; db a,p,ans; int i,j,k,l,t,n,m; int main(){ scanf("%d%lf%...
阅读(137) 评论(0)

[arc066f]Contest with Drinks Hard

题目大意有一些物品,每个买了有代价。 如果存在一个极大区间[l,r]内的物品都被买了,这个区间长度为k,可以获得的收益是k*(k+1)/2。 现在若干次询问,每次问假如修改了某个物品的价格,最大收益是多少?DP先处理出L和R分别表示前缀dp值和后缀dp值,显然dp可以用决策单调性优化。 然后现在我们需要求出一定买某个物品的最大值,记为ans[]。 也就是说假设买了区间[l,r],那么[l,r...
阅读(180) 评论(0)

[arc066e]Addition and Subtraction Hard

题目大意一个表达式有+有-,添加一些括号最大化表达式的值。DP首先只会在-号前放左括号。 简单的想法是设f[i,j]表示做完前i个数字,目前还有j个左括号没有匹配右括号。 然后很难发现,j<=2才有意义。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; typ...
阅读(145) 评论(0)

[agc014c]Closed Rooms

题目大意一个网格图,从一个起点出发。 有些格子上锁。 每一轮你都可以不断往一个已解锁的四相邻格子走,最多走k次,走完后你可以选择至多k个未解锁的格子,将它们解锁。 求最少多少轮,你能走到一个边界格子。做法发现走的次数和可以解锁的次数相等。 因此第一轮走完,以后都不会撞锁。 bfs求出第一轮能走到的格子,然后计算到边界最小轮数。#include #include<algori...
阅读(100) 评论(0)

[arc067f]Yakiniku Restaurants

题目大意不想讲。做法大概是需要知道如何给一个区间包含的所有区间打加法tag。 给[l,r]包含的所有区间+d,可以令v[l,r]+d。 最终做一遍v[l,r]+=v[l-1,r]+v[l,r+1]-v[l-1,r+1]。 容易讨论这是对的。 这题做m次,建关于最大值的笛卡尔树,那么每次相当于一个区间包含的区间中包含某个位置的可以加多少,可以转化为三个包含区间加法。#include<cstdi...
阅读(95) 评论(0)
818条 共55页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:324814次
    • 积分:11601
    • 等级:
    • 排名:第1514名
    • 原创:814篇
    • 转载:4篇
    • 译文:0篇
    • 评论:201条
    最新评论
    文章分类