- 博客(284)
- 资源 (1)
- 收藏
- 关注
原创 ZOJ1610_Count the Colors(线段树/成段更新)
解题报告题意:一根长度8000的线段上染色,求染完之后,每个颜色在线段上有多少个间断的区间。思路:区间问题用线段树,成段的更新区间,最后把所有的区间下压到叶子结点,统计叶子结点的颜色。#include #include #include using namespace std;int lz[32000],_hash[10000],color[10000],cnt;v
2014-08-11 03:05:36
8354
原创 POJ训练计划2299_Ultra-QuickSort(线段树/单点更新)
解题报告题意:求逆序数。思路:线段树离散化处理。#include #include #include #include #define LL long longusing namespace std;LL sum[2001000],num[501000],_hash[501000];void push_up(int rt){ sum[rt]=sum[rt
2014-08-10 23:37:08
2690
原创 HDU2852_KiKi's K-Number(线段树/单点更新)
解题报告题目传送门题意:意思很好理解。思路:每次操作是100000次,数据大小100000,又是多组输入。普通模拟肯定不行。线段树结点记录区间里存在数字的个数,加点删点操作就让该点个数+1,判断x存在就查询[1,x]区间的个数和[1,x-1]的个数。求x之后第k大的数就先确定小于x的个数t,第t+k小的数就是要求的。#include #include #incl
2014-08-10 21:16:26
2294
原创 POJ训练计划2528_Mayor's posters(线段树/成段更新+离散化)
解题报告地址传送门题意:一些海报,覆盖上去后还能看到几张。思路:第一道离散化的题。离散化的意思就是区间压缩然后映射。给你这么几个区间[1,300000],[3,5],[6,10],[4,9]区间左右坐标排序完就是1,3,4,5,6,9,10,300000;1,2,3,4,5,6, 7 ,8;我们可以把上面的区间映射成[1,8],[2,4],[5,7],[
2014-08-10 15:21:26
34354
1
原创 POJ训练计划3096_Surprising Strings(STL/map)
解题报告题目传送门题意:给一个字符串,要求,对于这个字符串空隔为k取字符对(k=0,1,2,3,4...)要求在相同的空隔取对过程汇总,整个字符串中没有一个相同字符对如:ZGBZ:间隔为0的字符对有: ZG、GB、BZ,三个均不相同间隔为1的字符对有: ZG、 GZ,均不相同间隔为2的字符对有: ZZ 仅有一个,不必比较。这种字符串定义为
2014-08-09 19:44:22
2351
原创 ZOJ1109_Language of FatMouse(STL/map)
解题报告题意:略。思路:map应用。#include #include #include #include #include #include #include #include using namespace std;mapMap;int main(){ string str1,str2,str; int i,j; while
2014-08-09 19:29:38
1859
原创 ZOJ2724_Windows Message Queue(STL/优先队列)
解题报告题意:看输入输出就很明白。思路:优先队列。#include #include #include #include #include #include #include #include using namespace std;struct node { char m[100]; int v,k; friend bool ope
2014-08-09 19:23:53
1879
原创 HDU1698_Just a Hook(线段树/成段更新)
解题报告题意:原本区间1到n都是1,区间成段改变成一个值,求最后区间1到n的和。思路:线段树成段更新,区间去和。#include #include #include using namespace std;int sum[500000],lz[500000];void push_up(int root,int l,int r){ sum[root]=sum
2014-08-09 10:43:58
1503
原创 POJ3468_A Simple Problem with Integers(线段树/成段更新)
解题报告题意:略思路:线段树成段更新,区间求和。#include #include #include #define LL long long#define int_now int l,int r,int rootusing namespace std;LL sum[500000],lazy[500000];void push_up(int root,int l,
2014-08-08 21:44:43
1414
原创 HDU3074_Multiply game(线段树/单点更新)
解题报告题意:略思路:单点更新,区间乘积。#include #include #include #define LL long longusing namespace std;LL mul[501000];void update(int root,int l,int r,int p,int v){ int mid=(l+r)/2; if(l==r)
2014-08-08 08:14:55
1131
原创 HDU1754_I Hate It(线段树/单点更新)
解题报告题意:略思路:单点替换,区间最值#include #include #include #define inf 99999999using namespace std;int maxx[808000];void update(int root,int l,int r,int p,int v){ int mid=(l+r)/2; if(l==
2014-08-07 21:53:54
1181
原创 HDU1166_敌兵布阵(线段树/单点更新)
解题报告题意:略思路:线段树单点增减和区间求和。#include #include #include #define LL long longusing namespace std;int sum[201000];void update(int root,int l,int r,int p,int v){ int mid=(l+r)/2; if(l
2014-08-07 21:32:22
1173
原创 POJ3264_Balanced Lineup(线段树/单点更新)
解题报告题意:求区间内最大值和最小值的差值。思路:裸线段树,我的线段树第一发。#include #include #include #define inf 99999999#define LL long longusing namespace std;LL minn[201000],maxx[201000];void update(LL root,LL l,LL
2014-08-07 20:45:34
1045
原创 SDUT_人活着系列
SDUT2929_人活着系列之芳姐和芳姐的猪解题报告求出所有最短路,枚举一个猪圈求出到有猪的猪圈的总路程最短。#include #include #include #include #include #define inf 99999999using namespace std;struct E{ int v,w,next;} edge[5000
2014-08-06 01:00:56
1641
原创 HDU1839_Delay Constrained Maximum Capacity Path(最短路+二分)
解题报告题目传送门题意:有N个点,点1为珍贵矿物的采矿区, 点N为加工厂,有M条双向连通的边连接这些点。走每条边的运输容量为C,运送时间为D。他们要选择一条从1到N的路径运输, 这条路径的运输总时间要在T之内,在这个前提之下,要让这条路径的运输容量尽可能地大。一条路径的运输容量取决与这条路径中的运输容量最小的那条边。思路:二分容量建图,spfa判时间是否符合
2014-08-02 15:55:39
1701
翻译 二分图最大匹配及常用建图方法
转载百度文库算法———艺术二分图匹配剖析很多人说,算法是一种艺术。但是对于初学者的我,对算法认识不是很深刻,但偶尔也能感受到他强大的魅力与活力。这让我追求算法的脚步不能停止。下面我通过分析匈牙利算法以及常用建图方式,与大家一起欣赏算法的美。匈牙利算法匈牙利算法是用来解决最大二分图匹配问题的,所谓二分图即 “一组点集可以分为两部分,且每部分内各点互不相连,两部分的点之间可
2014-08-02 11:09:29
4063
1
原创 POJ2063_Investment(背包/完全背包)
解题报告题意:本金买股票,最大n年后的收益(本金加利息)思路:基础完全背包,单纯的写可能TLE,因为股票都是1000的倍数,所以本金用1000的整数倍来买股票。#include #include #include #define inf 99999999using namespace std;int w[12],c[12],dp[2001000],v;int n,d
2014-08-02 09:31:48
1383
原创 POJ2001_Shortest Prefixes(字典树)
解题报告题目传送门题意:给你字符串,然后让你找出最短的前缀字符串,但不能跟下面的单词的前缀相同。思路:只要建成trie的前缀树就行了。#include #include #include struct node{ int v; node *next[26];};node *newnode(){ node *p=new node;
2014-08-02 00:29:38
1248
原创 HDU2191_悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(背包/多重背包)
解题报告题目传送门题意:中文不多说;思路:基础多重背包,每个物品有多个可以选,转换成01背包解。#include #include #include #define inf 99999999using namespace std;int main(){ int t,i,j,n,m,v,p,h,cc,w[1010],c[1010],dp[1010];
2014-08-02 00:19:26
1406
原创 HDU2602_Bone Collector(背包/01背包)
解题报告题意:容量为v的大小,物品数n,每个物品有价值和容量,求能装进包的最大价值。思路:基础01背包。dp[j]=max(dp[j],dp[j-c[i]]+w[i])#include #include #include #define inf 99999999using namespace std;int main(){ int t,i,j,n,v,
2014-08-01 22:56:15
1127
原创 HDU1114_Piggy-Bank(背包/完全背包)
解题报告题目传送门题意:给金币的面额和重量,求装满储蓄罐的最小价值。思路:完全背包基础,初始dp为最大,dp[0]=0表示储蓄罐为空价值为0;状态转移方程就是dp[j]=min(dp[j],dp[j-w[i]]+c[i])#include #include #include #define inf 99999999using namespace std;in
2014-08-01 21:31:49
1047
原创 POJ3189_Steady Cow Assignment(二分图多重匹配/网络流+二分构图)
解题报告题目传送门题意:B个猪圈,N头猪,每头猪对每个猪圈有一个满意值,要求安排这些猪使得最大满意和最小满意的猪差值最小思路:二分图的多重匹配问题;猪圈和源点连边,容量为猪圈容量,猪与汇点连边,容量1;猪圈和猪之间连线取决所取的满意值范围;二分查找满意值最小差值的范围。#include #include #include #include #define
2014-08-01 17:56:33
2143
原创 UVa10115_Automatic Editing csdn(小白书字符串专题)
解题报告题意:替换字符串,一个单词可重复替换思路:这种题都很恶心。#include #include #include #include using namespace std;char str[1000][1000],ch[1000][1000],sh[1000],str1[1000];int main(){ int n,i,j; while(~
2014-07-31 21:50:47
1046
原创 UVa409_Excuses, Excuses!(小白书字符串专题)
解题报告字典树爆。#include #include #include using namespace std;int k,e,num[100],cnt;struct node{ int v; node *next[26];};node *newnode(){ node *p=new node; p->v=0; int i;
2014-07-31 20:38:17
976
原创 UVa10815_Andy's First Dictionary(小白书字符串专题)
解题报告思路:字典树应用,dfs回溯遍历字典树#include #include #include using namespace std;struct node { int v; node *next[26];};int l,m,cnt;char str[100],ch[100],dic[5500][100];node *newnode(){
2014-07-30 21:33:18
1151
原创 POJ2584_T-Shirt Gumbo(二分图多重最大匹配/最大流)
解题报告题目传送门题意:X个参赛选手,每个选手有衣服大小的范围,5种大小的队服,求是否能使每个选手都拿到符合自己大小范围的衣服。思路:X人5种衣服,有的人选的衣服可能大小一样,这样就是二分图的多重最大匹配。源点到5种衣服的容量就是衣服的数量。#include #include #include #include #include #include #define
2014-07-28 23:38:39
1882
原创 POJ1698_Alice's Chance(二分图多重最大匹配/最大流)
解题报告题目传送门题意:N个电影,每个电影在每一周有固定拍映时间,电影必须在W周前演完。有一个演员,他每天只能演一场电影,对于每部电影必须演完D天才算完。思路:二分图多重最大匹配问题,对于每个电影,源点与每个电影连上一条边容量为D,电影与每周7天对应拍映连线,容量为1,每周每天与汇点连线容量为1在二分图最大匹配中,每个点(不管是X方点还是Y方点)最多只能和一条匹配边
2014-07-28 22:49:04
1410
原创 ZOJ3508_The War(网络流最大流)
解题报告题目传送门题意:N个士兵,M个武器,每个士兵能接受的武器重量范围是[minw,maxw]思路:本来以为二分图可以的,(看错数据范围了,,,)贪心好像可以。scf说网络流可以缩点。建图方式:源点和士兵连一条线,每个士兵与[1,1000]的武器重量连边,[1,1000]与汇点连线,容量是武器i的数量#include #include #include #i
2014-07-28 19:13:07
1468
原创 G++万能头文件/cin_cout
#include #define _ ios_base::sync_with_stdio(0);cin.tie(0); using namespace std; int main() { _ return 0; }
2014-07-27 16:54:47
7551
原创 POJ2446_Chessboard(二分图最大匹配)
解题报告题目传送门题意:M×N的矩阵,k个点被标记,用2×1的木板最多可以放置多少个。思路:把标记的格子除外,链接相邻的两个格子,然后最大匹配出来的是二分图的两倍。c++TLE了,G++1700+过了,理论上匈牙利算法的时间复杂度是n^3,就应该超时,可能数据弱吧。还有一种建图方式就是建成二分图,将矩阵中的点奇偶分。#include #include #incl
2014-07-27 15:29:22
2408
原创 HDU1068/POJ1466_Girls and Boys(二分图/最大独立集=N-最大匹配)
解题报告题目传送门题意:求满足条件的最大集合:集合内任何两个人都没有浪漫关系思路:跟POJ2771一样的题,变的简单多了。POJ2771解题报告#include #include #include #include using namespace std;int n,mmap[550][550],pre[550],vis[550];int dfs(int x)
2014-07-27 03:36:53
1372
原创 POJ2771_Guardian of Decency(二分图/最大独立集=N-最大匹配)
解题报告题目传送门题意:看到题目我就笑了,,,老师认为这样的两个学生不是一对:身高相差40以上(年龄都不是距离了,身高又算什么)不同性别(sad,,,就不允许基友存在呀,,,谁的肥皂掉了,,,)喜欢不一样的歌曲类型(你总不能要求两人整天听小苹果吧,,,,,,你是我的小丫小苹果,,,,,,)喜欢一样的运动( they are likely to be fans of
2014-07-27 02:56:02
1923
原创 POJ2536_Gopher II(二分图最大匹配)
解题报告题目传送门题意:n只地鼠,m个洞,老鹰的到达地面的时间s,地鼠的移动速度v,求多少只地鼠会被老鹰吃了。思路:地鼠和洞看成两集合,建立二分图。只有当地鼠到洞的时间少于老鹰到地面的时间才连边。#include #include #include #include using namespace std;int n,m,s,v,mmap[500][500],v
2014-07-27 00:58:15
2322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人