- 博客(30)
- 收藏
- 关注
转载 BZOJ1500: [NOI2005]维修数列
妈呀,写的我心态崩了,注意以下几点:1.标记下放时应该立即更新子节点,才能pushup更新当前结点(此时实际上在当前结点的标记已经使用过了)。2.最好类似线段树的建树方法,否则容易RE。3.写个回收。4.我这splay写的是菜出狗屎了,在rotate里面pushdown,妈呀,就是因为没注意第一点,而且常数贼大,虽然可以过。5.其他就是加两个结点0,n+1,好处理就行...
2019-05-30 00:29:00 120
转载 Codeforces Round #190 (Div. 2) B. Ciel and Flowers
重点还是推一下式子。设mixing bouquet个数为x,F(x,y) = [(y-x)/3],则答案为f(x) = F(x,r)+F(x,g)+F(x,b),这里的[]代表向下取整,猜测一下f(x)的单调性。推这个式子f(x+1) - f(x) = 1+F(x+1,r)-F(x,r)+F(x+1,g)-F(x,g)+F(x+1,b)-F(x,b)。对F(x+1,r)-F(...
2019-05-26 17:20:00 126
转载 一些傍晚的感想
打ACM这么久了,从来没有今天晚上感想这么多。该从何说起呢。马上大四了,才醒悟过来时间已经不多了,以前一直觉得时间还多,很多东西可以以后补回来,但是现在已经来不及了,或者说顿时觉得时间不够了,一边是要顾着考研, 一边又想打比赛,这段时间总在二者之间徘徊。但我觉得我并没有后悔把这么多时间花费在ACM上,虽然说在比赛上没出什么成果(这可能是比较悲惨的一件事情)总该有些总结吧。...
2019-05-25 22:42:00 132
转载 Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations
得到k二进制后,对每一位可取得的方法进行相乘即可,k的二进制形式每一位又分为2种0,1,0时,a数组必定要为一长为n的01串,且串中不出现连续的11,1时与前述情况是相反的。且0时其方法总数为f(n) = f(n-1) + f(n-2),其中f(2) = 3,f(1) = 3。#include <bits/stdc++.h>using namespace st...
2018-12-02 10:52:00 106
转载 Educational Codeforces Round 16 D. Two Arithmetic Progressions
解线性同余方程组,且方程仅2个,另外得到的x限制在L,R区间内,观察一下A1K-A2L=B2-B1,便可知,通解(K,L)中会同时增大或同时减小,大可以先使得K,L大于等于0,于是之后只需要考虑让K不断增大且这样得到的x在[L,R]内即可。由x在[L,R]中,便可以求出K的范围,然后分情况讨论一下就好了。#include <cmath>#include &...
2018-10-31 11:40:00 115
转载 I.Tower Defense
给你p个重塔,q个轻塔,把这些塔放在n*m的图中,这些塔会相互攻击同行同列的,轻塔不能受到攻击,重塔能承受一个塔的攻击,问放的方法数。先假定n < m。可以先枚举放轻塔的个数为s,显然,方法数为C(n,s) * m * (m-1) * ... * (m-s+1) ,放完之后我们可以发现图其实缩小成为了一个(n-s)*(m-s)的图。然后放重塔,由于重塔可以承受一个塔...
2018-10-31 00:01:00 928
转载 Croc Champ 2013 - Round 2 C. Cube Problem
问满足a^3 + b^3 + c^3 + n = (a+b+c)^3 的 (a,b,c)的个数可化简为 n = 3*(a + b) (a + c) (b + c)于是 n / 3 = (a + b)(a + c) (b + c)令x = a + b,y = a + c,z = b + c,s = n / 3s = xyz并且令x <= y <= z,于是我...
2018-10-07 16:27:00 144
转载 Educational Codeforces Round 36 (Rated for Div. 2) G. Coprime Arrays
求a_i 在 [1,k]范围内,gcd(a_1,a_2...,a_n) = 1的a的数组个数。F(x)表示gcd(a_1,a_2,...,a_n) = i的a的个数f(x)表示gcd(a_1,a_2,...,a_n) = ki的a的个数(实际上就是i的倍数)f(x) = segma(x | d) F(d)F(x) = segma(x | d) mu(d / x) *...
2018-10-07 16:07:00 110
转载 Educational Codeforces Round 7 F. The Sum of the k-th Powers
重心拉格朗日插值定理可以解决求和公式。。但是我的跑的也太慢了吧。。。#include <cmath>#include <cstdio>#include <cstdlib>#include <cassert>#include <cstring>#include <set>#incl...
2018-10-07 15:44:00 104
转载 Educational Codeforces Round 50 (Rated for Div. 2)F. Relatively Prime Powers
实际上就是求在[2,n]中,x != a^b的个数,那么实际上就是要求x=a^b的个数,然后用总数减掉就好了。直接开方求和显然会有重复的数。容斥搞一下,但实际上是要用到莫比乌斯函数的,另外要注意减掉1^b这种情况。#include <cmath>#include <cstdio>#include <cstdlib>#includ...
2018-09-13 12:47:00 93
转载 Educational Codeforces Round 50 (Rated for Div. 2) E. Covered Points
注释上都有解析了,就不写了吧,去重的问题就用set解决,并且呢第i个线段最多和其他线段产生i-1个交点,n^2logn。#include <cmath>#include <cstdio>#include <cstdlib>#include <cassert>#include <cstring>#inc...
2018-09-12 18:37:00 88
转载 Codeforces Beta Round #57 (Div. 2) E. Enemy is weak
求满足条件的三元组的个数,可以转换求一元组和二元组组成的满足条件的三元组的个数,且对于(x),(y,z),x > y,且x出现的p_x < p_y。x可直接枚举O(n),此时需要往后查询二元组的个数,二元组可由两个一元组生成,实际上到这里就转换成了求两次逆序对而已。#include <cmath>#include <cstdio>#...
2018-09-06 22:45:00 71
转载 Codeforces Round #345 (Div. 1) A. Watchmen
相同的X,Y计进去,相同的二元组(X,Y)去重。#include <cmath>#include <cstdio>#include <cstdlib>#include <cassert>#include <cstring>#include <set>#include <map&g...
2018-09-06 19:09:00 115
转载 Codeforces Round #291 (Div. 2) B. Han Solo and Lazer Gun
因为是x,y均为整数因此对于同一直线的点,其最简分数x/y是相同的(y可以为0,这里不做除法)于是将这些点不断求最简分数用pair在set中去重即可。#include <cmath>#include <cstdio>#include <cstdlib>#include <cassert>#include <cs...
2018-09-04 22:21:00 107
转载 zoj4027 Sequence Swapping
首先容易想到二维方程dp(i,j),表示第i个左括号去匹配到第j个右括号时产生的最大值,但如果如此表示的话,首先需要枚举(i,j)以及一个k即dp(i-1,k)。考虑变化dp(i,j)的表示方法,可选择将其表示为第i个左括号至少匹配到第j个右括号时所产生的最大值。如此表示的话,则转移方程为dp(i,j) = max(dp(i,j+1),dp(i+1,j) + a(i,j))此时不...
2018-08-31 22:46:00 93
转载 zoj4028 LIS
差分约束瞎搞一下,话说这个数据不知道怎么回事,我的图按道理而言最多只有4n条边,开5n还不够??必须6n??约束条件首先根据f函数可建立两点之间的约束,不妨设d[i]为i到0的距离,则对于f[i] == f[j] + 1(i>j)的情况,必定d[i] - d[j] >= 1,对于f[i] == f[j]的情况,必定d[j] - d[i] >= 0(i>j)...
2018-08-31 22:40:00 92
转载 zoj 3946 Highway Project
我TM建个前向星的双向边MAXN只开100005???还一直不报WA,一直以为我是哪里没考虑到。。。。一定要注意数组大小了。思路很简单,从0到其他点的最短路距离是一定的,那要求最小花费,那就边跑最短路边更新最小花费呗。#include<cstdio>#include<cstdlib>#include<iostream>#incl...
2018-08-30 10:28:00 95
转载 hdu 4819 Mosaic
无论是线段树还是树状数组维护最大值最小值的时候一定要注意,如果有修改操作的话,这个最小值和最大值的更新一定不能由原来的和修改的值得到,一定要重新查询一次,否则可能出现当前最小值是原来的未修改值,但事实上若修改了,此最小值不存在了。此题线段树套线段树,写的代码有点挫了。#include<cstdio>#include<cstdlib>#include...
2018-08-29 13:08:00 108
转载 2887 Big String
splay瞎搞一下,正解是分块数组或分块链表,但是学不会啊!#include<cstdio>#include<cstdlib>#include<iostream>#include<string>#include<set>#include<algorithm>#include<ve...
2018-08-28 11:19:00 180
转载 bzoj2212 Tree Rotations
被BZOJ坑了一下午,原以为是我程序有问题一直WA,结果是我数组小了。。。为啥不给我RE!!!线段树合并,对于逆序对而言,只能通过交换左右子树来达到,那么我们就可以想到对于一个结点而言,我们当然要取左右子树不叫换产生的逆序对,及交换产生的逆序对,取最小的就好了,另外呢,因为要维护子树中包含的数,在往上递归时需要对该树合并。#include<cstdio>#in...
2018-08-26 17:03:00 76
转载 HDU - 4990 Reading comprehension
矩阵快速幂搞一下。。f(x) = 2*f(x-1)+1,x为奇数,反之f(x) = 2f(x-1)。考虑到n比较大,因此想到矩阵快速幂优化,可构造如下矩阵,顺便测下latex能不能用。。凑合看吧,我实在不想改了。。矩阵显示不出来,如果你不会latex,自己去学咯。$$\bordermatrix{&f_{x}&f_{x-1}&g_{x}\cr f...
2018-08-24 10:12:00 85
转载 POJ1061 青蛙的约会
奇葩的是我居然用不了abs去得到longlong的绝对值,于是自己写了一个...扩展欧几里得即可解决了。#include<cstdio>#include<cstdlib>#include<iostream>#include<string>#include<set>#include<al...
2018-08-23 13:05:00 66
转载 51Nod - 1079 中国剩余定理
直接就是板子了,但是呢,我去了个重。#include<cstdio>#include<cstdlib>#include<iostream>#include<string>#include<set>#include<algorithm>#include<vector>#i...
2018-08-23 11:09:00 62
转载 HihoCoder - 1303 数论六·模线性方程组
裸的一个模线性方程组,重在理解一下这个求的过程。#include<cstdio>#include<cstdlib>#include<iostream>#include<string>#include<set>#include<algorithm>#include<vector&g...
2018-08-22 11:37:00 100
转载 zoj3988 Prime Set
思路不难想到二分图求个最大匹配P,若P>=K,则2*K即可,否则应为P*2+min(K-P,未匹配且有度数不为0的顶点个数s)。但坑点在于有1的情况,所以如果直接建二分图去跑最大匹配会因为1的影响而无法得到实际上的最大匹配,所以索性不建二分图而直接去跑最大匹配,此时应记录的是每个顶点的匹配顶点即可。#include<cstdio>#include<cs...
2018-08-21 22:45:00 111
转载 zoj2853 Evolution
给定一个进化的矩阵图,问在m次之后最终的物种有多少个,实际上这和线性代数及其应用里的一个例题是一样的...总之就相当于煞笔的套个矩阵不断去乘m次,然后每次都会根据得到进化后各物种的个数,矩阵快速幂求一下就好了。#include<cstdio>#include<cstdlib>#include<iostream>#include<...
2018-08-20 18:49:00 114
转载 csu1365 Play with Chain
很显然的splay,第一次用splay操作区间...我实在佩服这个targan大佬,居然搞出这么牛逼的平衡树,调了大概5个小时终于搞定了。。#include<cstdio>#include<cstdlib>#include<iostream>#include<string>#include<set>#...
2018-08-18 15:55:00 177
转载 zoj2479 Cover the Rectangular Ground
肯定是dfs搜一下的,但是呢存在一个很大的剪枝,也就是面积必定要是相等的,那么如何去操作呢,可以想到的是二进制枚举选取的方法,然后把方法中选取的矩形面积求和并判断一下即可,然后dfs搜索,要注意的是,需要维持现状的变量在变化之前一定要记录,要变回来时,一定要变回来,另外在dfs中还可以判断覆盖是否合理,以及是否已经没有可找到的空白区域。#include<cstdio>...
2018-08-17 18:52:00 105
转载 csu1364 Interview
对拍了一波才找到的错误,此题我用的是二分答案加倍增查询,实际上query那里我觉得仍然有缺陷,因为每一次我的查找还是在循环找到一个k使得x+2^k <= y,而错的地方也正在此地,一开始没有判断x+2^k > y,反而直接将k=y的二进制下的最大的为1的位置,以后一定要注意边界条件。#include<cstdio>#include<cstdlib...
2018-08-16 17:17:00 56
转载 poj 3096 Surprising Strings
只需要一个数据结构对字符串进行存储,以及查询是否存在即可。#include<cstdio>#include<cstdlib>#include<iostream>#include<string>#include<set>#include<algorithm>#include<v...
2018-08-14 19:40:00 86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人