ACM题目讲解
各个OJ上的部分题目讲解
代码随想录
代码随想录网站:https://programmercarl.com
展开
-
poj 3468 A Simple Problem with Integers 基础线段树
这个题我之前做过,我在有做一下,wa,re了一下午,我无语了,各种小毛病,我都标记出来了!!!!!!!!!!!!! #includeusing namespace std;struct node { long long left; long long ri原创 2011-09-01 16:44:34 · 733 阅读 · 0 评论 -
hdu 4004The Frog's Games 二分查找!!!!!!!
这道题一开始我以为是dp,有考虑贪心!!哎,还是对算法不熟!!! #includeusing namespace std;#includeint a[500005];int n,l;bool ok(int mid,int m){ int temp;原创 2011-09-13 20:54:24 · 773 阅读 · 0 评论 -
poj Washing Clothes挺好的一道01背包
这道题算是01背包的的灵活运用吧!!!挺好的一道题,先说说思路,先用结构体存时间,和衣服颜色 再将颜色排个序,一样的颜色放一起,然后将同一种的颜色时间加一起sum,sum在除2,对这个进行01背包,尽量能取到sum的中间值,这样消耗的时间最少。#includeusing原创 2011-08-17 18:44:42 · 899 阅读 · 0 评论 -
poj 动态规划总结
容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740, 1742, 1887, 1926, 1936, 1952, 1953, 1958, 1959, 1962, 19...原创 2011-08-17 19:37:21 · 1706 阅读 · 0 评论 -
poj Cow Exhibition 01背包的灵活运用
这道题起初我看是一点思路都没有,后来瞄一眼解题报告才知是另一背包,可还是做不出来,又把结题报告看一遍,才理解,废话不多说了。。。。这道题主要是有了两个变量,但我们可以先锁定一个变量si,因为有负数,所以将si的范围锁定到1到200000,理由01背包计算出每一个si值所对应的原创 2011-08-16 19:06:59 · 1888 阅读 · 2 评论 -
STL之priority_queue 感觉讲的不错!!!呵呵
STL之优先队列原本以为priority_queue很简单,才知道原来懂的只是最简单的形式。头文件:#include优先队列,也就是原来我们学过的堆,按照自己定义的优先级出队时。默认情况下底层是以Vector实现的heap。既然是队列,也就只有入队、出队、判空、大转载 2011-09-15 14:59:02 · 771 阅读 · 0 评论 -
hdu 4006 The kth great number 优先级队列
#includeusing namespace std;#includestruct node{ int num; friend bool operator { return a.num>b.num; }} a[100005];in原创 2011-09-15 15:01:26 · 595 阅读 · 0 评论 -
poj 2777 Count Color 基础线段树,带给的初学者噩梦!!!
线段树的精髓是父亲结果要优于孩子结果啊!!!!!用过的线段直接赋值-1; #include#includeusing namespace std;#define N 100005struct node{ int l,r,c;}a[N*4];in原创 2011-09-22 21:23:54 · 736 阅读 · 0 评论 -
poj 2356 Find a multiple dfs 爆搜!!!!
这道题我可以很明确的告诉大家!!我是照着别人的代码写的,自己做却是做不出来,主要是那种深搜中的爆搜理解的真是不到位,看了别人的代码也是研究了半天,想了又想,分步调试,跟踪它的深搜过程,自己在理解,在慢慢的理解了这种爆搜的方法!!!大家见笑了!!作为弱者不怕大牛笑,呵呵!!仅仅原创 2011-08-27 20:39:37 · 1014 阅读 · 0 评论 -
poj 2385 Apple Catching 经典dp
这道题让我对于这种类型题有了一个比较深的理解!!!主要思路就是用跳的数目去更新dp[][]。#include<iostream>using namespace std;int dp[50][1005];int a[1005];int main() { int t,w; while(cin>>t>>w) { ...原创 2011-08-28 16:03:40 · 1218 阅读 · 0 评论 -
poj 1056 IMMEDIATE DECODABILITY trie树 ——字典树 静态数组版
和3630基本一样!!只不过这个数据水了一些!!!详细讲解看本博3630题解 #includeusing namespace std;bool ok=true; char a[15];int p=1;int num;struct node{ i原创 2011-10-02 12:54:56 · 1602 阅读 · 0 评论 -
poj Shortest Prefixes ——trie树、字典树,基础!!
我的第一道tire树,很基础,很好!!!!!!!!! #includeusing namespace std;#define max 26char ss[1005][50];char tt[50];struct node//初始tire树 { in原创 2011-10-01 10:33:12 · 948 阅读 · 0 评论 -
poj 2503 Babelfish trie树!!!!指针版和数组版 基础
指针版 #includeusing namespace std;#define max 26struct node//初始tire树 { bool boo;//判断是否是字符串最低端 char aa[15];//将b字符串最低端 存a字符串 n原创 2011-10-01 13:26:47 · 1089 阅读 · 0 评论 -
讲解 tire 树
Trie树也叫字典树,是一种用于快速检索的多叉树结构。如英文字母的字典树是一个26叉树。数字的字典树是一个10叉树。Trie树把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序构造用于检索的树结构;一棵m度的Trie树或者为空,或者由m棵m度的Trie树构成。特别的转载 2011-10-01 13:40:59 · 973 阅读 · 0 评论 -
poj 3630 Phone List trie树—字典树 静态数组版!!!
做这道题历经re,wa,tle,最后看了别人的代码写出来的!!!!!!!!!!#includeusing namespace std;#define max 10int num;bool ok;struct node{ bool isword;原创 2011-10-02 10:47:55 · 1396 阅读 · 0 评论 -
poj 3250 Bad Hair Day 栈的简单运用
#includeusing namespace std;#includetypedef long long ll;ll a[100000];int main(){ stacks; int n; while(cin>>n) { for(原创 2011-10-05 15:14:43 · 906 阅读 · 0 评论 -
poj 1363 Rails 栈应用基础题
题意是有一个升序1,2,3,4,5,6,7,.....的火车,进站之后能不能以输入的顺序输出!!!就这题我看了半天才看明白题意!!愁死我了 #includeusing namespace std;#includeint a[1005];int num[10原创 2011-10-05 11:50:49 · 1269 阅读 · 0 评论 -
poj 2559 Largest Rectangle in a Histogram dp!!!
话说这种相当于压缩路径的方法#include<iostream>using namespace std;typedef long long ll;ll a[100005];int main(){ int left[100005],right[100005]; int n; while(scanf("%lld",&n),n!=0) { for(in...原创 2011-10-05 19:32:05 · 880 阅读 · 0 评论 -
poj 2823 Sliding Window 双向队列,学习
刚刚接触队列!!是在惭愧,仔细研读了别人的代码写的!!!!!用两个队列分别是q1,q2,一个是维护最大值,一个维护最小值,q1里严格遵守从大到小,q2严格遵守从小到大!!!不断输出q1,q2的队首,就是最大值最小值#include#includeusing namespa原创 2011-10-05 22:02:50 · 1001 阅读 · 0 评论 -
2349 Arctic Network prim最小生成树 基础
图我们构造完成,调用prim算法,把该算法中每一次贪心得到的最小权边存入一个数组中。算法结束后对那个数组sort递减排序。这样,前边最大的s个用那卫星让他们通信去。然后从第s开始配给他们足够功率的对讲机使。#includeusing namespace std;#incl原创 2011-10-08 12:07:32 · 1074 阅读 · 0 评论 -
poj 3461 Oulipo kmp 预处理
这道题主要是prenext函数的作用,譬如说abababa如果不是先处理aba数组,那结果必然是1了,预处理用next数组将aba中的a指向前一个b在next数组里就是-1,-1,0,这样搜到aba中的最后一个a结束的时候next数组会返回到b那个位置具体还请读者自己慢慢体会啊!原创 2011-10-09 00:30:26 · 861 阅读 · 0 评论 -
poj 3450 Corporate Identity 枚举+kmp,话说这家伙给我一顿超时啊!!!!
话说这道题我真是无限超时啊!!!超时了无数次,最后优化了一上午,发现3点,终于过了725ms!!!!!#includeusing namespace std;#define max 5010int next[205];void prekmp(char aa[])原创 2011-10-09 11:49:29 · 836 阅读 · 0 评论 -
poj 2406 Power Strings kmp基础
#includeusing namespace std;#define max 1000001char a[max];int next[max];int len;void kmp(){ int j=-1; next[0]=-1; len=s原创 2011-10-09 00:12:09 · 593 阅读 · 0 评论 -
poj 1961 Period kmp基础
基础kmp 算是入门题#includeusing namespace std;#define max 1000001char a[max];int next[max];void kmp(int n){ int j=-1,i; next[0]=-1;原创 2011-10-09 00:23:33 · 713 阅读 · 0 评论 -
poj 1226 Substrings kmp 好题,我调试了一晚上啊!!汗
话说这道题我调试了5个小时,整整一晚上啊!!!!!!!!!!!!!!说一下思路就是枚举第一个字符串所有的子串长度,去与其余的字符串kmp,如果都符合,那那个子串的长度就是答案!!!#includeusing namespace std;#define max 105i原创 2011-10-09 05:07:35 · 1022 阅读 · 4 评论 -
poj 3080 Blue Jeans kmp+枚举
本题与1226,3450基本一样!!!!!!!!!!!!不解释,详细可以看1226的结题报告#includeusing namespace std;#define max 100int next[max];void prekmp(char aa[]){ i原创 2011-10-09 12:44:41 · 640 阅读 · 0 评论 -
C++ 什么叫做离散化
Matrix67原创 Trackback: http://www.matrix67.com/blog/archives/108 如果说今年这时候OIBH问得最多的问题是二分图,那么去年这时候问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现转载 2011-10-11 13:55:38 · 2513 阅读 · 0 评论 -
hdu Train Problem I 栈的基本应用
这道题和poj的1363题很相近!!!!不解释了,基础栈的应用#include#includeusing namespace std;char a[15],b[15],sign[15];int main(){ int n; stack q; while(cin>>n) { scanf("%s%s",a,b); memset(sign,0,sizeo原创 2011-11-15 19:42:50 · 584 阅读 · 0 评论 -
poj 2263 Heavy Cargo floyd基础,就是输入的时候处理字符串纠结一点!!!!
#includeusing namespace std;int map[205][205],pri;char a[100],b[100];char name[205][100];int cou=0;int find()//寻找a字符串的位置{ for(int i=1;i<202;i++) { if(strcmp(name[i],a)==0) retu原创 2011-11-17 03:24:33 · 851 阅读 · 0 评论 -
poj Cow Hurdles floyd基础题!!!!
#includeusing namespace std;int map[305][305];int min(int x,int y){ return x>y ? y:x;}int main(){ int n,m,t,s,e,h,x,y; while(cin>>n>>m>>t) { for(int i=0;i<305;i++) { fo原创 2011-11-17 01:47:08 · 714 阅读 · 0 评论 -
poj Risk 1603 floyd基础题!!
基础的floyd!!!!!!!!!#includeusing namespace std;int map[50][50];int main(){ int n,t; int cases=1; while(cin>>n) { for(int i=0;i<50;i++) { for(int j=0;j<50;j++) map[i][j]=100原创 2011-11-17 00:27:11 · 601 阅读 · 0 评论 -
poj 1036 Gangsters dp 简单题
#include<iostream>using namespace std;#include<algorithm>struct node{ int t; int p; int s;}a[105];bool cmp(node a,node b){ return a.t<b.t;}short dp[3000...原创 2011-10-31 02:09:26 · 1192 阅读 · 0 评论 -
poj 1502 MPI Maelstrom dijkstra基础 入门 点型模板题
#includeusing namespace std;int map[105][105];int vis[105],d[105];int main(){ int n,a; char r[100]; while(cin>>n) { for(int i=0;i<105;i++) { for(int j=0;j<105;j++) {原创 2011-11-22 17:24:02 · 665 阅读 · 0 评论 -
poj 1094 Sorting It All Out 很好的拓扑排序,让我对拓扑排序有了一个很好的写法!!!
话说这道题是我大前天包宿看的一道题,一看是拓扑排序,不怎么难嘛!!于是乎从10点开始做,加上我这糟烂得英语能力,看了半天才开始写后来事实证明,我那天晚上读题还读错了,题意说是第几组后就可以排除顺序,第几组后就可以开出矛盾,我给理解成一共有几组矛盾的,晕!!写着写着,调着调这,大半夜过去了,天快亮了,这一下子给我整不会了,越想与不对劲!!于是寡人就看一下别人的结题报告,我去,没有一个原创 2011-11-20 11:58:35 · 1055 阅读 · 0 评论 -
poj 2502 Subway dijkstra基础 !!!!入门题
这是我第一个dijkstra,之前接触过,但不知道这个算法,现在一看,还是不难的,关键就是不断更新d[]数组,使d[]数组里面放的一直是所有点到起点的最小值,还有vis[]数组来避免重复查找!!!!!!!!!!#includeusing namespace std;#include#include struct node{ double x; double y;}a原创 2011-11-22 17:13:23 · 1051 阅读 · 4 评论 -
poj 3268 Silver Cow Party dijkstra基础题!!!入门
双向dijkstra,一遍正续dijkstra,再将路向倒过来dijkstra,这道题我已开始定义最大值0x7FFFFFFF这顿wa,改成0x7FFFFF就过了,原来0x7FFFFFFF在比较的时候d[u]+map[u][j]一加就冒了,变成负数了!!!#includeusing namespace std;int map[1005][1005],vis1[1005][1005];in原创 2011-11-22 17:20:18 · 841 阅读 · 0 评论 -
poi 1847 Tram floyd!!基础,但这道题有一句很隐晦,容易wa
#includeusing namespace std;int map[205][205];#define inf 0x7FFFFFint main(){ int n,m,a,b,t; while(cin>>n>>a>>b) { for(int i=0;i<205;i++) { for(int j=0;j<205;j++) {原创 2011-11-23 11:32:24 · 693 阅读 · 0 评论 -
poj 1511 Invitation Cards spfa 基础题!!虽然我做的比较坎坷!!可以练手啊!!
这道题整的我真是纠结,inf定义为0x7FFFFFF就是wa,改成7个F就过了,尼玛啊!!if(w+d[t]这道题spfa 正反两次就行了#includeusing namespace std;#include #include#include#define N 1000005#define inf 0x7FFFFFFF struct node { int u原创 2011-11-26 11:13:26 · 710 阅读 · 0 评论 -
poj 2387 Til the Cows Come Home spfa基础题,入门,我的第一个
终于想到spfa的好处了,首先要比dij快啊!!dij是所有点汤一遍,而spfa用链表有方向的,还有dij遇见负权边就完了dijkstra 不能有负权边,否则结果是错的,你想想,假如无向图有1,2,3个点,w(1,2)=1,w(1,3)=2,w(2,3)=-2. 按dij算法求求看。 实现方法:建立一个队列,初始时队列里只有起始点,在建立一个表格记录起始点到所有点的最短路径(该表格的初始值要赋原创 2011-11-26 02:11:22 · 1264 阅读 · 0 评论 -
poj 2240 Arbitrage floyd基础,字符串输入有点麻烦
此题与2263一样,floyid#includeusing namespace std;float map[205][205],pri;char a[100],b[100];char name[205][100];int cou=0;int find()//处理字符串输入{ for(int i=1;i<202;i++) { if(strcmp(name原创 2011-11-26 03:39:42 · 595 阅读 · 0 评论