11 2015 档案
摘要:相交区间选尽量少的点是可以贪心的,右端点排序以后,尽量往右边放可以得到可以使得点在区间尽可能多。但是我只想到了O(n)的维护方法。(数据比较水,能过...或者是前缀和可以写sum(bi) - sum(ai-1)≥ ci再加上前缀和的单调性 sum(i) - sum(i-1)≥ 0以及一个点只能选一次...
阅读全文
摘要:被卡的一道题,其他情况都想出来了,主要是没想好A[i] == B[j]时候的处理,取最后面最大的可能不是最优解,相等的时候我暴力比较后缀的(为此还要维护一个链),这个操作是O(len) 所以T了。(也可能是写挂了,全是O(len)的数据是很难造的,看过的名单似乎暴力可行)实际上取后面最大的只是一种可...
阅读全文
摘要:dp,答案容易想到是 凑出价格总和≤m-5 + 没被使用的最大价格。dp[i = 前i种价格][j = 价格总和] = 最大没使用的价格下标idx_m。dp[i-1][j]存在的话,则只要更新idx_m。如果dp[i-1][j-c[i]]存在但是dp[i-1][j]不存在,那么c[i]必须使用,id...
阅读全文
摘要:用归纳法分析可以知道死循环只有4。分析一下复杂度,如果n很大并且不是素数,根据基本不等式可以知道 sum factor(n)≥2+n/2≈ n/2。复杂度是O(T*logN*sqrt(N)),这个上界比较松。如果是用Pollard_rho再开个平方估计常数也差不多了。#includeusing na...
阅读全文
摘要:虽然是水题,但是还是很interesting的。(大概就是我最晚出这个题了。。。博弈感觉就是靠yy能力啊。这题是对称性。最后的必败态是白色格子对称的,一旦对称形成,对手怎么选,跟随就好,对手无法摆脱。当n是奇m是奇,取最中间的一个,当一奇一偶,去掉一个奇数列或行。只有一开始就是对称的才会输。#inc...
阅读全文
摘要:小鸟往四个方向飞都枚举一下,数据范围没给,离散以后按在其中一个轴线排序,在线段树上更新墙的id,然后就是点查询在在哪个墙上了。这题有个trick,因为数据范围没给我老以为是inf设置小了,WA了很多发。(距离可能比0x3f3f3f3f大实现上,我是把鸟和墙的坐标放一起的,用下标来区别两者。/****...
阅读全文
摘要:不存在-1的情况,而且最多一轮就结束了。如果新增加的黑点v0会产生新的黑点v1,那么v0和v1肯定是在一条轴上的,而原来这条轴上已经有黑点了。离散以后扫描线统计,往线段上插点,然后查询区间上点数。不妨以x为主轴,用一条条平行于y轴的线去扫。按照x为主y为副排序以后,记录下标,将下标按y为主排序,为的...
阅读全文
摘要:BIT更新一个区间的前缀和是很容易的,modify操作修改的是[x,N]的所有前缀和(也就是修改的是一个后缀)。二维的也是容斥一下就好了。对于查询的(x,y),回答前缀和(x,y)就好了。/*******************************************************...
阅读全文
摘要:分相离,内含,想交三种情况讨论一下。主要是精度和数据范围的问题,首先数据用long double,能用整型判断就不要用浮点型。题目中所给的坐标,半径是整型的,出现卡浮点判断的情况还是比较少的。最后算三角型面积的时候不要用海伦公式,有四个连乘很容易爆数据范围损失精度,即使拆开两两乘也要考虑符号(取对数...
阅读全文
摘要:模拟题,意思是一个字符串,单词直接用','或';'来分割,可以为空,把不含前导0的整数和其他单词分别放入A和B。按照一定格式输出。没有用stl的习惯。维护两个下标i,j,表示开区间(i,j),两段补上分割符号。每个单词后面都加上一个',',输出的时候在处理掉。用最后的','判断A和B是不是空。#in...
阅读全文
摘要:要保证变化次数最少就是出现次数为奇数的相互转化,而且对应字母只改变一次。保证字典序小就是字典序大的字母变成字典序小的字母。长度n为偶数时候,次数为奇数的有偶数个,按照上面说的搞就好了。n为奇数时,要考虑最后中间那个字母。交换法可以证明,其实是贪心最后没有转化掉的字母。#includeusing na...
阅读全文
摘要:题目的数学模型:求,和号:|Xi-Xj|*max(Vi,Vj),i != j.按照大小顺序枚举可以处理取max的问题,假如从小到大枚举到Vi,对另外一部分,XXi的情况,维护一下总和减一减。#include#include#include#include#include#include#includ...
阅读全文
摘要:条件a+b == d-c,O(n*n)枚举出所有的形如a+b的和,然后从大到小枚举d,在枚举c,二分找d-c。主要是要用容斥排除c和d出现在和中,详细的过程见注释。复杂度为O(n^2log(n^2))。/************************************************...
阅读全文
摘要:题意:求N个元素的非空子集和的绝对值最接近0,在此条件下子集大小尽量小,N≤35。N/2是17和18,217和218都是1e5的数量级,是可以枚举的。枚举后得到的集合记为P,Q,ans要么单独在P或者Q中,要么是两者的和。把Q中所有元素反号以后,枚举P中元素pi,就是找一个最接近pi的qj。所以只要...
阅读全文
摘要:模型是个线性模2方程组。高斯消元的话可能解不唯一,要找独立变元。但是不难看出,枚举左端点按下的状态,之后可以影响端点就只有一个变量了,根据端点递推了,然后检查。(写的时候想的是枚举左右端点/*******************************************************...
阅读全文
摘要:n虽然高达1e14,但是满足条件的s不会超过sqrt(n)。可以想到在O(sqrt(n))的复杂度下,求一个[1,sqrt(n)]连续区间和为n的方案。/********************************************************** ---...
阅读全文
摘要:素数非负使得前缀和单调,于是对于固定的区间尾部j,头部i也是单调的,区间和更新的时候维护一下就好。/********************************************************** ------------------ ...
阅读全文
摘要:题意:询问一个静态序列的连续区间和绝对值最接近t的下标。分析:由于询问的是绝对值,可以用前缀和相减得到区间和,并且和位置前后没有关系。于是把记录下标信息以后把前缀和排序枚举大的前缀pj,pj-pi ≈t,满足条件的:有pj-t的plower_bound以及plower_bound-1。而pj-t也是...
阅读全文
摘要:高度之间的关系可以改写成一个递推式:Hi+1 = 2Hi - Hi-1 + 2。Hn和Hi之间是正相关的。思路见注释。(一开始是那么想的,其实不用矩阵快速幂,二分H2也可以。/********************************************************** ...
阅读全文
摘要:很容易得到n× m的方块数是然后就是个求和的问题了,枚举两者中小的那个n ≤ m。然后就是转化成a*m + c = x了。a,m≥0,x≥ c。最坏是n^3 ≤x,至于中间会不会爆,测下1e18就好。#includeusing namespace std;typedef long long ull;...
阅读全文
摘要:Bi表示第i个块,那么就是说Bi max≤Bi+1 min,又因为Bi min≤ Bi max,因此只要判断前缀的最大值是否小于等于后缀。#includeusing namespace std;typedef long long ll;const int maxn = 1e5+1;int h[max...
阅读全文
摘要:一道水题WA那么多发,也是醉了。f看成函数的话,其实就是判断一下反函数存不存在。坑点,只能在定义域内判断,也就是只判断b[i]。没扫一遍前不能确定Impossible。#includeusing namespace std;typedef long long ll;const int maxn = ...
阅读全文
摘要:二分kth,答案满足的条件为:m≤ 小于等于x的值数cntx。x和cntx单调不减,随着x增大,条件成立可表示为:0001111。本地打一个小型的表可以发现列编号j固定时候,目标函数f(i,j)似乎具有单调性。变形,f(i,j) = (i+100000+j)*i + j2 -100000,可以看出确...
阅读全文
摘要:二分中间值x,x和大于等于x的值的数量cnt具有单调性,随着x增大,满足cntx #include#include#include#include#include#include#include#include#include#include#include#includeusing namespa...
阅读全文
摘要:有K根线是免费的。如果最大花费已知为mx,那么长度大于mx的线都是应该是免费的。线数量表示为d,那么d≤ K。mx越小,d越大,随着mx增大,可行性:00000111111。这就满足了决策单调性。把免费的线的权值设置为1,其他为0,判断mx的可行就是1到N是否有一条权值不超过K的路径。看样例猜题意系...
阅读全文
摘要:去水时间越长,干的衣服就越多,因此具有单调性,二分时间t。把放在暖气片上去水看出是加快某件衣服的烘干速度,取k-1作为增量,当t确定的时候,相当于有t次加速去水的机会,贪心选取不能自然干燥的衣服。/***************************************************...
阅读全文
摘要:一开始是往二分上去想的,如果risk是x,题目要求则可以转化为一个不等式,Si + x >= sigma Wj ,j表示安排在i号牛上面的牛的编号。如果考虑最下面的牛那么就可以写成 Si + x ≥ sum W - Wi,为了方便处理把i号牛的信息合并到一起→ Si + Wi + x ≥sum W。...
阅读全文
摘要:包含一些ai和bi的集用S来表示,x = max(sigma(ai)/sigma(bi),i 属于S) ,k 表示S的大小,k= |S|。x和k之间具有单调性。k0 #include#include#include#include#include#include#include#include#in...
阅读全文
摘要:类似一个背包问题的计数问题。(虽然我也不记得这叫什么背包了一开始我想的状态定义是:f[n = 和为n][k 个素数]。递推式呼之欲出: f[n][k] = sigma f[n-pi][k-1]。但是题目还有一个要求是不同素数之和,为了保证素数不同,那就先枚举素数吧,f[i][n][k] =sigma...
阅读全文
摘要:砖块上的数字最终都可以看作是最后一行的线性组合,独立变元最多9个。这类题的一般做法,线性组合都可以列出方程然后高斯消元。对于这道题,只要确定最后一行剩下的4个变量就好了,对于最后一行的j位置,它对上面位置某个数字的和贡献次数等于它到那个位置路径的方案数,可以发现就是杨辉三角。倒数第二行的数已经足够确...
阅读全文
摘要:递推,f[i = i个名次][j = 共有j个人] = 方案数。对于新加入的第j个人,如果并列之前的某个名次,那么i不变,有i个可供并列的名次选择,这部分是f[i][j-1]*i,如果增加了一个名次,那么之前有i-1个名次,i-1个名次之间有i个空,这部分是f[i-1][j-1]*i。/******...
阅读全文
摘要:分析:对于区间[i,j],枚举j。固定j以后,剩下的要比较M_gcd(k,j) = gcd(ak,...,aj)*(j-k+1)的大小, i≤k≤j。此时M_gcd(k,j)可以看成一个二元组(g, k)。根据gcd的性质gcd(a1,a2,...,an) = gcd(a1,gcd(a2,..,an...
阅读全文
摘要:X表示剩下的糖数量,如果最后打开的是p对应的盒子。划分:Xi表示剩下i个糖,最后一次选的概率为p,前面的服从二项分布。根据全概率公式和期望的线性性,求和就好了。精度处理要小心,n很大,组合数会很大,p的部分很小,要取对数,而且中间计算精度也要用long double才够。组合数的对数预处理一下或者递...
阅读全文
摘要:题意:给出n和k,1≤n,k≤1e9,计算切入点是k/i 和 k/(i+1)差距不大。令pi = k/i, ri = k%i。如果pi+1 == pi,那么ri+1 == k - pi(i+1) == ri - pi,对于pi+z == pi,ri+z == ri - z*pi,这是等差数列可以O(...
阅读全文
摘要:用扩展欧几里德Extended_Euclid解线性模方程,思路在注释里面了。注意数据范围不要爆int了。/********************************************************** --------------Tyrannosaurus------...
阅读全文
摘要:紫上给得比较奇怪,其实没有必要用唯一分解定理。我觉得这道题用唯一分解只是为了表示大数。但是分解得到的幂,累乘的时候如果顺序很奇怪也可能溢出。其实直接边乘边除就好了。因为答案保证不会溢出,设定一个精度范围,如果中间结果超过了精度范围就保存起来,最后sort一遍从两端同时乘就不会溢出了。/*******...
阅读全文
摘要:直接贪心。先想想最后平衡的时候,如果知道了总重量,那么每一个结点的重量其实也就确定了。每个结点在左在右其实都不影响,只和层数有关。现在反过来,如果不修改某个结点,那么就可以计算出总质量,取总质量出现次数最多的保持不变。/****************************************...
阅读全文
摘要:只和连通分量以及度数有关。不同连通分量只要连一条边就够了,连通分量为0的时候要特判。一个连通分量只需看度数为奇的点的数量,两个端点(度数为奇)是必要的。如果多了,奇点数也一定是2的倍数(一条边增加两个度数,总度数是偶数),把多余的成对奇点连边,一定存在一条欧拉路径。并查集维护或者dfs都可以。/**...
阅读全文
摘要:模拟题。每个单元格有表达式就dfs,如果有环那么就不能解析,可能会重复访问到不能解析的单元格,丢set里或者数组判下重复。这种题首先框架要对,变量名不要取的太乱,细节比较多,知道的库函数越多越容易写。注意细节,注意格式。/***************************************...
阅读全文
摘要:和UVA - 1658 Admiral如出一撤,就是跑一个流量为2的最小费用流。主要来学习一下用dijkstra处理负边权来增广,主要思想是每个点都维护一个顶标h[v],叫做v的势。对于每个边ei(u,v)(u到v的有向边),修正它们的边权w[i] 为w'[i] = w[i] + h[u] - h[...
阅读全文
摘要:分析:这类问题的一遍描述,把一些对象分成两组,划分有一些代价,问最小代价。一般性的思路是,把这两组看成是S点和T点,把划分的代价和割边的容量对应起来求最小割。把S和可模版tem之间到达关系看作是属于核A,对称地,T对应B。模块tem安装在A上代价Ai,就是割断tem和T,连一条tem到T的容量为Ai...
阅读全文
摘要:分析:数学模型是三个集合A,B,C,(a,b,c)构成一个匹配。因为图一个点只能匹配一次,把a拆点a',a",在可以匹配的点上连边,s - b - a' - a" - c - t,然后最大流就好了。/**************************************************...
阅读全文
摘要:分析:这是一个时间和门的二元组(t,d)和人p匹配的问题,当我们固定d0时,(t,d0)匹配的人数和t具有单调性。t增加看成是多增加了边就行了,所以bfs处理出p到每个d的最短时间,然后把(t,d)和p连边,按t从小到大枚举点增广就好了。无解的情况只有一种,某个人无论如何都无法出去。/*******...
阅读全文
摘要:题目:POJ 3041 Asteroidshttp://poj.org/problem?id=3041分析:把位置下标看出一条边,这显然是一个二分图最小顶点覆盖的问题,Hungary就好。挑战:输出一组可行解。构造,已知二分图的两个点集U和V,s-U-V-t,在最大匹配的残留网络里,选从s出发能到达...
阅读全文
摘要:dp[i = 前i中sorter][j = 将min移动到j位置] = 最短的sorter序列。对于sorteri只会更新它右边端点r的位置,因此可以把数组改成一维的,dp[r] = min(dp[r],dp[j]+1), l≤j#include#include#include#include#in...
阅读全文
摘要:矩阵乘法是可以分块的,而且幂的和也是具有线性的。不难得到Si = Si-1+A*Ai-1,Ai = A*Ai-1。然后矩阵快速幂就可以了。/********************************************************** ----------...
阅读全文
摘要:定义ai表示红色和绿色方块中方块数为偶数的颜色有i个,i = 0,1,2。aij表示刷到第j个方块时的方案数,这是一个线性递推关系。可以构造递推矩阵A,用矩阵快速幂求解。 1 /********************************************************* 2 *...
阅读全文
摘要:一道比较经典的数据结构题。可以用多种方式来做。一,分桶法(平方分解)。根据数字x的大小和区间内不大于x的数字数量cnt的单调性,可知第k大数kth对应的cnt应该满足cnt≥k,且kth是满足条件的最小的一个,可以二分下界。关键在于高效找出cnt,对于每个完整的桶,排序以后二分,不完整的桶就直接暴力...
阅读全文
摘要:今天来学习一下怎么用BIT区间更新的,BIT速度比线段树速度更快,也更好写。我们来看一下当给区间[l,r]整体加上一个常数c会前缀si发生什么变化?i #include#include#include#include#include#include#include#include#include#i...
阅读全文
摘要:很自然会想到是线段树,需要考虑维护什么信息。我们需要的答案是从原点到末端的坐标,这个信息可以看出是多个向量相加,所以我们在子区间维护左端点到右端点的一个向量。因为角度会发生改变,那么再维护一个左右区间之间的角度。那么父节点的向量就等于左孩子的向量加上右孩子旋转以后的向量。对于修改si和si+1之间的...
阅读全文
摘要:t和可到达具有单调性,二分就不多说了。下面说下O(1)的做法,实际上是等效转换,因为答案一定存在,如果在t0之前,那么分解一下直接按照只有v计算就可以了。反过来如果计算的结果大于t0,那么表示答案在t0之后。因为速度分量是可以独立累加的,因此可以找到一开始就只有w的等效的点。#includeusin...
阅读全文
摘要:26天以前做过的一道题,之前的做法是分治预处理,树套树在线修改,复杂度为O(nlogn+m*logn*logn),代码量较大。本来想学习一下cdq分治的,看到论文上的凸包、斜率就暂时放一边了,只知道和一般的分治的不同是左子问题可以用来解决右边的子问题。今天下午YY了一个离线的分治做法,也不知道叫不叫...
阅读全文