关闭
当前搜索:

兔子

题目大意求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的...
阅读(238) 评论(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...
阅读(191) 评论(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 #...
阅读(66) 评论(0)

[arc066f]Contest with Drinks Hard

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

[arc068f]Solitaire

题目大意将1-n顺序加入双端队列(每次可加头可加尾),再删除(每次可删头可删尾),求有多少种删除序列,使得1是第k个被删的。做法考虑什么样的删除序列存在对应的加入序列且合法。 1、第k个是1。 2、前k个元素能拆分成两个单调下降序列。 3、第k个后的元素每个位置都大于等于后缀最大值或小于等于后缀最小值。 4、前k个元素拆分出的单调下降序列其中一个的最小值大于等于第k个后的元素的最大值。 这...
阅读(89) 评论(0)

[2017集训队作业自选题#153]Comb Avoiding Trees

题目大意不想说。DP容易发现如果一颗树左偏次数达不到k-1,就合法。 不妨考虑按dfs序dp: 设f[i,j]表示当前是第i个叶子,从该点往上到根有j-1条左向边。 转移很容易。 良心自选题!#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; typedef...
阅读(84) 评论(0)

[arc073f]Many Move

题目大意你有两个整数a和b。 现在n个操作,依次执行,每次给你xi,你选择一个整数y变成xi,代价为|xi-y|。 求做完所有操作的最小代价。做法设f[i]表示做完前i个操作,其中一个整数变成xix_i,另一个变成xi−1x_{i-1}的最小代价。 第一次操作枚举是哪个变成x[1]做两次dp,以a为例,那么f[1]=|a-x[1]|,然后x[0]=b,即为初值。 转移是f[i]=min(f[...
阅读(70) 评论(0)

[arc074e]RGB Sequence

题目大意有多少三色序列,满足m个条件,每个条件形如区间颜色种类数为多少。做法设dp,f[i,j,k]表示1~i填完了,除了第i个位置填的颜色,其余两种颜色最后一次填在j和k,然后每次处理右端点挂在i的条件,把不符合条件的状态赋值为0。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using names...
阅读(69) 评论(0)

[arc071f]Infinite Sequence

前言怎么这题1000分啊。题目大意一个无穷序列,要求所有大于n的项都和第n项相同。 如果一个位置值为k,接下来k个位置必须相同。 每个位置填1~n的数,求方案数。做法显然相邻两个位置>1后面就全tm一样了。 然后就很tm好做。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namesp...
阅读(90) 评论(0)

[agc004e]Salvage Robots

前言本题的关键是想到让出口和矩形动,而不是机器人动,只要记录出口的位移矩形,便可以知道哪个区域的机器人已经飞出去了。题目大意一个网格图,有若干机器人,还有一个出口。 操作一系列指令让机器人上下左右,走出矩形就死,进入出口则得救。 最多救多少机器人?DP不妨认为矩形和出口会动。 我们设f[u,d,l,r]表示出口移动的上下左右,然后转移也很容易。 第一维可以省略,若如此做记得最后再执行往上的转...
阅读(170) 评论(0)

[agc002f]Leftmost Ball

前言小清新计数题。题意n种颜色每种颜色有k个球(这n种颜色不含白色),排成一行,把每种颜色第一个球涂成白色。 问颜色序列方案数。DP要求任意后缀0的个数不比颜色种类数多。 不妨设dp表示f[i,j]已经用了i种颜色,放了i-j个0。 每次可以在最前面放0。 也可以新加一种颜色,为了不计重最前面的要是这种新颜色。 最后还要乘上颜色的阶乘。#include #include<a...
阅读(117) 评论(0)

[agc009e]Eternal Average

前言需要发现性质的dp。 重点在于发现性质。题意请构造若干k叉树,使得每颗均有n+m个叶子,有n个叶子点权为0,m个叶子点权为1,对于非叶子点权为儿子点权的平均数。 问最多构造多少k叉树,使得任意两颗根节点点权不同?DP令n个叶子的深度为x1~xn,同理m个叶子的深度为y1~ym。 发现根节点的点权是∑mi=1k−yi\sum_{i=1}^mk^{-y_i}。 如果所有叶子点权都为1,那么根...
阅读(182) 评论(0)

[agc009c]Division into Two

前言DP题,还可以,不是很难。题目大意把一堆互不相同的数分成两个集合X和Y,其中一个集合X任意两数之差不小于A,另一集合Y任意两数之差不小于B。 问方案数,集合可以为空。DP把这些数排序。 接着添加第0个数无穷小以及第n+1个数无穷大。 我们假设A>=B。 设f[i]表示分配好了前i个数,第i个数去X集合的方案。 转移显然要找到上一个位置j。 第一种情况j=i-1,只要a[i]-a[i-...
阅读(78) 评论(0)

[agc019e]Shuffle and Swap

前言计数水平不行了。 居然不会n^2去dp这个模型。题意太麻烦了看网站。DP假设有x个公用1和y个非公用1。 用图论来理解。 最后一定形成y条链,若干个环。 其中链中的边在序列中要按顺序,环则随意。 环可以先不管。 考虑dp[i,j]表示目前做出来两个i+j的序列,有i个公用1和j个非公用1,区分编号,有顺序,形成j条链的方案数。 有dp[i,j]=dp[i-1,j]*i*j+dp[i...
阅读(91) 评论(0)
115条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:294901次
    • 积分:11130
    • 等级:
    • 排名:第1596名
    • 原创:801篇
    • 转载:4篇
    • 译文:0篇
    • 评论:197条
    最新评论
    文章分类