![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基本算法
文章平均质量分 78
huyuncong
这个作者很懒,什么都没留下…
展开
-
莫涛的一道无语贪心题
贪心题原创 2011-05-02 15:49:00 · 1471 阅读 · 0 评论 -
【codeforces】3D
贪心+调整,先假设变为‘)’再用一个堆来调整,类似勇者斗恶龙#include #include #include #include using namespace std;int i,n,m,t,mid;long long ans;int l[200000],r[200000],a[200000][2],b[200000],c[200000],w[200000],e;char原创 2012-12-25 15:59:28 · 586 阅读 · 0 评论 -
【sgu510】迭代加深
没有陈高远说的特判肿么回事#include #include int n,a[2000],s[2000];int check(int x){ int sum=0; for (int i=1;i<=x;i++) { int flag=1; for (int k=0,j=x-1;j>=1;j--) { if (j-(x-i)<=0) break;原创 2013-01-15 08:41:11 · 679 阅读 · 0 评论 -
【codechef除草】
Lighting the shop给定一个 N*M 的方格,其中有些格子被标记。你要将被标记的格子染色,使得颜色数最少,并且保证同行同列没有相同颜色的格子。首先这个矩阵填色可以化归为二分图的边染色,将每行每列看作一个节点,分为两部,所谓限制无非是同一个点连出去的边不能同色, 这就是一个最小边染色的问题, 如同其他很多图上的 np 问题,这在二分图上是有多项式算法的。我们来看最少要用原创 2013-01-28 18:20:55 · 892 阅读 · 0 评论 -
【2012 Multi-University Training Contest 7】部分题
适应acm赛制看来不是我原先想的那么简单...4360双关键字单源最短路这道题我交了10+次,原因是初始化没取最小值...看来确实是太久没在考试状态下写题了,心中竟然还在紧张#include #include #include #include #include const long long oo=1314520LL*13520LL+1;using namespace原创 2013-06-20 21:17:46 · 893 阅读 · 0 评论 -
一道生成树问题 poj2831
题目大意:给张图,然后问你,如果某边的权值下降为V,那么这个边有无可能在最小生成树中呢?节点数≤1000,边数≤100000,询问数≤100000。由于网上唯一的标程是java,所以讲一下这道题。可知,最小生成树上两点间路径上最大边为这两点间所有路径中路径上最大边原创 2011-10-04 20:51:57 · 883 阅读 · 0 评论 -
ceoi 2011 treasure hunt
wc上第一次听这个题就感觉很有想法,于是想了个倍增,只能过50分,后来周而进讲了分块存图的方法,可惜只能用动态树维护,经ATM启发,每次分块后都不裂块,以适应倍增的树形态不变的性质,也就是后来钟沛林讲的方法,实现起来还比较容易,只是细节难以处理。每个块我只存块状树深度,左右端点,每要处理一个点,二分其所处的块,倍增存2^k步的块,2^k步的点,2^k到块顶的距离,然后各种特判维护实际距离。原创 2012-02-13 11:39:32 · 981 阅读 · 0 评论 -
【二分图匹配判定+线段树建边】pku1057
首先行列是可以分开考虑的,相两个排列原创 2014-08-15 21:16:21 · 894 阅读 · 0 评论 -
【除草】一些题目
hdu4304一段n*n的墙,用一个刷子来刷,要求刷子的第一根毛在第一个原创 2014-07-08 15:23:22 · 1259 阅读 · 0 评论 -
【特征多项式解线性递推】poj2118
叉姐论文:http://www.docin.com/p-724323397.htmla[i]=sigma(a[j]*b[k-j]) 求第n项标准的常系数线性递推,用矩阵乘法可以做到o(k^3*logn)但是如果用特征多项式优化的话,可以把矩阵乘法换成多项式乘法,从而做到o(k^2logn)首先根据hamilton-cayley定理,一个矩阵的特征多项式是这个矩阵的化零多项式,因原创 2014-01-12 17:06:44 · 3921 阅读 · 10 评论 -
【codechef】Traffic jam for N5
每次可以选中一些数字往前放,最少几次就可以使之不降这种操作基本就是用二进制来理解,每一位代表一次操作,就相当于给每个数附一个二进制的权值,从大往小排序,现在需要你用的二进制数的个数最少。假如没有重复的,如果相邻两个是原序列就是递增的显然直接用一种权值即可,因为原始顺序已经递增,如果不是,显然要在某位不同假如有重复的,假设前一段最后一个是low,当前重复数的区间是[l,r]l至r是递增的原创 2012-12-25 10:41:10 · 667 阅读 · 0 评论 -
【哈希】poj3576 Language Recognition
求dfa最小化状态想fhq的小强的颜色都还没做出来一颗tire是一个满足要求的dfa,但是并不是最小化,我们需要在trie的基础上修改,是他保持原来性质,但是状态量更小如果两个状态的子树同构的话而且同为或同不为结束状态,那么这两个状态是可以合并的,对于子树可以用以前集训队论文中介绍过的hash来做考虑两个状态的结合会不会影响其他状态,显然子状态是没有影响的,因为子树是否合并是看子树原创 2012-07-03 20:47:47 · 1211 阅读 · 0 评论 -
可并堆 poj3016 不平衡的美
左偏树原创 2011-07-25 10:01:40 · 1498 阅读 · 0 评论 -
模拟退火 poj 1379
矩阵中找一点使该点到各已知陷阱中最近的最远。如果是神牛,自然可以用voronoi图但是,由于较优值比较离散,所以编程复杂度较低,但期望得分较高的模拟退火显然更适用。算法流程(转载)p,l一开始我取的100,tle了,后来看别人取得20、25才改小的。根原创 2011-08-19 21:51:44 · 903 阅读 · 0 评论 -
一些背包问题
备战noip ing背包问题其实算np问题,一般的动规算是伪多项式。按时间顺序来吧、、、、1、lmd的搜索匹配在n个数中选若干个数,使其和等于某个数。(n据他自己说,数据范围和有特点、、、、正解的数据范围是暴力的两倍、、、、结果几乎没人看出来。容易看出原创 2011-10-18 14:40:55 · 1231 阅读 · 0 评论 -
Sequence by 唐迪(不是splay)
(原标题有误,写成spaly)传说是某道国家集训队作业题。但是,做法相当朴素,只不过是离线回答的。事实再次证明,离线在大多数情况下优于在线,其原因在于可以充分利用已经算出的答案进行调整。problem:题目一 题目描述:因为小t喜欢吃糖,所以他经常在桌子上摆上一排彩色的糖。每种糖都用一种特殊的颜色标识,而每种颜色我们用数字1、2、3、……表示。现在小t在桌子上摆原创 2011-07-15 17:45:35 · 1268 阅读 · 0 评论 -
几道题目
第一题:在数列中选不同的k对数,使绝对值之差总和最小80分:排序后,每个位置记个指针向后移,每次用堆选取各位置与其对应指针的差之中的最小值,保证堆中只有n-1个元素。时间复杂度:o(klogn)100分:二分最大差值,每次用两个指针检验在不超过差值的情况下能有几对数,找到对数刚好大于k,则统计小于这个差值的对数和,然后剩余的采用此差值。时间复杂度:o(nlogn+nlogdif原创 2011-11-07 13:56:52 · 573 阅读 · 0 评论 -
【构造】后缀数组求逆
根据sa[]数组反求原数组,只能26小写字母。有了sa[],自然有了rank[],从原数组最后的往前考虑,我们尽量要将原数组用小的字符集表示,因为只有26个字母可以表示,那么排名比当前枚举的小一位的的字符串,如果第二位比其小的话,那么排名比当前枚举的小一位的的字符串的首位可与其首位相同,同样的向比它大的考虑一遍则可使字符集尽量小。#include #include #include原创 2012-03-10 15:05:08 · 687 阅读 · 0 评论 -
【合并正方形】石子合并
区间重叠后其实就是合并石子,有个nlogn的贪心算法,但是n^2的也不会慢可以用链表维护双递减序列,如果此元素加入后不满足序列要求,则最后两个合并,插入到往前找第一个>合并值得元素的后面,递归执行#include #include #include const double oo=1e300,eps=1e-3;struct Apoint {int x,y,t;}a[40000],c原创 2012-04-07 22:12:58 · 730 阅读 · 0 评论 -
【莫队算法】小z的袜子
题目:给定n个数a1, a2…… an与m个询问(L,R)。对于每个询问,从aL, aL+1…… aR这R-L+1个数中随机取出两个数,求这两个数相同的概率。假设我们当前处理了询问(l1,r1),那么下个询问(l2,r2)需要操作的次数是|l1-l2|+|r1-r2|,其实就是曼哈顿距离,那么只需求出哈密尔顿路径即可确定操作序列,但是tsp不好求,则我们求出曼哈顿距离最小生成树,可原创 2012-05-16 08:39:23 · 24281 阅读 · 2 评论 -
【ural】
1400:略#include #include #include #include #include #include const int dx[4]={-1,0,1,0};const int dy[4]={0,1,0,-1};const double oo=1e300;using namespace std;struct point{int x,y;};queue原创 2012-12-18 14:30:02 · 975 阅读 · 0 评论