二分匹配的灵活运用 3041还是比较好想的,考虑到横排/竖排射一枪就能搞定这一行/一列的所有点, 我们以行数为点集x,列数为点集y,在目标点(xi,yi)之间连一条边 这样最小射击次数=最小点覆盖(边两端点至少有一个点在覆盖集中)=最大匹配 poj2226是它的加强版 这里一块木板不能覆盖非泥泞点,也就是说一块木板不一定能搞定那一行所有的点 于是我们考虑到将连续的泥泞点标号,表示这些泥泞点是由哪个
转载 2014-03-25 21:43:00
108阅读
2评论
两道很不错的dp 3186很神似回文词,合并石子之类的问题; 一开始不知道怎么在dp方程中体现权值天数,很来才想起来 对于一段区间[i,j],里面的东西必然是要卖完的 又因为只能从两头开始卖,所以 dp[i,j]=max(dp[i+1,j],dp[i,j-1])+sum[i,j]; 这样就体现出先后卖的差别; 最后答案很显然是dp[1,n]; 而poj3267,dp方程不好讲,直接上代码;
转载 2014-01-21 22:56:00
157阅读
2评论
其实这两题都是基础的线段树,但对于我这个线段树的初学者来说,总结一下还是很有用的; poj3468显然是线段树区间求和,区间更改的问题,而poj2528是对区间染色,问有多少种颜色的问题; 线段树的建立和求和附代码,还是比较简单的; 这里想说的是区间修改,用到了了lazy思想:打标记; 拿poj2528举例,比如对区间[l,r]染色,我们只要在线段树中,被[l,r]覆盖的最大子区间[p,q]上标记
转载 2013-11-30 15:18:00
118阅读
2评论
Common SubsequenceTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 34477Accepted: 13631DescriptionA subsequence of a gi
原创 2022-03-04 17:37:50
110阅读
刷了这两道枚举的题。用的都是bfs。1753这道题用到二进制的压缩方法。不管我感觉不压缩也不会超时什么的。其次的方法就是中规中矩的bfs。2965中。除了bfs,换
原创 2022-08-05 16:00:15
47阅读
这里介绍怎么求k短路 A*搜索 估价函数f[i]=g[i]+h[i]; 在这里g[i]表示到达点i当前路径长,h[i]表示点i到达终点的最短距离 在搜索中,每次都取队列估价函数值最小的点,然后把它所能到达的点更新进入队列 显然这需要一个优先队列来维护(heap) 当终点第k次出队时,当前路径长度就是k短路 1 const max=1000000000; 2 type link=^nod
转载 2014-03-02 11:02:00
100阅读
2评论
...
转载 2013-12-25 21:13:00
137阅读
2评论
poj2391,poj2455
转载 2014-03-16 22:51:00
135阅读
2评论
Maximum sumTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 30704Accepted: 9408DescriptionGiven a set of n integers: A={a1
原创 2022-03-04 17:40:02
104阅读
)/**********************************
原创 2023-04-23 15:30:32
33阅读
计算几何终于开坑了。。。 叉积+二分。
转载 2017-01-09 23:56:00
80阅读
2评论
Mud Puddles Time Limit:1000MS Memory Limit:65536K Total Submissions:3642
原创 2023-02-07 11:45:26
54阅读
本来十分简单的一道题,可却花了我那么长时间。测试了各种数据都是对的,一提交就WA,郁闷死了!!! 后来才发现是search()函数中的temp[4]没有初始化。。。 改成 int temp[4]={0}后就AC了。。。。 244K 16MS C++
原创 2012-07-06 20:53:14
708阅读
 昂贵的聘礼 Description 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。"探险家就跑到大祭
POJ
原创 2013-04-19 22:50:46
354阅读
题意是给出2副牌堆,然后放置第二副牌的最下面的一张,再叠放第一副牌最下面的一张,然后依照此顺序叠放2个牌堆最下面的一张牌,直至成为一副新的牌。之后下半部分和上半部分成为新的2副牌。然后给出一副合成牌的顺序,如果可以通过叠堆得到所要的顺序,就输出叠堆次数。若不可以,则输出-1。参考:http://www.cnblogs.com/ouyangduoduo/archive/2013/06/01/3112
原创 2018-04-22 15:54:02
432阅读
1点赞
一、思路这道题是求迷宫最短路径的长度类似的问题,只不过从二维变成了三维而已,因此存储迷宫的数组需要写成三维数组(这里用char arr[L][R][C]表示)。由于增加了一维,每个点能到达的点从二维的4个点变成了现在的6个点,所以需要增加一个tz[]数组来存储新的维度的变化情况。由于迷宫的每个点花费的时间都是相同的,所以直接用队列就能解决。这里用int vis[L][R][C]来表示从起...
原创 2022-02-03 11:31:51
11阅读
http://www.elijahqi.win/2017/07/12/poj-2774/ ‎ Long Long Message Time Limit: 4000MS Memory Limit: 13
原创 2022-08-08 14:39:54
18阅读
其实就是第K短路学习了以前跳过的启发式搜索(a*算法)然后需要使用到优先队列。。由于需要用堆实现所以窝萌还是选择STL吧。。然后priority_queue的话时间复杂度是O(logn),感觉再加上bfs就显得有点大了。。所以题目的数据规模一定得小点才行。。。A*和bfs相比多了一个估值函数f(x),也就是队列的排序依据,决定出队顺序。。而又有f(x)=g(x)+h(x)。
原创 2022-08-31 18:10:02
72阅读
这次真的是损失惨重。。WA了5次发现是误解题意(啪)以前一直用kruskal写MST,因为主要遇到的都是稀疏图所以没什么影响。。然后遇到稠密图就TLE。。。所以还是得学prim。。。然后其实prim比kruskal还要好写,作为一个模板存下来伐。。//#include#include#include#include#include#include#define in
原创 2022-08-31 18:10:06
29阅读
  • 1
  • 2
  • 3
  • 4
  • 5