![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
======ACM=======
文章平均质量分 95
hitwhacmer1
这个作者很懒,什么都没留下…
展开
-
POJ 2392 Space Elevator
原题:DescriptionThe cows are going to space! They plan to achieve orbit by building a sort of space elevator: a giant tower of blocks. They have K (1 <= K <= 400) different types of blocks with原创 2014-08-03 00:20:44 · 361 阅读 · 0 评论 -
hdu 4640 Island and study-sister 13多校,难
题意:一个acm队伍,三个人,然后有个n(最多17个)个岛组成的地方,有m条路把这些岛联系在一起,每个路有个权值,表示时间。然后三个人从1点出发,分别到这些岛上去,三个人去的地方不能交叉,也就是说一个人去过该点,另一个人就不能在这个点过了。如果有个点去不了那么就输出-1.然后输出最短的时间。思路:对这17个岛用二进制表示。设int f[1int dp[4][1那么利用spfa求原创 2015-06-24 16:34:57 · 377 阅读 · 0 评论 -
三分 cf439D
题意:给你两个数列n,m,然后n里面的数可以每次+1,m里面的数可以每次-1,那么要使n里面的最小值大于m里面的最大值,最少的操作数(每次+1or-1都是一次操作)思路:Let us define a function f. Function f(k) = cost needed to make array a elements ≥ k + cost needed to make原创 2015-06-24 16:40:08 · 468 阅读 · 0 评论 -
二分 cf 343c div1
题意:给你n个探头,m个要读的轨道,n个探头的初始位置是h1---hn(从小到大),m个轨道的位置为p1------pn(也是从小到大),探头可以左移或右移,这些探头可以一起动,每移动一格的时间为1,探头读轨道不计时间,如果要读的轨道上就有探头那么就不需要时间,找最小的时间来读完这些轨道。思路:(为节省时间就不翻译了)Let's search the answer t with the b原创 2015-06-24 16:41:03 · 394 阅读 · 0 评论 -
STL@map应用 hdu4941
题意:有一个n*m的森林,里面有k个果实,每个果实的位置为(Xi,Yi),能量为Ci。接下来有T次操作,每次操作输入Q A B,Q=1时交换A、B两行;Q=2时交换A、B两列;Q=3时,输出(A,B)位置的值,如果此处没有果实,输出0。分析:由于n和m很大,而k很小,所以可以用map离散化。每次交换行或者列的时候只需交换map映射的值即可。就是说row,col中记录的是原创 2015-06-24 19:57:06 · 434 阅读 · 0 评论 -
poj 1948 二维01背包
题意:给你n个小棒(l思路:40个小棒,每个40,最长1600,每个边都不会比半周长长,所以是800,设dp[i][k][j],分别是40,800,800,意思就是用了前i个小棒能组成的两个边为k和j,能为1.不能为0;dp[0][0][0] = true;for (i = 1; i for (j = 0; j for (k = 0; k dp[原创 2015-06-24 17:07:38 · 503 阅读 · 0 评论 -
hdu 4609 卷积的应用 FFT
其实题目是给了n条线段。问随机取三个,可以组成三角形的概率。 其实就是要求n条线段,选3条组成三角形的选法有多少种。 首先题目给了a数组,如样例一:41 3 3 4把这个数组转化成num数组,num[i]表示长度为i的有num[i]条。样例一就是num = {0 1 0 2 1}代表长度0的有0根,长度为1的有1根,长度为2的有0根,原创 2015-06-25 22:03:36 · 694 阅读 · 0 评论 -
NNT
转载自:http://blog.csdn.net/acdreamers/article/details/39026505今天,我将来介绍另一种计算多项式乘法的算法,叫做快速数论变换(NTT),在离散正交变换的理论中,已经证明在复数域内,具有循环卷积特性的唯一变换是DFT,所以在复数域中不存在具有循环卷积性质的更简单的离散正交变换。因此提出了以数论为基础的具有循环卷积性质的快速数论变转载 2015-06-25 22:09:26 · 2042 阅读 · 0 评论 -
uva 12633 转化为多项式 用FFT做
题意:给你一个R*C的棋盘,棋盘上的棋子会攻击,一个棋子会覆盖它所在的行,它所在的列,和它所在的从左上到右下的对角线,那么问这个棋盘上没有被覆盖的棋盘格子数。数据范围R,C,N思路:直接做肯定会超时,所以需要一种nlogn的算法。我们一步一步来。首先,我们肯定需要给被覆盖的行被覆盖的列做上标记,visx标记被覆盖的行,visy标记被覆盖的列,visd标记被覆盖的对角线那么就是 visx原创 2015-06-26 11:25:14 · 1065 阅读 · 0 评论 -
【SPOJ】Triple Sums【FFT】
题目:You're given a sequence s of N distinct integers.Consider all the possible sums of three integers from the sequence at three different indicies.For each obtainable sum output the number o原创 2015-06-26 17:01:26 · 566 阅读 · 0 评论 -
hdu 4135 容斥原理 第一道容斥原理
题意:求区间【a,b】之间与n互质的数的个数,a,b的范围都是10的15次方,n的范围是10的九次方。当a,b范围不大的时候可以用欧拉函数做,但是范围这么大,我们就要用别的方法了。首先我们可以将其转化为【1,b】的个数减去【1,a】个数。然后我们求【1,m】与n互质的个数。然后,我们将n的质因子提取出来。 for(int i=2;i*i if(n%i=原创 2015-06-27 20:48:53 · 456 阅读 · 0 评论 -
强连通分量与双连通分量
因为在求强连通分量,块,割点,桥的时候,其基本过程是DFS,所以对DFS的一基本的知识作些介绍。 为了叙述方便,规定DFS过程将给结点着色:白色为没有考虑过的点,黑色为已经完全考虑过的点,灰色为发现过但没有处理过的点。灰色点组成了遍历边界。DFS遍历 DFS遍历优先扩展新发现的结点,它的过程可以看作是递归的。算法将得到DFS森林,类似于BFS树。DFS的特别之处在于转载 2015-06-28 16:32:39 · 828 阅读 · 0 评论 -
hdu 4738 13杭州网络赛 判断无向图的桥
题意:n个点,m条边,每条边都有权值,然后周瑜派人去炸桥,让n个岛变得不连通,派去的人要比守桥的大于等于。如果可以就输出派去最少的人,不可以就输出-1;思路:就是判桥,找到所有桥中最少人的那个。有几个坑点,1.如果一开始就不是双连通的,直接输出0;2,如果一开始是双连通的,也就是说没桥,就输出-1;3,如果最少那个桥上没人,那也得派个人去,输出1;#include #incl原创 2015-06-28 19:34:59 · 525 阅读 · 0 评论 -
边双连通模板
双连通 缩点 求桥模版:[cpp] view plaincopy#include #include #include #include #include #include using namespace std; #define N 100005 #define M 200300 #define inf 10000000 struct E转载 2015-06-28 19:44:49 · 397 阅读 · 0 评论 -
poj 2942 圆桌骑士 二分图判定判奇圈,点双连通分量 大白经典题目
利用了二分图不含奇圈,求补图的点双连通分量是否是二分图来确定多少个骑士不能参加会议#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define M 10000原创 2015-06-29 23:00:52 · 645 阅读 · 0 评论 -
hdu 3394 railway 点连通分量判环
题目大意:一个公园里面有n个景点,建设了m条道路,现在该建设者想知道如果为每个环形的路线选择旅游团,是否可能有的路会发生旅游团之间的争吵。争吵的 定义是:两个旅游团出现在了同一条路径上,即存在两个环形路线部分道路重叠。并且他还想知道有哪些道路是不需要建设的,一条道路不在任何环形路线上的称之 为不需要建设的路线。你的任务是输出不需要建设的道路的数量以及旅游团可能会发生争吵的道路的数量。原创 2015-06-29 16:55:03 · 651 阅读 · 0 评论 -
POJ 3592 强连通缩点+spfa最长路
题意:给定n*m的地图 (从(0,0) 开始)#代表墙,*代表传送门(能传送到的坐标在下面依次给出),数字代表宝藏数(每次经过能且仅能取走一块宝藏)起点在(0,0), 终点任意,且每次只能↓或→,或者传送问:最多能拿到多少块宝藏 思路:因为能传送,所以会出现环形路径,那么我们把能构成的环形路径的点缩点得到一个点,并把该点权值设为 环形路径内所有的点权和。 对于转载 2015-06-30 00:19:36 · 470 阅读 · 0 评论 -
偏序集-Dilworth定理
转载:http://blog.csdn.net/xuzengqiang/article/details/7266034。偏序的概念:设A是一个非空集,P是A上的一个关系,若关系P是自反的、反对称的、和传递的,则称P是集合A上的偏序关系。即P适合下列条件:(1)对任意的a∈A,(a,a)∈P;(2)若(a,b)∈P且(b,a)∈P,则a=b;(3)若(a,b)∈P,(b,转载 2015-06-30 16:55:08 · 5421 阅读 · 0 评论 -
位运算
#include using namespace std;bool is_pow2(int x) //判断是否2的n次方 { x &= x-1; if(!x) return true; return false;}void Binary(int num)//十进制转二进制 { int a[32]; int i = 0; while(num) { a[i++] = (原创 2015-06-24 11:55:43 · 428 阅读 · 0 评论 -
单源最短路------SPFA
粗略讲讲SPFA算法的原理,SPFA算法是1994年西安交通大学段凡丁提出是一种求单源最短路的算法算法中需要用到的主要变量int n; //表示n个点,从1到n标号int s,t; //s为源点,t为终点int d[N]; //d[i]表示源点s到点i的最短路int p[N]; //记录路径(或者说记录前驱)queue q; //一个队列,用STL实现,当然转载 2015-06-24 10:56:14 · 402 阅读 · 0 评论 -
hdu4864 task 贪心
转载地址:http://blog.csdn.net/a601025382s/article/details/38046927 ;题意:有n个机器,m个任务。每个机器至多能完成一个任务。对于每个机器,有一个最大运行时间xi和等级yi,对于每个任务,也有一个运行时间xj和等级yj。只有当xi>=xj且yi>=yj的时候,机器i才能完成任务j,并获得500*xj+2*yj金钱。问最多能完成几转载 2014-08-03 00:28:34 · 404 阅读 · 0 评论 -
HOJ 1485A Good Helper 01背包
原题: Abraham and Calford are Moving their things from dormitory A11 to A9,and they have their own carry limit,they can't carry things which is beyond their limit and they will not carry one bag tog原创 2014-08-03 00:29:58 · 530 阅读 · 0 评论 -
poj 3020 最小边覆盖与最大匹配 匈牙利算法
转载地址:http://blog.csdn.net/lyy289065406/article/details/6647040 做了一些题之后感觉自己的知识储备真的太少了,很多东西都不知道;提示:别被图片的圈圈误导了,看清楚题目,'*'是城市,'o'是空地,椭圆的天线覆盖范围要覆盖的是城市'*',而不是覆盖空地 题目大意:一个矩形中,有N个城市’*’,现在这n转载 2014-08-03 00:34:35 · 505 阅读 · 0 评论 -
树状数组区间求和三种模型
树状数组在区间求和问题上有大用,其三种复杂度都比线段树要低很多……有关区间求和的问题主要有以下三个模型(以下设A[1..N]为一个长为N的序列,初始值为全0):(1)“改点求段”型,即对于序列A有以下操作:【1】修改操作:将A[x]的值加上c;【2】求和操作:求此时A[l..r]的和。这是最容易的模型,不需要任何辅助数组。树状数组中从x开始不断减lowbit(x转载 2014-08-07 20:30:22 · 446 阅读 · 0 评论 -
poj 2155 第一天学树状数组,还没怎么搞清楚二维的区间更新单点查询
MatrixDescriptionGiven an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row and j-th column. Initially we have A[i, j] = 0 (1 We can change the m原创 2014-08-07 22:48:41 · 318 阅读 · 0 评论 -
HDU 3183 一盏神奇的灯
Problem DescriptionKiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lamp is not so kind. Kiki must answer a question, and then the genie will realize one of her原创 2014-08-07 23:15:15 · 529 阅读 · 0 评论 -
poj 2752 Seek the Name, Seek the Fame,KMP
这个题是考察的对next的理解,另外还有一道原创 2014-08-09 00:29:26 · 433 阅读 · 0 评论 -
uva 12260 Free Goodies DP+一点点贪心
Free GoodiesPetra and Jan have just received a box full of free goodies, and want todivide the goodies between them. However, it is not easy to do this fairly,since they both value different goodies原创 2014-08-10 21:27:10 · 724 阅读 · 0 评论 -
HDU 4939 一个塔防游戏
Stupid Tower DefenseTime Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 601 Accepted Submission(s): 164Problem DescriptionFSF原创 2014-08-12 21:41:32 · 515 阅读 · 0 评论 -
hdu 2586 lca离线tarjan
http://www.cnblogs.com/ylfdrib/archive/2010/11/03/1867901.html 参考转载 2014-09-29 20:29:25 · 336 阅读 · 0 评论 -
zoj3822 Domination 2014亚洲区域赛牡丹江站
Time Limit: 8000MS Memory Limit: 131072KB DescriptionEdward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess with his friends. Wh原创 2014-10-15 20:55:48 · 503 阅读 · 0 评论 -
bestcode #17 b
SelectTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0Problem DescriptionOne day, Dudu, the mo原创 2014-11-08 23:34:54 · 676 阅读 · 1 评论 -
uva 11985
题意:给你一堆矩形的左下角与右上角坐标,问在直角坐标系里,被覆盖k次(包括k次以上)的点(整数点)有多少个。思路:因为边上覆盖点的也算在里面,那么把矩形右上角的坐标(x2,y2)分别+1,那么这个点数就变成了这个矩形的面积了。另外数据范围很大,所以要离散化,具体见代码。代码实现与一般的矩形面积并差别不大,关键是lazy标记,一般的矩形面积并有个sum[rt]和一个cnt[rt],这里cnt原创 2015-06-22 19:20:51 · 338 阅读 · 0 评论 -
cf 474E 线段树+dp+离散化后二分查找
题意:给你n个柱子,每个柱子都有一个高度,你从第一个柱子开始跳往后跳,后面的柱子要满足|hi-hj|>=d才可以跳上去,问最多跳多少步,并且输出一种跳法,从小到大输出柱子号。思路:真肯定是个dp,而且思路很简单//转移方程 dp[i]=max(dp[j])+1,(|hi-hj|>=d)但是n的范围是10^5,那么你每次都对之前的柱子扫一边找最大就不行了,那样就是n^2的算法,所以要对每次找原创 2015-06-22 19:30:39 · 477 阅读 · 0 评论 -
hiho 1166 高斯消元
一道高斯消元题目题意:给你一个数列ai,(1是0或1,现在你可以每次翻转一个区间,即将0变1,1变0,且每个区间被选择的概率为n(n-1)/2,问全变成0的翻转次数期望是多少思路:另外,这个思路还有一些需要注意的地方,在确定这个方法是对的前提下,那么d中的1的个数必然是偶数的,这样的话直接对0列方程就要有限制条件(n+1)-i要是偶数才行,这样算出来的数是对的详见写法1;或者直原创 2015-06-23 18:41:57 · 388 阅读 · 0 评论 -
hiho 1167Advanced Theoretical Computer Science LCA
题意:给n与p,给一棵树n-1条边,p个小松鼠,每个小松鼠有一个活动的路径为a~b的路径,如果两个小松鼠的路径相交了那么说明这两个小松鼠是朋友,问有多少对朋友思路:如果两个路径相交,那么必然的其中一个路径的lca一定在相交的部分上,这个画一下树就可以明白了。那么我们就可以统计这些路径上的每个点被多少条路径经过,每个点充当了多少次lca,分别用d[]与sum[]记录如果该点充当lca那么原创 2015-06-23 18:43:08 · 522 阅读 · 0 评论 -
hdu4283 you are the one 区间DP
题意:一队人拍着队上舞台,每个人都有一个屌丝值d,如果他前面有k个值,他就会产生k*d的不快乐。恰巧旁边有个小黑屋(栈),他前面的人可以先进去,等他过去后再出来,比如1 2 3 4 5,5 想第一个上台,那么1,2,3,4就要顺序进入栈中,等5进去后,在按4 3 2 1出来,而且这个人只能进栈一次,什么时候出来看情况。思路:区间dp,dp[i][j]表示的是区间(i,j)的最小不快乐值。原创 2015-06-23 21:10:29 · 347 阅读 · 0 评论 -
ZOJ 3795 Grouping 强联通缩点+拓扑序+偏序集的最大链的大小
题意:有n个人,m个关系,关系是这两个人前一个人可以跟后一个比较。那么问你我最少分多少组可以使这个组里的人都不可以比较。只会强联通缩点,真特么不知道怎么做,想了一个小时,网上一看,还要会偏序集的东西,有一个叫Dilworth定理的东西。定理1 令(X,≤)是一个有限偏序集,并令r是其最大链的大小。则X可以被划分成r个但不能再少的反链。 其对偶定理称为Dilworth定理:原创 2015-06-30 17:01:38 · 909 阅读 · 0 评论 -
hdu 4751 判二分图,整个图不一定连通
题意:人与人之间可以认识或不认识,可以单向认识也可以双向认识,给你他们认识的关系,让你将他们分成两组,每组里面的任意两个人都认识。转化一下,将双向认识的人之间不连边,单向认识或不认识的人连边,然后判二分图就行了。#include#include#include#includeusing namespace std;const int maxn=105;int maze[maxn原创 2015-07-01 18:09:28 · 701 阅读 · 0 评论 -
我个沙茶,居然不会写基数排序
http://baike.baidu.com/link?url=N66o-8p7EilH6e4W-0wLF3PdCg9tfSzBLgHpwpxDpnniCBKpwIRKPcVYlwC7QHdW-_t1w3BpNmXxjljwiToEoqint maxbit(int data[], int n) //辅助函数,求数据的最大位数{ int d = 1; //保存最大的位数 int原创 2015-08-26 01:14:45 · 494 阅读 · 2 评论