博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

02 2018 档案

摘要:"题目链接" Description 一个圆上顺序排列0,1,...,n 1共n个点,给出m条线段,线段可以从里面连也可以从外面连,问是否能满足所有线段不相交 Solution 把每条线段看做一个点,只有在圆外和在圆内两种情况,于是可以把线段拆成i,i',分别表示两种情况 对于端点相交的线段 阅读全文
posted @ 2018-02-28 21:46 SovietPower 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题目链接 构建完MST后,枚举非树边(u,v,w),在树上u->v的路径中找一条权值最大的边(权为maxn),替换掉它 这样在 w=maxn 时显然不能满足严格次小。但是这个w可以替换掉树上严格小于maxn的次大边 用倍增维护MST上路径的最大值、次大值,每条非树边的查询复杂度就为O(logn) p 阅读全文
posted @ 2018-02-28 21:01 SovietPower 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题目链接 Description 给定两边点数分别为n,m共有n×m条边的完全二分图,求其生成树个数模pn,m,p1018Solution 这是完全二分图,那么在构造Prufer序列时,最后会剩下两个点,两点的边是连接两个集合的 阅读全文
posted @ 2018-02-28 16:28 SovietPower 阅读(277) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 猴子之间的打架是棵无根树,有nn2种可能;同时n 1个过程的排列是(n1)! 阅读全文
posted @ 2018-02-28 16:06 SovietPower 阅读(151) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 若点数确定那么ans = (n 2)!/[(d1 1)!(d2 1)!...(dn 1)!] 现在把那些不确定的点一起考虑(假设有m个),它们在Prufer序列中总出现数就是left=n 2 (d1 1) (d2 1) ... (dn 1) 这left个数本身又有m^{left}种 所 阅读全文
posted @ 2018-02-28 15:30 SovietPower 阅读(171) 评论(0) 推荐(0) 编辑
摘要:题目链接 Description 有k种饮料,浓度Ai给出,求用最少的体积配成n/1000浓度的饮料。 Solution 根据题意有方程 (A1x1+A2x2+...+Anxn)/[(x1+x2+...+xn)1000]=n/1000 xi表示Ai选多少升(\(0 阅读全文
posted @ 2018-02-28 14:25 SovietPower 阅读(270) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 先缩点,对于scc之间贡献即为szscc[i] szscc[j] 用f[i][j]表示scci是否能到sccj 拓扑排序,每次把now的f或上to的f 用bitset优化 cpp //63888kb 1080ms include include include include defi 阅读全文
posted @ 2018-02-28 11:06 SovietPower 阅读(178) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 日常水题 ~~还是忍不住吐槽这题奇怪的评价~~ cpp include include include define gc() getchar() // define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?E 阅读全文
posted @ 2018-02-28 08:30 SovietPower 阅读(205) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 二维莫队,按x,y坐标一起分块.(x,y)的所属的块为 x/sq(n) sq(m) + y/sq(m) 排序时按照(左下点所在块,右上点的标号)排序 排序后 先得出一个询问的答案,然后利用上一个询问的矩形与当前矩形位置关系更新答案 转移真的麻烦。。为了避免算重 一定要加个vis[][] 阅读全文
posted @ 2018-02-28 08:09 SovietPower 阅读(689) 评论(0) 推荐(0) 编辑
摘要:给定长为n的序列,m次求区间众数,强制在线。 n40000,m50000阅读全文
posted @ 2018-02-27 20:03 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 长度为n的数列,m次询问,每次询问一段区间最大的 Aitmi (重要度 出现次数) Solution 好像可以用莫队做,但是取max的操作普通莫队是不好撤销的(Subd部分) 于是可以用不带删除的莫队: 回滚莫队 询问依旧是按(左端点所在块,右 阅读全文
posted @ 2018-02-27 15:50 SovietPower 阅读(312) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 大数除法是很麻烦的,考虑能不能将其条件化简 一段区间[l,r]|p,即num[l,r]|p,类似前缀,记后缀suf[i]表示[i,n]的这段区间代表的数字 于是有 suf[l] suf[r+1]|p (suf[l] suf[r+1])%p = 0 suf[l] ≡suf[r+1] (m 阅读全文
posted @ 2018-02-27 11:08 SovietPower 阅读(195) 评论(0) 推荐(1) 编辑
摘要:"题目链接" (同上一题苹果树) 为什么第10个点T了一晚上。。 下面那个却AC了?跑的也不慢。 TLE: cpp / 在DFS序做莫队 当一个点不是另一个点的LCA时,需要加上它们LCA的贡献 / include include include include define gc() getcha 阅读全文
posted @ 2018-02-27 07:37 SovietPower 阅读(176) 评论(0) 推荐(0) 编辑
摘要:"题面链接" cpp / 代码正确性不保证。。(不过交了SPOJ没WA T了最后一个点) 在DFS序做莫队 当一个点不是另一个点的LCA时,需要加上它们LCA的贡献 / include include include include define gc() getchar() const int N 阅读全文
posted @ 2018-02-26 21:14 SovietPower 阅读(162) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 比较水的题 然而。。 首先可以考虑DFS 每B个分一个块,但是这样链底不会和上边相连 于是考虑从底下开始分,即在DFS完一个点时才将其加入栈中;当子树size==B时出栈 最后在根节点可能会剩下一些未分配的点,这些点数当然 include define gc() getchar() c 阅读全文
posted @ 2018-02-26 19:40 SovietPower 阅读(114) 评论(0) 推荐(0) 编辑
摘要:两人轮流走,每次可以从盒子(容量给定)中取出任意堆石子加入Nim游戏,或是拿走任意一堆中正整数个石子。无法操作的人输。10组数据。 阅读全文
posted @ 2018-02-26 11:10 SovietPower 阅读(255) 评论(2) 推荐(1) 编辑
摘要:1堆石子有n个。两人轮流取。先取者第1次可以取任意多个,但不能全部取完。以后每次取的石子数不能超过上次取子数的2倍,取完者胜。问谁能赢。 阅读全文
posted @ 2018-02-26 09:35 SovietPower 阅读(313) 评论(0) 推荐(1) 编辑
摘要:给定n棵"树","树"的节点可能"挂着"一个环,保证没有环相交,且与树只有一个公共点。 两人轮流从树上删边,删去一条边后,不与根相连的一部分会被移除。最后无法移动的人输。问谁能赢。 阅读全文
posted @ 2018-02-26 08:59 SovietPower 阅读(342) 评论(0) 推荐(1) 编辑
摘要:"题目链接" 一个很暴力的想法:每个点拆点,向不能同时存在的连边 但是这样边太多了,而且会有很多重复。~~我不会说我还写了还没过样例~~ 我们实际就是在做一个最大匹配。考虑原图,同在黄/红格里的骑士是互不攻击的,即不会连边。 那么拿这两部分建二分图,分别连向S,T。障碍直接不参与连边。这样边数也少 阅读全文
posted @ 2018-02-26 06:24 SovietPower 阅读(156) 评论(0) 推荐(1) 编辑
摘要:有多堆石子, 每次可以将任意一堆拿走任意个或者将这一堆分成非空的两堆, 拿走最后一颗石子的人胜利。问谁会获得胜利。 阅读全文
posted @ 2018-02-25 21:04 SovietPower 阅读(223) 评论(1) 推荐(0) 编辑
摘要:有一个一行n列的棋盘,每个人每次往上放一个棋子,将三个棋子连在一起的人赢。问是否有必胜策略。 阅读全文
posted @ 2018-02-25 20:29 SovietPower 阅读(192) 评论(0) 推荐(0) 编辑
摘要:"题目链接 洛谷" "COGS.24" 对于大的矩阵可以枚举;对于小的矩阵,需要在满足条件的区域求一个矩形和的最小值 预处理S2[i][j]表示以(i,j)为右下角的CD的矩阵和, 然后对于求矩形区域的最小值,可以先将每行看做一个数列,对于每个点y,得到一个[y (B 3),y]的最小值 处理 阅读全文
posted @ 2018-02-25 19:10 SovietPower 阅读(217) 评论(0) 推荐(1) 编辑
摘要:"题目链接" Anti Nim游戏: 先手必胜当且仅当: 1.所有堆的石子数为1,且异或和为0 2.至少有一堆石子数 1,且异或和不为0 简要证明: 对于1:若异或和为1,则有奇数堆;异或和为0,则有偶数堆。比较显然。 对于2:(1)对于只有一堆石子数 1的情况(异或和一定不为0),先手可以操作这堆 阅读全文
posted @ 2018-02-25 08:59 SovietPower 阅读(147) 评论(0) 推荐(0) 编辑
摘要:给定一个集合S,每次只能拿S中某个元素个数的石子。每组数据有多组询问,询问给出m堆石子个数,问先手是否必胜。有多组数据。 阅读全文
posted @ 2018-02-25 08:29 SovietPower 阅读(151) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //求三堆石子的SG函数,异或起来就是整个游戏的SG值 include include const int N=1005; int n,m,p,cnt,F[N],sg[N+2]; bool vis[N+2]; void Init() { F[0]=F[1]=1; for(cnt 阅读全文
posted @ 2018-02-25 07:40 SovietPower 阅读(140) 评论(0) 推荐(0) 编辑
摘要:一个1~INF的坐标轴上有n个棋子,给定坐标Pi。棋子只能向左走,不能跨越棋子,且不能越界(<1)。两人每次可以将任意一个可移动的棋子向左移动一个单位。问先/后手会赢或是否无解。 阅读全文
posted @ 2018-02-24 21:35 SovietPower 阅读(246) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 后手必胜(先手必败,P position)当且仅当n堆石子数异或和为0。 首先0一定是P position, 假设a1^a2^a3^...^an=K 若K!=0,则一定可以找到一个ai,ai在K的最高位的1上为1,显然ai ai^K,那么可以把ai变成ai^K,局面就成了a1^a2^. 阅读全文
posted @ 2018-02-24 20:48 SovietPower 阅读(158) 评论(2) 推荐(0) 编辑
摘要:Tang,Jiang两人轮流写数,若A在写了X,则B只能写Y,满足1<=Y-X<=k。最先写数的T只能写[1,k]内的数。第一个写的数>=N的lose,问最后的winner。 阅读全文
posted @ 2018-02-24 19:32 SovietPower 阅读(206) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 一个国家有1~n座城市,其中一些城市之间可以修建高速公路(无自环和重边)。 求有多少种方案,选择修建一些高速公路,组成一个交通网络,使得任意两座城市之间恰好只有一条路径。 Solution 生成树计数 直接上Matrix Tree 无解情况别忘了判 Ma 阅读全文
posted @ 2018-02-24 06:56 SovietPower 阅读(170) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价。起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权。 Solution 最直接的方法是把每条边作为一个点,对于连接同一个点的两 阅读全文
posted @ 2018-02-23 21:59 SovietPower 阅读(198) 评论(2) 推荐(1) 编辑
摘要:"题目链接" Description 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 pisi 最大 Solution 01分数规划,然后dp,设f[i][j]表示i子树选j个的最大权值和,直接暴力背包转移即可 在枚举子节点选的数量时,假设x有 阅读全文
posted @ 2018-02-23 18:06 SovietPower 阅读(138) 评论(0) 推荐(0) 编辑
摘要:[TOC] Some Definations. DFST: 深度优先生成树 二分图 1. 若一个图不存在奇环,那么这是二分图。(二分图中的环只能是偶环,无奇环) 竞赛图 竞赛图: 每对顶点之间都有一条(有向)边相连的有向图。 性质: 1. 竞赛图一定存在哈密顿通路,强连通竞赛图一定存在哈密顿回路。 阅读全文
posted @ 2018-02-23 14:13 SovietPower 阅读(298) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-02-23 11:35 SovietPower 阅读(107) 评论(0) 推荐(1) 编辑
摘要:"题目链接" 嗯。。水题 洛谷这网络流二十四题的难度评价真神奇。。 cpp include include include include include define gc() getchar() const int N=206,M=15000,INF=0x3f3f3f3f; int n,m,sr 阅读全文
posted @ 2018-02-23 07:53 SovietPower 阅读(190) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 将n个村庄连成一棵树,村之间的距离为两村的欧几里得距离,村之间的花费为海拔z的差,求花费和与长度和的最小比值 Solution 二分,假设mid为可行的某一生成树的解,则应有 (cost)/(dis)=mid 变形得 $\sum(cost m 阅读全文
posted @ 2018-02-23 06:41 SovietPower 阅读(243) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 一条直线上有n个村庄,位置各不相同。选择p个村庄建邮局,求每个村庄到最近邮局的距离之和的最小值。 Solution 先考虑在[l,r]建一个邮局,最优解肯定是建在中间。 这样mid两边对称,距离和是最小的;若建在mid1,(假设mid阅读全文
posted @ 2018-02-22 20:31 SovietPower 阅读(174) 评论(0) 推荐(0) 编辑
摘要:给出平面上的n个点,满足Xi严格单增,Yi严格单减。以x轴和y轴正方向作边,使这n个点构成一棵树,最小化树边边的总长。 阅读全文
posted @ 2018-02-22 17:28 SovietPower 阅读(263) 评论(0) 推荐(0) 编辑
摘要:"题目链接" (卡常背包) 朴素的多重背包是: f[i][j]=max{f[i1][jkv[i]]+kw[i]},复杂度 O(nVnumi) 可以发现求max时有很多值是被重复枚举过的 换一种方程表示形式,对于每个v[i],设$j=K v[i]+ 阅读全文
posted @ 2018-02-22 16:35 SovietPower 阅读(332) 评论(0) 推荐(0) 编辑
摘要:给定一个长为n的序列,每次可以反转 [l,r] 区间,代价为 rl+1。要求在4106代价内使其LIS长度最长,并输出需要操作的数量及每个反转操作。 阅读全文
posted @ 2018-02-22 06:29 SovietPower 阅读(297) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给定一个长为n的序列A,求两个长为n的序列B,C,对任意的i满足B[i]+C[i]=A[i],且B,C序列分别至少有2n3个元素不同。 A中元素各不相同,Ai,Bi,Ci均为非负整数。 Solution 阅读全文
posted @ 2018-02-21 19:38 SovietPower 阅读(258) 评论(0) 推荐(0) 编辑
摘要:RTTTT 阅读全文
posted @ 2018-02-21 12:58 SovietPower 阅读(2056) 评论(0) 推荐(1) 编辑
摘要:"题目链接" 带修改莫队: 普通莫队的扩展,依旧从[l,r,t]怎么转移到[l+1,r,t],[l,r+1,t],[l,r,t+1]去考虑 对于当前所在的区间维护一个vis[l~r]=1,在修改值时根据是否在当前区间内修改即可。 块大小取O(n23),排序依次按左端点所在 阅读全文
posted @ 2018-02-21 07:59 SovietPower 阅读(209) 评论(0) 推荐(1) 编辑
摘要:给定一个长为n的序列,每次查询区间中出现次数k1小的数里面的k2小的数。卡空间。 n,m40000阅读全文
posted @ 2018-02-20 21:49 SovietPower 阅读(328) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给出一个长为n的数列,以及n个操作,操作涉及区间询问等于一个数c的元素,并将这个区间的所有元素改为c。 Solution 模拟一些数据可以发现,询问后一整段都会被修改,几次询问后数列可能只剩下几段不同的区间了。 那么还是暴力,每个块维护的是整个块是否仅被 阅读全文
posted @ 2018-02-20 11:34 SovietPower 阅读(301) 评论(0) 推荐(1) 编辑
摘要:"题目链接" 1.分块(vector)+重构 cpp //直接上vector(本机还是比较慢的...) 某块size较大时O(n)重构 //注意细节 include include include include define gc() getchar() define pb push_back t 阅读全文
posted @ 2018-02-20 09:52 SovietPower 阅读(338) 评论(1) 推荐(1) 编辑
摘要:"题目链接" int内的数(也不非得是int)最多开方4.5次就变成1了,所以还不是1就暴力,是1就直接跳过。 cpp include include include include define gc() getchar() typedef long long LL; const int N=5e 阅读全文
posted @ 2018-02-19 22:01 SovietPower 阅读(184) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "高斯消元详解" 阅读全文
posted @ 2018-02-19 21:26 SovietPower 阅读(236) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 扩展中国剩余定理: "1(直观的)" 、 "2(详细证明)" 。 [Upd:] https://www.luogu.org/problemnew/solution/P4774 cpp include include define gc() getchar() typedef long 阅读全文
posted @ 2018-02-19 17:31 SovietPower 阅读(282) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "扩展Lucas" cpp //求C_n^k%m include typedef long long LL; LL FP(LL x,LL k,LL p) { LL t=1ll; for(; k; k =1,x=x x%p) if(k&1) t=t x%p; return t; } vo 阅读全文
posted @ 2018-02-19 16:52 SovietPower 阅读(210) 评论(2) 推荐(1) 编辑
摘要:RT 阅读全文
posted @ 2018-02-19 16:45 SovietPower 阅读(296) 评论(0) 推荐(0) 编辑
摘要:题目链接 Lucas定理 日常水题...sublime和C++字体死活不同步怎么办... 复杂度: 如果能O(p)预处理,复杂度为O(logpn),否则要快速幂为O(logpnlogp)。 当p不是质数时,用扩展Lucas,要加CRT,复杂度看起来比较麻烦。。 //想错 阅读全文
posted @ 2018-02-15 21:34 SovietPower 阅读(193) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 颓了一天 写个模板吧。。 Chinese_Remainder_Theorem: "MashiroSky" 、 "远航之曲" cpp include include define gc() getchar() typedef long long LL; const int N=13; L 阅读全文
posted @ 2018-02-15 00:27 SovietPower 阅读(241) 评论(0) 推荐(0) 编辑
摘要:题目链接 Pollard_Rho:http://blog.csdn.net/thy_asdf/article/details/51347390 https://zhuanlan.zhihu.com/p/267884783 复杂度:O(n14),即可以跑long long 阅读全文
posted @ 2018-02-14 14:40 SovietPower 阅读(229) 评论(0) 推荐(0) 编辑
摘要:题目链接: "洛谷" 、 "BZOJ2179" cpp //将乘数拆成 a0 10^n + a1 10^(n 1) + ... + a_n 1的形式 //可以发现多项式乘法就模拟了竖式乘法 所以用FFT即可 注意处理进位 //n位 n位最多就只有2n位了 //putchar的速度。。还是快的 inc 阅读全文
posted @ 2018-02-13 23:27 SovietPower 阅读(176) 评论(0) 推荐(0) 编辑
摘要:"题目链接" DescriptionA0,A1,A2,,An1,满足 A010+A111++An11n1B"1" $$A_0 2^0+A_1 2^1+\ldots+A_{n 1} 2^{n 1} 阅读全文
posted @ 2018-02-13 11:00 SovietPower 阅读(291) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 模板题都错了这么多次。。 cpp //边权赋到点上 树剖模板 //注意LCA、链的顶端不能统计到答案! include include include define gc() getchar() define lson l,m,rt 1; Build(lson), Build(rson 阅读全文
posted @ 2018-02-13 09:51 SovietPower 阅读(197) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 显然我们需要使每个i满足(jX[j]A[i][j])mod 2=B[i] 求这个方程自由元Xi的个数ans,那么方案数便是2ans %2可以用^代替,不难看出 B[i]=st[i]^ed[i] 如果X[j]=1,假设j会影响i,那么X[j] A 阅读全文
posted @ 2018-02-13 08:27 SovietPower 阅读(239) 评论(0) 推荐(0) 编辑
摘要:题目链接: "洛谷" 、 "LOJ" . FFT相关: "快速傅里叶变换(FFT)详解" 、 "FFT总结" 、 "从多项式乘法到快速傅里叶变换" . 5.4 又看了一遍, "这个" 也不错。 2019.3.7 叕看了一遍,推荐 "这个" 。 cpp include include include 阅读全文
posted @ 2018-02-13 06:43 SovietPower 阅读(229) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp include include include const int N=105; const double eps=1e 10; int n; inline bool bigger(double a,double b) {return std::fabs(a) std::fab 阅读全文
posted @ 2018-02-12 21:09 SovietPower 阅读(188) 评论(0) 推荐(0) 编辑
摘要:"https://www.zybuluo.com/SovietPower/note/1016329" "参考原文" 阅读全文
posted @ 2018-02-12 17:15 SovietPower 阅读(205) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 每行每列不能超过2个棋子,求方案数 前面行对后面行的影响只有 放了0个、1个、2个 棋子的列数,与排列方式无关 所以设f[i][j][k]表示前i行,放了0个棋子的有j列,放了1个棋子的有k列,则放了2个棋子的为(m j k)列 则放棋子一共可分为6种情况 不放棋子:1.f 阅读全文
posted @ 2018-02-12 13:03 SovietPower 阅读(181) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 设f[i]表示当前i往后6位没有重复ai的次数,n = ∑a[i] 则 f[i] = a1/n a2/(n 1) a3/(n 2) a4/(n 3) a5/(n 4) a6/(n 5) a7/(n 6) (= (a1 a2 a3 a4 a5 a6 a7)/(n (n 1) 阅读全文
posted @ 2018-02-12 13:01 SovietPower 阅读(173) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 到达一条河时,船在河中的位置是随机的,所以船到达岸边需要的时间在 0~2l/v 均匀分布,所以船到岸的期望为 (0+2l/v)/2 过河需要 l/v 的时间,所以过一条河总的期望为 (0+2l/v)/2 + l/v = 2l/v 陆地上的速度是确定的,可以直接先计算出来 期 阅读全文
posted @ 2018-02-12 13:01 SovietPower 阅读(171) 评论(0) 推荐(0) 编辑
摘要:题目链接 ...我找不着了 Description 岛上有t只老虎,1个人,d只鹿。每天随机有两个动物见面 1.老虎和老虎碰面,两只老虎就会同归于尽; 2.老虎和人碰面或者和鹿碰面,老虎都会吃掉对方; 3.人和鹿碰面,人可以选择吃或者不吃该鹿; 4.鹿和鹿碰面,相安无事; 求最后人活下来的最大期 阅读全文
posted @ 2018-02-12 12:59 SovietPower 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题目链接 ...无 题目: P1864 [Poetize I]守卫者的挑战 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地。突然,眼前一道亮光闪过。 “我,N 阅读全文
posted @ 2018-02-12 12:51 SovietPower 阅读(234) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 设f[i]为到i的期望得分,c[i]为到i的期望连续长度 则若s[i]=='x',f[i]=f[i 1], c[i]=0 s[i]=='0',f[i]=f[i 1]+2 c[i 1]+1, c[i]=c[i 1]+1 (因为 (l+1)^2 = l^2+2l+1 (l+1) 阅读全文
posted @ 2018-02-12 12:50 SovietPower 阅读(154) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-02-12 12:45 SovietPower 阅读(188) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 有n个数,将其分为k段,每段的值为这一段的总共数字种类,问最大总值是多少 Solution DP,用f[i][j]表示当前在i 分成了j份(第j份包括i) 那枚举前边的断点k,即 f[i][j]=maxf[k][j1]+val(k+1,1) 阅读全文
posted @ 2018-02-12 12:38 SovietPower 阅读(263) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 下落一个d s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵线段树t2(h和all) (同一维,需要维护独立的两棵线段树) t1要用标记永久化实现,t2普通 阅读全文
posted @ 2018-02-12 12:34 SovietPower 阅读(254) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 13904K 532ms 最大 环状 子段和有两种情况,比如对于a1,a2,a3,a4,a5 一是两个端点都取,如a4,a5,a1,a2,那就是所有数的和减去不选的,即可以计算总和减最小连续子段和 二是两个端点不都取,如a1,a2,a3,那需要记录最大连续子段和 线段树,令 阅读全文
posted @ 2018-02-12 12:30 SovietPower 阅读(278) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //注意取模! include include using namespace std; const int N=1e5+5; int n,mod,Sum[N 1)) aTag[rt]%mod)%mod; Sum[rt 1) aTag[rt]%mod)%mod; aTag[rt 阅读全文
posted @ 2018-02-12 12:30 SovietPower 阅读(196) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-02-12 12:29 SovietPower 阅读(178) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //离散化后范围1~cnt不要错 include include include // define gc() getchar() define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF: SS+ 阅读全文
posted @ 2018-02-12 08:22 SovietPower 阅读(196) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 序列上的主席树 某点是利用前一个点的根建树 同理 树上的主席树 某个节点可以利用其父节点(is unique)的根建树 排名可以利用树上前缀和求得: 对于(u,v),w=LCA(u,v),u v这条链的值就是 sum "u root]+sum[v root] sum[w r 阅读全文
posted @ 2018-02-12 08:22 SovietPower 阅读(153) 评论(0) 推荐(0) 编辑
摘要:多次求区间mex阅读全文
posted @ 2018-02-11 20:49 SovietPower 阅读(328) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 有一个长为n的序列Ai,要求支持查询[l,r]的最值、历史最值,区间加/重设 Solution 线段树,每个点再维护一个历史(从0到现在)最大值、历史(从上次下传标记到现在)最大的set,add标记 PushDown时肯定是先下放历史标记,之后再用当前标 阅读全文
posted @ 2018-02-11 17:06 SovietPower 阅读(401) 评论(2) 推荐(2) 编辑
摘要:题目链接: "BZOJ" "洛谷" O(n2)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,dp[i]=d[j]+1 cpp for(int j=1; j include include define gc() getchar() define now node[rt] def 阅读全文
posted @ 2018-02-11 10:45 SovietPower 阅读(393) 评论(1) 推荐(1) 编辑
摘要:"题目链接" 无优化版本(170行): cpp / 首先树剖可以维护树上的链Sum、Max 可以对每个宗教建一棵线段树,那这题就很好做了 不过10^5需要动态开点 (不明白为什么nlogn不需要回收就可以 不是每个Insert加log个节点?) 操作修改完更改原数列!盲人。。 / include i 阅读全文
posted @ 2018-02-10 21:45 SovietPower 阅读(163) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 异或只有两种情况,可以将序列放到01Tire树上做 在不异或的情况下在Tire上查找序列的mex很容易,从高位到低位 如果0位置上数没有满,则向0递归;否则向1 (0位置上的数都满了 即 其子树叶子节点都有值) 异或情况下 若x在当前位有1,则反转0/1继续走 由于异或具有 阅读全文
posted @ 2018-02-10 16:10 SovietPower 阅读(261) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 有一片n亩的土地,要在这上面种草。 在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米。 一共会进行m次收割,其中第i次收割在第d[i]天,并把所有高度大于等于b[i]的部分全部割去。求每次收割得到的草 阅读全文
posted @ 2018-02-10 13:46 SovietPower 阅读(270) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 或者 "这" 吧。。 被数据坑了 cpp / 操作按左端点排个序 依次进行即可 不是很懂 为什么不写Build 而在Add时改mp[rt]=p 会WA(too short on line 251..) 找到Reason了。。Modify下界写错 那么为什么单点修改正确性会被下界影响。。 阅读全文
posted @ 2018-02-10 08:47 SovietPower 阅读(356) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 首先考虑询问[1,n]怎么做 设 f[i][0/1]表示[1,i]以0/1结尾的不同子序列个数 则 if(A[i])f[i][1]=f[i1][0]+f[i1][1]+1,f[i][0]=f[i1][0] $\ \ if(!A[i]) f[i][0] = 阅读全文
posted @ 2018-02-10 08:05 SovietPower 阅读(197) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 求异或和,容易想到,如果同一个数异或偶数次相当于0 ∑ai还不大,那想一下每个子集和出现多少次,显然只需要知道次数的奇偶,可以用bitset bit[i]=0/1表示子集和为i出现了偶数次/奇数次 有个简单的dp方程: f[x+a[i]]+=f[x] 对于一个x,bit(注 阅读全文
posted @ 2018-02-09 17:09 SovietPower 阅读(156) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "主要思路" cpp / 对于询问1,用堆代替multiset/Splay 对于询问2,multiset 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个值会全部都删掉 / include include include include c 阅读全文
posted @ 2018-02-09 17:08 SovietPower 阅读(170) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "主要思路" cpp / 其实只需要multiset即可 对于询问1,删除、插入差值,输出最小元素 对于询问2,插入后用前驱后继更新 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个值会全部都删掉 不开O2慢成狗 开了也不是很快 / inc 阅读全文
posted @ 2018-02-09 17:06 SovietPower 阅读(229) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //输出ht见UOJ.35 include include include const int N=1e6+5; int n,tm[N],t1[N],t2[N],SA[N],rk[N],ht[N]; //SA[i]=j:排名为i的后缀开头的下标为j //rk[i]=j:以下标i 阅读全文
posted @ 2018-02-09 13:34 SovietPower 阅读(297) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 分块。对于块之外的,暴力修改、查询; 对于一整块内的,修改后sort使每一块块有序,询问时二分 =C的位置求个数 / include include include include using namespace std; const int N=1e6+5; int n, 阅读全文
posted @ 2018-02-09 13:33 SovietPower 阅读(150) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 数列的最大值保证 include include include using namespace std; const int N=5e4+5; int n,m,k,size,A[N],times[N]; long long ans[N],now; struct Ques 阅读全文
posted @ 2018-02-09 13:32 SovietPower 阅读(158) 评论(0) 推荐(0) 编辑
摘要:"题目链接 COGS" "BZOJ2120" "洛谷P1903" cpp / Add和Subd函数中的vis不能直接设为=1或=0 比如 l=1,r=0 l=3,r=5 时,[1,5]的vis标记全都是1 所以要进行取反 / include include include include using 阅读全文
posted @ 2018-02-09 13:31 SovietPower 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目链接: "COGS" 、 "BZOJ3236" Upd: 树状数组实现的是单点加 区间求和,采用值域分块可以O(1)修改O(sqrt(n))查询。同 "BZOJ3809" . 莫队为O(n1.5)次修改和O(n)次查询。 注意这两个需求并不平衡,所以在搭配数据结构时常使用分 阅读全文
posted @ 2018-02-09 13:30 SovietPower 阅读(229) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-02-09 13:29 SovietPower 阅读(171) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp include include include include using namespace std; const int N=1e5+5; define LL long long int n,belong[N],size; LL A[N],sum[N],tag[N]; in 阅读全文
posted @ 2018-02-09 13:28 SovietPower 阅读(254) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp include include include include using namespace std; const int N=1e5+5; int n,m,A[N],size,belong[N],sum[N]/ 某块的总和 /,tag[N]/ 某块的加标记 /; inlin 阅读全文
posted @ 2018-02-09 13:28 SovietPower 阅读(216) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 如果用线段树,每个节点要再开k的空间,显然不行。但是分块可以(虽然空间依旧爆炸) 分块。用bloans[i][j]表示 第i块 模k为j 的有多少个 对于不是整块的,查询时应判断 A[i]+tag[belong[i]] ==k || ==0 对于整块,维护两个tag,一个是 阅读全文
posted @ 2018-02-09 13:25 SovietPower 阅读(304) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 25832 kb 26964 ms 莫队+树状数组:增加/删除/查询 都是O(logn)的,总时间复杂度O(m sqrt(n) logn),卡不过 莫队+分块:这样查询虽然变成了sqrt(n),但是修改是O(1)的 考虑对权值进行分块 细节... / include inc 阅读全文
posted @ 2018-02-09 13:23 SovietPower 阅读(163) 评论(0) 推荐(1) 编辑
摘要:题目链接 [Update] 这是一个暴力,DP正解见 https://www.luogu.com.cn/blog/fusu2333/solution-p2292 ,同样是利用fail递推,并利用串长只有10,可能匹配位置只有10的性质。 /* 简单的DP,查找是否有字典中的单词时在Trie树上做 要 阅读全文
posted @ 2018-02-09 13:21 SovietPower 阅读(184) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给出n个字符串,问重定义英文字符的顺序(即字典序),有哪些单词可能排在第一 Solution 一个单词想要排在第一,首先是没有其它字符串是它的前缀。那么建一棵Trie树 其次,它字符的优先级要比和它有着相同前缀的要高。 也就是说,对于同一个父节点下,这个 阅读全文
posted @ 2018-02-09 13:20 SovietPower 阅读(236) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 还是80分,不是很懂。 cpp / 七个操作(用左偏树)(t2表示第二棵子树): 1.合并:直接合并(需要将一个t2中原有的根节点删掉) 2.单点加:把这个点从它的堆里删了,加了再插入回去(有负数)(它可能成为这一个堆的根,所以也要从t2中删除再插入) 3.整个连通块加:根节点打标记( 阅读全文
posted @ 2018-02-09 13:18 SovietPower 阅读(168) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "左偏堆学习 推荐" cpp include include include define gc() (SS==TT &&(TT=(SS=IN)+fread(IN,1,1val[B]||(val[A]==val[B]&&A B)) std::swap(A,B); son[A][1]=M 阅读全文
posted @ 2018-02-09 13:15 SovietPower 阅读(184) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //注意树剖一条链上或一棵子树内的编号是连续的 //建树时用的是第二次dfs得到的序列 //不要频繁转longlong include include include // define gc() getchar() define gc() (SS==TT&&(TT=(SS=I 阅读全文
posted @ 2018-02-09 13:14 SovietPower 阅读(147) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-02-09 13:11 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" st(n)表示sqrt(n) 为使块状链表不会退化,通常将每块的大小S维持在[st(n)/2,2st(n)]中,这样块数C也一定[st(n)/2,2st(n)]中 在此使用另一种方法(方便)维持这种性质:保证任意相邻两块的size相加 st(n),并且每块大小 include incl 阅读全文
posted @ 2018-02-09 13:10 SovietPower 阅读(481) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Update:这种分块写法...可以被卡掉啊... 好像没有靠谱的树分块写法... cpp / 对树上节点进行分块,每个点记录dep,fa,val,Max,Sum,Max,Sum表示当前点在该块内的子树中权值最大值与和 节点i各值表示从root[i]到i一段路径的的对应值。因为求值时应 阅读全文
posted @ 2018-02-09 13:08 SovietPower 阅读(189) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 洛谷上惨遭爆零是为什么。。 另外这个树分块算法是假的。 cpp / 插入删除只涉及一个数,故每次可以枚举一遍,而不是重构完后sort / include include include include define gc() getchar() const int N=6e4+5; c 阅读全文
posted @ 2018-02-09 13:07 SovietPower 阅读(176) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 第一次写(2017.11.7): 第二次写(2017.12.3): cpp include include const int N=1e5+5; int n,root,size,sz[N],cnt[N],t[N],son[N][2],fa[N]; inline int read() { 阅读全文
posted @ 2018-02-09 13:05 SovietPower 阅读(150) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 查找排名为k的数用平衡树 合并时用启发式合并,把size小的树上的所有节点插入到size大的树中,每个节点最多需要O(logn)时间 并查集维护连通关系即可 O(nlogn insert time) 据(主席)说按顺序插入能做到均摊O(1),中序遍历即可有序插入 1.并查集与平衡树是独 阅读全文
posted @ 2018-02-09 13:02 SovietPower 阅读(206) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //模板吧 include include include using namespace std; const int N=40000,INF=1e8; int n,size,root,sz[N],cnt[N],t[N],son[N][2],fa[N]; inline int 阅读全文
posted @ 2018-02-09 13:01 SovietPower 阅读(109) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / BZOJ1503: 3164kb 792ms/824ms(新建节点) 洛谷 : 3.06mb 320ms/308ms(前一个要慢wtf 其实都差不多,但前者好写) 四种操作: A:所有元素加v。直接TAG+=v即可 S:所有元素减v。TAG =v,如果TAG0,可是v已经要 阅读全文
posted @ 2018-02-09 12:59 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" or "Here" 题意:n个数,有两个操作:1.修改某个数为v;2.询问一段区间第k小的数 如果没有修改,则可以用线段树,每个节点P[a,b]存储大小为b a+1的数组,代表其中的数 同时,这个数组还是要排好序的 直接找答案很不方便,于是考虑对数组二分答案,求比它小的数的个数 关于构 阅读全文
posted @ 2018-02-09 12:56 SovietPower 阅读(275) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 附纯SplayTLE代码及主要思路: cpp / 可以看做序列有n段,Insert是每次在每一段最后插入一个元素 只有插入,没有删除,所以插入一个元素对于询问1影响的只有该元素与前边一个元素(同段)、下一段的开头元素 故只需删掉该段最后元素与下一段开头元素的差,再加入新元素与下一段开头 阅读全文
posted @ 2018-02-09 12:51 SovietPower 阅读(198) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 阅读全文
posted @ 2018-02-09 12:49 SovietPower 阅读(195) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 任意组合土地好像很难DP 对于同一组,价值为max{ai} max{bi},显然长宽都小于这个的土地是不会算入结果的 由于是都买,所以所有会被包含的土地都不会算入结果 先按Ai、Bi升序排序,第一关键字Ai,那么对于B[i 1] include include define 阅读全文
posted @ 2018-02-09 12:47 SovietPower 阅读(141) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 2017.12.24 第一次写: 时间: 2316ms (1268ms) 空间: 19.42MB (19.5MB)(O2) 注:洛谷测的时间浮动比较大 2018.2.26 第二次写: (简化许多)(两份实际行数倒差不多) 时间: 2008ms (1536ms) 空间:19.51MB ( 阅读全文
posted @ 2018-02-08 16:00 SovietPower 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接 //注意反转时先分裂r,因为l,r是针对整棵树的排名 #include<cstdio> #include<cctype> #include<algorithm> //#define gc() getchar() #define gc() (SS==TT&&(TT=(SS=IN)+fread 阅读全文
posted @ 2018-02-08 15:58 SovietPower 阅读(225) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 第一次(2017.12.24): cpp include include include // define gc() getchar() define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF: SS+ 阅读全文
posted @ 2018-02-08 15:57 SovietPower 阅读(282) 评论(0) 推荐(0) 编辑
摘要:ForStudy wolfram alpha(手机APP:wolfram alpha app可以免费查看过程) OEIS(在线整数数列查询网站) GeoGebra(解方程,画函数图像,绘制图形,分析数据,探讨3D数学!) 在线绘图 绘制函数图像:https://www.desmos.com/c 阅读全文
posted @ 2018-02-08 15:17 SovietPower 阅读(251) 评论(1) 推荐(1) 编辑
摘要:题目链接 Solution 注: 刚学 可能过程有疏漏,仅供参考(其实我不是很懂这里是否需要证决策单调)。 (当然不用斜率表示用推式子的方法解已经不太合适了。。) 抽象下问题,即将一个序列分成任意多段,设f[i]表示以i作为一个右端点时[1,i]的最小值,则$f[r]=f[l]+ 阅读全文
posted @ 2018-02-08 09:19 SovietPower 阅读(151) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 斜率优化 不说了 网上很多 这的比较详细 " Click Here " or "Here" 阅读全文
posted @ 2018-02-07 18:03 SovietPower 阅读(169) 评论(2) 推荐(0) 编辑
摘要:"题目链接" Description 给定一个n个数的序列,最多将序列分为m+1段,每段的价值是这段中所有数两两相乘的和。求最小总价值。 Solution ~~写到这突然懒得写了。。~~ 丢个 "题解" ~~走人~~ cpp / 朴素O(n^3):f[i][j]表示当前在i分了j段的 阅读全文
posted @ 2018-02-07 17:22 SovietPower 阅读(150) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 一棵n个点的树,每次可以选择树上两个叶子节点并删去一个,得到的价值为两点间的距离 删n 1次,问如何能使最后得到的价值最大,并输出方案 Solution 树上距离,求最大,可以考虑下树的直径 假如已知树的直径u v,那么任意一点x到达其他点的最远距离就是 阅读全文
posted @ 2018-02-07 15:06 SovietPower 阅读(205) 评论(0) 推荐(0) 编辑
摘要:选k段不相交的区间,使其权值和最大。 阅读全文
posted @ 2018-02-07 11:26 SovietPower 阅读(527) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 每一天的餐巾需求相当于必须遍历某些点若干次 设q[i]为Dayi需求量 (x,y)表示边x容y费 将每个点i拆成i,i',由i' T连(q[i],0)的边,表示求最大流的话一定要流满q[i] 对于i,由S i连(q[i],0)的边,表示满足Dayi需求后最多还能给出q[i] 阅读全文
posted @ 2018-02-06 16:49 SovietPower 阅读(135) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 同"修车":对于每个厨师拆成p个点表示p个时间点,每个人向m个厨师每个时间点连边 这样边数O(nmp)+网络流 ≈O(nm p^2)(假设SPFA线性) = GG 可以发现这O(nmp)条边大多数是用不到的 所以可以只建少量边,每增广一条路加O(n)条边 复杂度就是O(nm 阅读全文
posted @ 2018-02-06 15:49 SovietPower 阅读(176) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 上下界费用流: 最小路径覆盖: 阅读全文
posted @ 2018-02-06 14:20 SovietPower 阅读(161) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp / 神tm看错题 2。。 假如人员i依次维修W1,W2,...,Wn,那么花费的时间是 W1 + W1+W2 + W1+W2+W3... = W1 n + W2 (n 1) + ... + Wn 1 即车j是第a个修的 产生的贡献是(n a+1) t[i][j] 车j是倒数第a 阅读全文
posted @ 2018-02-06 09:27 SovietPower 阅读(138) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //裸最大权闭合子图... include include include define gc() getchar() const int N=55005,M=N 阅读全文
posted @ 2018-02-05 18:05 SovietPower 阅读(129) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 最小化最大的一条边,二分答案。然后就变成了给一张无向图定向使其为欧拉回路 二分答案后对于一个位置的两条边可能都保留,即双向边,需要给它定向;可能只保留小的一条,即单向边,不需考虑 如何给它定向呢,或者说怎么形成欧拉回路呢 形成欧拉回路的充要条件:弱连通图;每个点出度=入度 记点i的度数 阅读全文
posted @ 2018-02-05 17:41 SovietPower 阅读(142) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 枚举时间 每一个时间点 对于每个之前的位置像当前位置连边,表示这一时刻可待在原地 每艘船 之前时刻位置向当前时刻连边 注意别漏了0时刻src连向earth的边 阅读全文
posted @ 2018-02-05 15:12 SovietPower 阅读(183) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 有源汇有上下界最小流 Sol1. 首先和无源汇网络流一样建图,求SS TT最大流; 然后连边(T S,[0,INF]),再求一遍SS TT最大流,答案为新添加边的流量 无解情况: 连边后再求最大流+之前的最大流 != ∑dgr "" 解释: 第一次最大流已经满足下界,满足下界的情况下能 阅读全文
posted @ 2018-02-05 10:50 SovietPower 阅读(320) 评论(0) 推荐(0) 编辑
摘要:"题目链接" http://blog.csdn.net/just_sort/article/details/75448403 有源汇有上下界网络流 通过添加一条(T S,[0,INF])的边变成无源汇 Sol1. 添加(T S, "0,INF])的的边后,按无源汇最大流建图,跑一遍SS TT的最大流 阅读全文
posted @ 2018-02-05 10:26 SovietPower 阅读(253) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 参考:http://blog.csdn.net/clove_unique/article/details/54884437 http://blog.csdn.net/wu_tongtong/article/details/73320968 阅读全文
posted @ 2018-02-04 17:17 SovietPower 阅读(136) 评论(0) 推荐(0) 编辑
摘要:Solution "参考" 对于每个点,向唯一有可能与它形成MST的8个点连边,由于是双向单边,所以每个点最多连出4条边(证明见 "blog" ) 怎么找到一个区域内最近的点? 只考虑y轴右侧45°的区域,其余部分可以通过坐标变换移动到这一区域 设当前点P(x0,y0),这一区域一点P1(x1, 阅读全文
posted @ 2018-02-04 16:06 SovietPower 阅读(168) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description n1010,求 i=1nj=1ngcd(i,j) mod (1e9+7) Solution 首先 $$\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)=\sum_{d=1}^ 阅读全文
posted @ 2018-02-04 10:39 SovietPower 阅读(203) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示