04 2011 档案
摘要:// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm>#
阅读全文
摘要:/*算是个模拟题吧*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <alg
阅读全文
摘要:/*将一个数分成若干段,成绩最大12 = 3 * 4 * 55 = 2 * 39 = 2 * 3 * 4210 = 5 * 6 * 710 = 2 * 3 * 511 = 2 * 4 * 55 = 2 * 36 = 2 * 47 = 3 * 48 = 3 * 59 = 2 * 3 * 410 = 2 * 3 * 511 = 2 * 4 * 512 = 3 * 4 * 513 = 3 * 4 * 614 = 2 * 3 * 4 * 5*/// include file#include <cstdio>#include <cstdlib>#include <cstri
阅读全文
摘要:/*扩展欧几里得a x1 x2b y1 y2(a*x1+b*y1) - (a*x2+b*y2) = da*x+b*y = D*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include &
阅读全文
摘要:/* m = a1*m1+r1 m = a2*m2+r2 m = a3*m3+r3 通过不断的合并方程求出最后的解,过程是这样的,以前两个方程为例 m === r1 mod a1 m === r2 mod a2 m = r1+a1*x r1+a1*x === r2 mod a2 r1+a1*x-r2 = a2*y a1*x-a2*y = r2-r1; r2 - r1 - a1*x = a2*y a1*x+a2*y = r2-r1 则可用扩展欧几里得算法求出x,y。则 m求出,不过这里只是对这两个方程而言,合并为新的方程,就有下式 m === (r1+a1*x) mod lcm(a1,a2)*/
阅读全文
摘要:/*x-a = 23*a';x-b = 28*b';x-c = 33*c';x === a mod 23x === b mod 28x === c mod 33求x,这是中国剩余定理,这里应用要求m1,m2,m3两两互质x mod 23 = a mod 23x mod 28 = b mod 28x mod 33 = c mod 33需要用欧拉函数了phi(n)m = 23*28*33M1 = m/m1 = 28*33M2 = m/m2 = 23*33 M3 = m/m3 = 23*28M1' = M1^(phi(m1)-1) mod m1M2' = M2
阅读全文
摘要:/* mod = 2^k; A+C*k === B (mod mod) A+C*x - B = mod*y; C*x - mod*y = B-A; 求x a = C; b = -mod; c = B-A;*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstre
阅读全文
摘要:/* (x+m*s)-(y+n*s) = k*L (k=0,1,2,...) (x-y) + (m-n)*s = k*L k*L + (n-m)*s = (x-y) 这是个方程,如果有解的话。可以使用扩展的欧几里得算法来求 对扩展欧几里得写个小节: a*x+b*y = gcd(a,b) . 求解这个方程的解,一般用扩展欧几里得算法来解 首先右边必须是gcd(a,b)的倍数才行,否则无解 两边同时除以gcd(a,b); a'*x+b'*y = 1; 这样就可以用extGcd来解了,此时a'与b'互质 int extGcd(int a',int b'
阅读全文
摘要:/*这个题目的意思就是找出b的最大取值,然后枚举就可以了。默认b<=ce.g. */// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#incl
阅读全文
摘要:/*简单的数学几何题*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <al
阅读全文
摘要:/*阶乘最后的0的个数,求阶乘中含有5的个数啊,原来如此*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset&
阅读全文
摘要:/*大数乘法*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algori
阅读全文
摘要:/*一个用来检查环,一个用来检查是否确定了排序*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#i
阅读全文
摘要:/*求阶乘的位数,居然要516ms,太慢了吧也可用stirling公式做*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <
阅读全文
摘要:/*数学,找规律*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algo
阅读全文
摘要:/*因子个数等于质因子分解后,各项乘积有不少需要注意的地方*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset
阅读全文
摘要:/*找规律来做的*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algo
阅读全文
摘要:/* 简单的数学题*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <alg
阅读全文
摘要:/*pi*R1*R1*H1+pi*R2*R2*H2+...= N*pipi*M*R1*R1*H1 > N*pi > pi*M*Rm*Rm*HmQ = S*pi = ( 2*pi*R1*R1 + 2*pi*R1*H1 ) + ( ) + ...R^2*H<=1000R = 1,H <= 1000R = 2,H <= 250R = 3,H <= 110R = 4,H <= ...R = 31, H <= 1 首先枚举R,H.针对此题,有三个优化,一个是体积的下限,还有两个面积的下限其中面积优化条件,把剩余的体积转化为圆柱体,这个面积作为面积的下限。这
阅读全文
摘要:/*题意就是找等差数列,最少等差数列个数深度挖掘信息,这个等差数列必须满的。我所谓的满,是指这个数列不能在0到59之间在找一个了而且必须有两个,那么第一个数值必须小于30了,否则等差小于30,然后就可以在之前在找一个了通过这样,可以把所有的等差数列描述出来为了搜索的更快,按照等差数列的大小从大到小排列在搜索的过程中,及时找出下限,如果下限仍然大于最优解,那么就舍去此题如果不加强剪枝,还真不好过。按照节点个数递减的顺序搜索,也是不错的选择。*/// include file#include <cstdio>#include <cstdlib>#include <cs
阅读全文
摘要:/*贪心,和1700很相似这题上次在URAL的一次比赛中碰到了,一直过不去,不知道贪的怎么不对现在又碰大了,原理是最小的一对人交替的来传递棒,但是又个地方需要特别注意就是最大的一对中的较小的和最小的一对较大的比较的话,如果等于了,那么就必须小最小的和最大的传了这个例子 5 6 6 7 很清楚如果按照那个方法是 6 5 7 6 6 = 30但是最好的方法是 7 5 6 5 6 = 29,好好想想这个,挺有意思的错了,应该是d[0]+d[i-1]>=2*d[1]成立的时候才行*/// include file#include <cstdio>#include <cstdli
阅读全文
摘要:/*动态规划*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algori
阅读全文
摘要:/*DP[i][j],以i结尾j个火车头的最大载人数DP[i][3] = max(DP[i][3],DP[i-M][2]+DP[i][1],DP[i-1][3]); DP[i][2] = max(DP[i][2],DP[i-M][1]+DP[i][1],DP[i-1][2]);DP[i][1] = max(DP[i][1],DP[i-1][1]);*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cc
阅读全文
摘要:/*DP问题问题是这样子的,最多100个物品,每个物品有两个属性,这是一个特别的DP问题,虽然明显看起来像是01背包,但是似乎又无法下手,想到了二维的DP,但是状态为DP[i][200000][200000],不仅开不出来,而且速度也不行,转化一下发现,可以把其中一个限制条件转化为价值,另外一个当代价,因为最后求的是这两个限制条件的和。所以可以这样来做。思路也很巧妙这也给我们一个教训,01背包要活学活用,限制条件可以适当转化DP[i][cost],当一个限制条件是 cost时的最大值value.最后求cost+value的最大值即可,当然要求cost和value都必须大于0*/// inclu
阅读全文
摘要:// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm>#
阅读全文
摘要:/*多重背包问题*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algo
阅读全文
摘要:/*p = (a+b+c)/2;S^2 = p*(p-a)*(p-b)*(p-c)这些包可以形成所有的可行边长DP问题。二维的DP背包问题,对于二维的01背包的理解,可以从一维的开始理解一维01背包的方程是 DP[k] = max(DP[k],DP[k-代价]+价值);,这里DP方程意思是说,代价为K时的最大价值二维01背包的方程是 DP[k1][k2] = max(DP[k1][k2],DP[k1-代价][k2]+价值,DP[k1][k2-代价]+价值);,这里DP方程是说,代价为k1和k2时的最大价值当然对于多维,DP在加一位就是了。这里唯一区别的地方是,每个物品只能在一个背包中,所以如果
阅读全文
摘要:/*DP*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorith
阅读全文
摘要:/*DP问题T分钱,可以由最少的硬币数组成*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#inc
阅读全文
摘要:/*10万个数,所有的两两相减的绝对值的中数,即中间的数*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset&
阅读全文
摘要:/*还有一点要特别注意,每个时间点,锤子都可以随意走动*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset&g
阅读全文
摘要:/*最长上升子序列经典的 nlog(n)解法,二分*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>
阅读全文
摘要:/*分析问题的本质,然后用动态规划的方法来做不错的DP问题,刚开始用二分图匹配,TLE了然后想贪心,想了多个方法都不行。我觉得关键是对相等数值的判断上,贪心不好处理。最后,经提示,DP之。DP之前有几点要知道,其实我在贪心的时候也想到了因为所有的马都要比赛,所以我们按照齐王从大分数马到小分数马排序,这样做其实没有什么深道理。对于国王的马,如果找不到比的过的马,就找最小的马,如果相等话,可以选择平局也可以选择找最小的马。DP就是来处理这儿得问题的。构造DP方程这样来做。当然之前要对马从大到小排序DP[i][j],表示已经比了i皮马了,田鸡选择了前j皮强马,选择i-j皮差马得到的分值的最大值。这样
阅读全文
摘要:// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm>#
阅读全文
摘要:/*maybe DP can solve it状态DP问题,计数利用状态DP求最优hamilton回路这个问题可以分成两问,一个求hamilton回路的最大值,还有一个是这种最大值的路径有几个,前者很明显的DP,后者是DP上的计数*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#incl
阅读全文
摘要:/*多重背包发现一个小规律,所有的相同类型的物品必须放在一起,这样可以对物品类型拍个序,按照不能超过的高度排序*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <ioma
阅读全文
摘要:/*和2182很相似,不过这里要把对应的ID输出*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#
阅读全文
摘要:/*我这种排序的方法是不对的:反例,0 1 0 1 0,最佳答案是 4 5 2 3 1 正确的方法是从后往前,每次都拿出当前数组的第K大数*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#in
阅读全文
摘要:/*可二维线段树解决对于区间更新,区间查询的问题,似乎树状数组不好做这样硬用树状数组,似乎不太好吧*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>
阅读全文
摘要:/*还是老老实实的先用线段树来解决吧区间和,区间更新对于区间更新,这个如果更新到底的话,比较耗时,所以我新增了递增量。这样如果区间刚好和更新区域一样的话,就不要往下去了。只保存递增量但是区间和的时候,就要有点变换了。出了拿出区间的和(已保存),还要计算从父节点过来的递增量。这个递增量和孩子节点的递增量是可以相加的这样,区间和的复杂度没有增加,区间更新的复杂度小了点。这样的时间大概是 1500ms*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <
阅读全文
摘要:/*树状数组,二分找第K个*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <
阅读全文
摘要:/*换一种更高效的方法。之前的方法之所以超时,是因为找第K大数的方法很慢。查找第K大,可以利用树状数组和二分的方法,二分答案,然后树状数组高效回答这个答案是否靠谱 很多细节需要注意,WA,TLE N多*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream
阅读全文
摘要:/*线段树需要用到求一个数的约数个数,这个需要打个表吧此处的表,是借用了别人。因为我只是想学习下线段树,偷懒了下 这线段树,其实也没什么特别的,重要的是如何构造线段树的保存的值。就想网络流,二分匹配的算法似的本身没什么特别的,但是构图很重要,比算法本身重要*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iost
阅读全文
摘要:/*起初还想用DP来着,好像是不大行现在有了树状数组,二维的一下子就解决了,方便,快捷 */// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#inc
阅读全文
摘要:/*一维树状数组的简单二维扩展 */// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include
阅读全文
摘要:/*二维的树状数组这树状解法出了是二维的以外,还有个巧妙的应用。常规的BIT是用+lowbit计算更新,-lowbit计算和不过这只是一种现象,+lowbit和-lowbit还可以做别的事情,只要发散思维。 这个题目的特殊性是,更新是一个区间,查找是一个点的值每个点可以被操作多次,那么最后要找出这个点的值是多少。该怎么做呢?如果更新用-lowbit实现,会有什么效果? 效果是比该点小的所有的Bit值都增加了1,这就相当于对区间进行更新了。查找用+lowbit实现,会有什么效果?效果是比该店大的所有的Bit值都是对该点所做的操作,把他们全部加起来,就是总共操作的次数,然后对2取模,就是最后要的结
阅读全文
摘要:// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm>#
阅读全文
摘要:/*答案就在一念之间*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <al
阅读全文
摘要:/*树状数组,线段树,合并排序*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include &
阅读全文
摘要:/*树状数组,归并排序*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <a
阅读全文
摘要:/*DP此题的方程是 DP[i][j],i是左下标,j是右下标DP[i][j] 表示从i到j的字符串需要加多少个字符才能使其成为回文串if( in[i]==in[j] ) DP[i][j] = DP[i+1][j-1];else DP[i][j] = MIN(DP[i+1][j],DP[i][j-1])+1;但是此题的内存要求很小,DP[N][N]行不通。从方程中可以看出,i只和i+1有关,所以可以使用滚动数组起初我使用的mod = 3的滚动。按照长度来进行DP的,这样两层的滚动不够,因为除了当前和减一,还有减二的情况所以,需要三层还有一种构造滚动数组的方法是:不使用长度来进行DP,而是使用下
阅读全文
摘要:// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm>#
阅读全文
摘要:/*起初我实现的DP比较慢,原因是我忽略了一个很重要的事实,那就是所有的砝码都必须用上,这就是说,每一个砝码都会出现的,既然如果,不管放的顺序是什么,都可以看成从第一个开始放,然后第二个,然后第三个。这个发现可以帮助我们消去一个循环现在说下我的最初的DP: DP[i][j][k], 到第i时,差为j,选择k个的个数DP[i+1][j+(i+1号砝码所有可能的放置)][k+1] += DP[i][j][k],很显然这里当k<i的这种情况在以后是用不到的。试想如果出现了DP[i][j][i-1],也就是说少了第i个砝码,以后还会在添加进去吗?不会了,因为砝码就是我的阶段。所以这纯粹是浪费时间
阅读全文
摘要:/*DP好题,再次回顾此题,感慨颇多*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#includ
阅读全文
摘要:/*DP30组数据50000个数,绝对值小于10000最大连续子段和问题*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <
阅读全文
摘要:/*DP 坐标是对称的原则这个题目出了要深刻理解DP外,还要知道蜘蛛侠游走时候的规律,震荡是对称的。从一个建筑的左边一点到右边一点的纵坐标是相等的。这样的话,蜘蛛侠从起点开始所有的转折点出的纵坐标都和开始的时候一样。DP[i][j],表示对于建筑物i,合法的横坐标j,此时的最小swing次数(因为纵坐标不变,不考虑了);*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#inclu
阅读全文
摘要:/*DP这是个很有趣的DP问题状态的设计是这样子的 f[i][j][2];f[i][j][0] 表示吃完i到j之间所有的草,并且最后吃i,整体腐烂度的最小值f[i][j][1] 表示吃完i到j之间所有的草,并且最后吃j, 整体腐烂度的最小值我们要求 f[1][n][0] 和 f[1][n][1],那么如何得到呢f[i][j][0] = min( f[i+1][j][0]+dst[i][i+1]*(i+n-j),f[i+1][j][1]+dst[i][j]*(i+n-j) );f[i][j][1] = min( f[i][j-1][0]+dst[i][j]*(i+n-j),f[i][j-1][1
阅读全文
摘要:/*DP*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorith
阅读全文
摘要:/*DP,应该说还是比较简单的*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include &
阅读全文
摘要:/*用1742的方法,秒杀*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <
阅读全文
摘要:/*动态规划限制个数的背包问题啊*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include
阅读全文
摘要:/*动态规划很笨的一种方法是 DP[i][j][k], 前i个,选j个,差是k的和最大值。这种DP比较好想,但是内存使用超大,需滚动。而且速度很慢还有一种DP,是 DP[i][j],选j个,差是k的最大值。此处遍历不是按照人的,而且按照要选几个人。此处的阶段是要选几个人内存使用也很小,速度非常快;虽然都是 N*M*801的算法,可能是我实现的不好吧*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cc
阅读全文
摘要:/*动态规划*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algori
阅读全文
摘要:/*动态规划,如何加速呢》??*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include &
阅读全文
摘要:/*动态规划,半天没看明白DP[i][j] 表示前i个,i是j时的最小代价DP[i][j] = min(DP[i-1][k]+abs(j-k)*c+(j-a[i])^2) 时间复杂度是N*H*H,超时了。。。。对j,k进行分析当j>k, DP[i][j] = min(DP[i-1][k]+j*c-k*c+(j-a[i])^2) = j*c+(j-a[i])^2+min(DP[i-1][k]-k*c);当j<=k,DP[i][j] = min(DP[i-1][k]+k*c-j*c+(j-a[i])^2) = -j*c+(j-a[i])^2+min(DP[i-1][k]+k*c);领悟
阅读全文
摘要:/*DP回文字符串,添加或者删除字符使得原来的字串是回文的,并且添加删除的代价最小所谓的DP,难点在于如何找到表达状态的方式。状态出来后,转移就好弄了虽然速度不是很快*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <
阅读全文
摘要:/*DP需要把棋盘割成n块,n>=2 && n<=14. 稍加分析,可以得出,其实求的是平方和最小写的时候确实比较繁琐。*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream&g
阅读全文
摘要:1 /* 2 3 */ 4 5 // include file 6 #include <cstdio> 7 #include <cstdlib> 8 #include <cstring> 9 #include <cmath> 10 #include <cctype> 11 #include <ctime> 12 13 #include <iostream> 14 #include <sstream> 15 #include <fstream> 16 #include <iomani
阅读全文
摘要:/*无向图,欧拉回路或者通路的判定。*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#includ
阅读全文
摘要:// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm>#
阅读全文
摘要:/* 字符串处理, 可以用trie,后缀数组,暴力等算法实现 暂时用trie tree实现*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#in
阅读全文
摘要:/*好做 ,也可以用SPlay,BST,SizeBalancedTree,二叉排序树采用trie tree做的*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <ioma
阅读全文
摘要:/*欧拉回路或者通路的判定对于有向图:欧拉通路的判定:出了两个顶点外,所有顶点的入度和出度相等。另外的两个顶点的出度比入度大一,入度比出度大1欧拉回路的盘点:所有点的出度和入度相等对于无向图:欧拉通路的判定:连通,只有两个奇度顶点欧拉回路的判定:连通,全是偶度顶点还需要判断是否连通图*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#in
阅读全文
摘要:/*数据结构,trie树*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <
阅读全文
摘要:/*数据结构之Trie树,字典树*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include
阅读全文
摘要:/*状态压缩类 DP+ 计数*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include &l
阅读全文
摘要:/*状态压缩类DP + 计数*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include &l
阅读全文
摘要:// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm>#
阅读全文
摘要:/*状态压缩DP采用1038的方法*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include
阅读全文
摘要:/*状态压缩类DP*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <alg
阅读全文
摘要:/*动态规划 计数*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <alg
阅读全文
摘要:/*动态规划*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algori
阅读全文
浙公网安备 33010602011771号