09 2016 档案
摘要:http://codeforces.com/contest/675/problem/E 题目大意:有n个车站,每个车站只能买一张票,这张票能从i+1到a[i]。定义p[i][j]为从i到j所需要买的最小票数。问sigma(p)的和是多少。 思路:感觉我的dp定义能力还是太弱了啊,我刚开始还定义成dp
阅读全文
摘要:http://codeforces.com/contest/719/problem/E 题目大意:给你一串数组a,a[i]表示第i个斐波那契数列,有如下操作 ①对[l,r]区间+一个val ②求出[l,r]区间的和。 定义区间的和为该区间内每个a[i]所对应的斐波那契数列的和。 思路:线段树保存区间
阅读全文
摘要:struct mat{ LL a,b; mat(LL A=0,LL B=0):a(A),b(B){} bool isIdentity()const{ return a==1 && b==0; } mat operator+(const mat &rhs)const{ return mat( (a+r
阅读全文
摘要:http://blog.csdn.net/qq_21110267/article/details/43540483
阅读全文
摘要:http://codeforces.com/contest/716/problem/D 题目大意:给你一些边,有权值,权值为0的表示目前该边不存在,但是可以把0修改成另外一个权值。现在,我们重新建路,问让s-t的最短路能否刚好是L? 思路:暴力修改即可。。。 //看看会不会爆int!数组会不会少了一
阅读全文
摘要:http://codeforces.com/contest/716/problem/C 题目大意:感觉这道题还是好懂得吧。 思路:不断的通过列式子的出来了。首先我们定义level=i, uplevel = i + 1,目前的uplevel,然后我们可以知道,之前求出来的restgrade%level
阅读全文
摘要:struct KM{ bool S[maxn], T[maxn]; int Lx[maxn], Ly[maxn]; int W[maxn][maxn]; int slack[maxn]; int myleft[maxn]; vector G[maxn]; int n; void init(int n){ this ...
阅读全文
摘要:vector G[maxn]; int pre[maxn], low[maxn], c[maxn]; int n, m; stack s; int dfstime, scc_cnt; void dfs(int u, int fa){ pre[u] = low[u] = ++dfstime; int len = G[u].size(); s.push(u); fo...
阅读全文
摘要:二维: 定义dp(i, j, k, L)表示以(i,j)为左上角,宽度为(2^k, 2^L)的区间内的某个数值
阅读全文
摘要:http://codeforces.com/contest/713 题目大意:给你一个长度为n的数组,每次有+1和-1操作,在该操作下把该数组变成严格递增所需要的最小修改值是多少 思路:遇到这类题型,最普遍的方法就是把严格递增给变为递增就好了,所以我们对所有的a进行处理,a[i]-=i,然后再dp。
阅读全文
摘要:http://codeforces.com/contest/714/problem/C 题目大意:有t个询问,每个询问有三种操作 ①加入一个数值为a[i]的数字 ②消除一个数值为a[i]的数字 ③给一个字符串s,s中分别表示0和1,0表示目前该位为偶数,1表示目前该位为奇数。然后询问目前数组中和s每
阅读全文
摘要:http://codeforces.com/contest/362 题目大意:给你一个序列,用冒泡排序法让他变为非递减的序列最少需要几次。在冒泡交换之间,你有一个swap操作,该swap操作是交换任意两个数组元素的位置,问在该操作后,所再需要的冒泡交换次数是多少,并输出方案数 思路:树状数组维护一下
阅读全文
摘要:题目大意:有n个人,两个人之间有相互的关系,问最大的关系数目。 思路:n-(最大匹配数/2)。因为这里给出的是n个人之间的两两关系 //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using namespace s
阅读全文
摘要:中文题,题目大意不说了。 思路:就是寻找最大匹配,最大匹配就是每次找增广路,如果存在增广,那就把增广路上面的边全部都翻转即可。这样说明能多匹配一个,+1即可。 //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> usi
阅读全文
摘要:http://www.cnblogs.com/dxp498688071/archive/2011/01/18/1938303.html
阅读全文
摘要:紫书365 题目大意:给你n个全都是bug的东西,然后每次可以修复,给你修复前后的状态,问最后如果能把bug全都修复,最少需要多少时间。 思路:从最初状态开始,然后枚举bug即可。 表示priority里面的bool operator和单纯的sort的定义的大小于号是不一样的啊,如果你想用sort来
阅读全文
摘要:题目大意:给你n个点的图,求苗条度(最大边减最小编)尽量小的生成树 思路:sort以后暴力枚举区间即可 //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using namespace std; #define LL
阅读全文
摘要:题目大意:你在迷宫里,有n扇门,每个门有一个val,这个val可正可负,每次通过一扇门需要abs(x)分钟,如果这个门的val是正的,那么就直接出了迷宫,否则回到原地,问出去迷宫的期望是多少? 思路:设d表示出去的概率,然后我们可以按照第三个样例来举例d = 1/3 * 3 + 1/3( 6 + d
阅读全文
摘要:题目大意:给一个字符串,有插入和询问操作,每次往一个位置插入一个字符或者询问第p个位置的字符是什么。 思路:我们离线询问,逆向把所有的字符都插入给线段树,然后再查询就好了,每次都要记得插入线段树的最后的位置,然后要把这个位置给保存下来在O(1)查询即可。 //看看会不会爆int!数组会不会少了一维!
阅读全文
摘要:题目大意:给你n个人,每个人都有一个id,有m个询问,每次询问一个区间[l,r],问该区间内部有多少的id是连续的(单独的也算是一个) 思路:做了那么多离线+树状数组的题目,感觉这种东西就是一个模板了,23333,反正都是定义右区间的。 这题的关键难度就是如何定义id是连续的呢。我们每次往区间里面放
阅读全文
摘要:HDU 3938 题目大意:给你一个长度为n的数组a,定义区间[l,r]的val为区间内所有不同的数值之和。现在有m个询问,每次询问一个区间,问区间的val是多少。 思路:将所有的询问按照右端点排序。然后暴力枚举右区间,然后对之前出现过的val做一个标记即可,每次都更新这个标记就好了。 具体的和HD
阅读全文
摘要:题目大意:给你n个点,m条边,q个询问,每条边有一个val,每次询问也询问一个val,定义:这样条件的两个点(u,v),使得u->v的的价值就是所有的通路中的的最长的边最短。问满足这样的点对有几个。 思路:我们先将询问和边全部都按照val排序,然后我们知道,并查集是可以用来划分集合的,所以我们就用并
阅读全文
摘要:题目大意:给你一个长度为n的数组,问[L,R]之间<=val的个数 思路:就像标题说的那样就行了。树状数组不一定是离散化以后的区间,而可以是id //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #include <bits/stdc++.h> using name
阅读全文
摘要:题目大意:给一个数组a,他的顺序是严格的单调增,然后有如下三个操作 ①加入一个val到a数组里面去,加入的位置就是a[i-1]<val<a[i+1] ②删除一个a[i]=val的值 ③查询所有下标i%5=3的值 思路:线段树+离线 首先因为线段树中不支持添加、删除操作的,所以只能离线把所有的val离
阅读全文
摘要:①Landau's Theorem 比赛得分问题 ②a%b <= a/2(a >= b) ③某个数值a和任意数值的gcd不超过loga种 ④线段树中不支持添加、删除操作 一:Landau's Theorem https://en.wikipedia.org/wiki/Tournament_%28gr
阅读全文
摘要:题目大意:有K个工人,有n个墙,现在要给墙涂色。然后每个工人坐在Si上,他能刷的最大范围是Li,且必须是一个连续子区间,而且必须过Si,他刷完后能获得Pi钱 思路:定义dp[i][j]表示前i个人,涂色到j的最大的val是多少。 转移就是dp[i][j] = max(dp[i][j - 1], dp
阅读全文
摘要:题目大意:长度n的序列, m个询问区间[L, R], 问区间内的所有子段的不同GCD值有多少种. 子段就是表示是要连续的a[] 思路:固定右端点,预处理出所有的gcd,每次都和i-1的gcd比较,然后不断放入gcd即可。 然后就是树状数组的更新,枚举右端点即可。然后我们知道,大区间不如小区间来的实惠
阅读全文
摘要:题目大意:给你一棵树,有n-1条边,每条边都有方向,每个顶点有权值,给出weak pair的定义是val[u]*val[v] <=k,u是v的祖先,问有多少对这样的顶点 思路:创建线段树,通过dfs动态创建,每次都不断更新。因为我们只能是根节点开始往下的,所以我们遍历到兄弟节点的之前要把其他的兄弟节
阅读全文
摘要:题目大意:给你n个数,q次询问,每次询问区间[l, r],问a[i]%a[i + 1] % a[i + 2]...%a[j](j <= r)的值 思路:st预处理维护,再二分区间,复杂度n*(logn)*logn //看看会不会爆int!数组会不会少了一维! //取物问题一定要小心先手胜利的条件 #
阅读全文
摘要:http://codeforces.com/contest/703/problem/D 题目大意:给你一个长度为n数组,有q个询问,每次询问一个区间[l,r],这个区间的val就是所有数值为偶数个的数的亦或值。 思路:先求出所有区间的亦或和的val,然后利用树状数组离线维护,然后用所有区间^树状数组
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1196 题目大意:n个城市,m-1条路,每条路有一级公路和二级公路之分,你要造n-1条路,一级公路至少要造k条,求出所造路的最大所需的val的最小值. 思路:首先我们一定要明确这个不是一题求所有花费的最
阅读全文
摘要:int scan() { int res=0,ch; while(!((ch= getchar())>='0'&&ch='0'&&ch<='9') res=res*10+(ch-'0'); return res; }
阅读全文
摘要:首先看一下这个人的blog吧,讲的精炼 http://blog.sina.com.cn/s/blog_4a0c4e5d0101c8fr.html 然后再推荐一下这个人的blog:http://www.cnblogs.com/zinthos/p/3899565.html 这两个博客看了就差不多了。 自
阅读全文
摘要:http://codeforces.com/contest/588/problem/D 感觉吧,这道题让我做,我应该是不会做的。。。 题目大意:给出n,L,K。表示数组的长度为n,数组b的长度为L,定义数组b[i]=a[i%n]。然后数组b的最长的lis为k,问能有几组<=k的lis 条件如下: ①
阅读全文
摘要:状压dp的典型的例子就是其中某个数值较小。 但是某个数值较小也不一定是状压dp,需要另外区分的一种题目就是用暴力解决的题目,例如UVA818 紫书215 题目列表: ①校长的烦恼 UVA10817 紫书286 ②20个问题 UVA 1252 紫书287 ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 一:校长的烦恼
阅读全文
摘要:http://codeforces.com/contest/709 题目大意:给一个一维的坐标轴,上面有n个点,我们刚开始在位置a,问,从a点开始走,走n-1个点所需要的最小路程。 思路:我们知道,如果你一会儿走左一会儿左右,最后访问n-1个点一定只会让距离更长的,所以我们的策略是刚开始全都往一端走
阅读全文
该文被密码保护。