二分匹配的灵活运用
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评论
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阅读
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金币就行了。"探险家就跑到大祭
原创
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阅读
点赞
一、思路这道题是求迷宫最短路径的长度类似的问题,只不过从二维变成了三维而已,因此存储迷宫的数组需要写成三维数组(这里用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阅读