上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 38 下一页
摘要: 考虑按时刻从早到晚模拟,计算出f[i]:到达i点的最晚出发时间g[i]:为了赶上第i辆车的最晚出发时间然后将所有到达n号点的巴士按到达时间排序,查询的时候二分查找即可。时间复杂度$O(n\log n)$。#include#include#include#include#define N 300010... 阅读全文
posted @ 2015-08-18 21:13 Claris 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 考虑按x坐标排序后分治,只需考虑计算左下角在[l,mid],右上角在[mid+1,r]的矩形数。对于[l,mid]的点,从右往左考虑,求出它可以贡献到的纵坐标区间。对于[mid+1,r]的点,从左往右考虑,求出它可以接受的纵坐标区间。然后扫描线+Treap维护即可,时间复杂度$O(n\log^2n)... 阅读全文
posted @ 2015-08-18 03:10 Claris 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 莫队算法,考虑如何快速维护最大的重要度。考虑到答案一共只有$O(n)$种本质不同的取值,于是可以先通过$O(n\log n)$的排序处理出这些值的大小关系,并将这些值离散化,同时对每种事件的每个出现次数维护两个指针pre和nxt,分别表示出现次数减少或增加一后是第几小。然后对这些取值进行分块,每块维... 阅读全文
posted @ 2015-08-18 00:31 Claris 阅读(945) 评论(0) 推荐(1) 编辑
摘要: 如果一条边可行,那么删掉这条边后,剩下的图是二分图且该边的两端点颜色相同。那么可行的边必然属于所有奇环的交集,且不属于任何偶环。随便取一棵生成树,对于一条非树边,它形成了环:若是偶环,则将环上的边都标记为不能选。若是奇环,则将环上的边经过的奇环数都加一。可以用树链剖分维护前缀和做到$O(m\log ... 阅读全文
posted @ 2015-08-17 21:41 Claris 阅读(937) 评论(0) 推荐(2) 编辑
摘要: 若直线的斜率为0或者不存在斜率,则有$nC(m,3)+mC(n,3)$种方案。若直线的斜率不为0,只需考虑斜率为正的情况,最后答案再乘以2即可。枚举两个点的坐标差,设$t=\min(n,m)$,则有:\[\begin{eqnarray*}ans&=&\sum_{i=1}^n\sum_{j=1}^... 阅读全文
posted @ 2015-08-17 17:28 Claris 阅读(502) 评论(0) 推荐(0) 编辑
摘要: 若能得到一个和为t的区间,那么至少去掉两端点中任意一个后必定能得到和为t-2的区间。所以只需要分别找到和最大的和为奇数和偶数的区间,然后$O(n)$完成构造即可。#include#define N 1000010int n,m,i,s[N],b,c,d,t,l,r,f[N='0')&&(c='0')... 阅读全文
posted @ 2015-08-17 01:53 Claris 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 将a从小到大排序可以得到最优解,设f[i][j]表示前i个用了j种颜色的最小累计误差,则f[i][j]=min(f[k-1][j-1]+w(k,i))。其中w(k,i)为[k,i]区间里所有数与中位数的差值的绝对值之和,有w(k,i)=w(k+1,i)+a[(k+i+1)>>1]-a[k]。时间复杂... 阅读全文
posted @ 2015-08-16 01:01 Claris 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 首先模拟一遍得到n个同余方程,然后用扩展欧几里得求出最小的可行解即可,时间复杂度$O(n^2)$。#include#define N 30int n,i,j,k,x,y,a[N],b[N],d[N],ans;namespace Solve{int flag=1,k=1,m=0,d,x,y;int e... 阅读全文
posted @ 2015-08-15 17:21 Claris 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 考虑到$lcm(1,2,3,4,5,6)=60$,所以操作序列每60秒一个循环。将操作表示成转移矩阵的形式,预处理出前60秒的转移矩阵以及它们的乘积$B$。那么t秒的转移矩阵为前$t\bmod 60$个转移矩阵的乘积乘以$B^{\lfloor\frac{t}{60}\rfloor}$。用矩阵快速幂加... 阅读全文
posted @ 2015-08-14 23:12 Claris 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]表示串ij可以由哪些字母成长过来,用二进制压位表示。设g[i][j]表示给定串中[i,j]这个区间一开始可以由哪些字母成长多来,用二进制压位表示。设h[i]表示给定串前i位最少需要几个字母,h[i]=min(h[j]+1),j#include#define N 105int T,n,... 阅读全文
posted @ 2015-08-14 20:50 Claris 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 二分答案mid,将差距先都调到mid以内。首先从左往右扫,a[i]=min(a[i],a[i-1]+mid)。然后从右往左扫,a[i]=min(a[i],a[i+1]+mid)。枚举要变为0的位置,求出L,R使得:a[L]>(i-L)mida[R]>(R-i)mid此时只需要把[L,i]和[i,R]... 阅读全文
posted @ 2015-08-14 03:23 Claris 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 设b[i]为将i分解质因数后所有质数的指数和,则$d(i,j)=b[i]+b[j]-2b[\gcd(i,j)]$。设d[i]为i的倍数中的最优解和次优解。对于i,枚举它的约数k作为gcd,然后用d[k]去更新ans[i]即可。时间复杂度$O(n\log n)$。#include#define N 1... 阅读全文
posted @ 2015-08-13 22:54 Claris 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 对于根,要让它的排名尽量小,也就是要让右子树的点数尽量多。于是从大到小枚举右子树的点数,用Catalan数计算方案数,直到找到相应的右子树的点数为止。此时根的排名已经确定,接下来要让左子树的代码的字典序尽量小,递归解决即可。#includeint n,k,i,j,f[20];void solve(i... 阅读全文
posted @ 2015-08-12 14:56 Claris 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 从上到下枚举行,可以$O(m)$更新现在每一列往上连续的1的个数,也可以在$O(m)$的时间内完成排序。总复杂度$O(nm)$。#include#define M 1510int n,m,x,i,j,b[M],ans,q[2][M],t;char a[M];int main(){ for(scan... 阅读全文
posted @ 2015-08-10 23:31 Claris 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 求出$M$的原根$g$以及每个数$i$的指标$ind[i]$。则$(a\times b)\bmod M = x$等价于$(ind[a]+ind[b])\bmod \varphi(M) = ind[x]$。这是个循环卷积,用快速幂+NTT加速运算即可,时间复杂度$O(m\log m\log n)$。#... 阅读全文
posted @ 2015-08-10 19:38 Claris 阅读(998) 评论(2) 推荐(1) 编辑
摘要: 二分答案,转化成判定所有科学家能否在lim时间内走到安全的地方考虑网络流,对于每个非叶子节点,S向它连边,容量为该点科学家的人数对于每个叶子节点,向T连边,容量为该点的容量对于每个非叶子节点x,枚举它的所有祖先,对于一个祖先y,向y子树中所有与x距离不超过lim的点连边,容量为inf由于数据随机,所... 阅读全文
posted @ 2015-08-09 16:44 Claris 阅读(239) 评论(0) 推荐(0) 编辑
摘要: \[\begin{eqnarray*}ans&=&m^{\sum_{i=1}^n Stirling2(n,i)\bmod 999999598}\bmod 999999599\\&=&m^{B_n\bmod 999999598}\bmod 999999599\end{eqnarray*}\]99999... 阅读全文
posted @ 2015-08-09 02:38 Claris 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 设g[i]表示n=i时的答案,则OEIS上可以找到如下递推式:g[i]=g[i-1]+g[i-2]-g[i-5]-g[i-7]+...其中符号为++--交替,第i项为f[i],f[1]=1,f[2]=2,f[3]=5,f[4]=7f[i]=3+2*f[i-2]-f[i-4]注意到f[731]>200... 阅读全文
posted @ 2015-08-09 00:28 Claris 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 二分答案,转化为判定能否划分成不超过m段,且对每段求最小圆覆盖得到的圆半径不超过mid。对于当前的i,倍增出一个j,使得[i,i+(1#include#include#include#define N 100010using namespace std;int n,m,i,T=50,cnt,ans[... 阅读全文
posted @ 2015-08-08 17:58 Claris 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 首先旋转坐标系$x'=x-y$$y'=-x-y$则对于一个点,它下一步可以往它左上角任意一个点连线。根据Dilworth定理,答案=这个偏序集最长反链的长度。设f[i]为到i点为止的最长反链长度,则f[i]=max(f[j])+1,j在i的左下角按x坐标排序后用树状数组优化DP即可,时间复杂度$O(... 阅读全文
posted @ 2015-08-07 23:06 Claris 阅读(322) 评论(0) 推荐(0) 编辑
上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 38 下一页