
poj
yun_weiguo
这个作者很懒,什么都没留下…
展开
-
poj 2632 (模拟)
思路:使用x ,y,dir 数组 分别表示 第i 个robot 的 X,Y,坐标和 方向。一开始,我将x ,y 轴的方向弄错了,wa 了。。一定要注意方向。我将N, E,S, W 方向 0,1,2,3;判断crash 的时候,先判断撞墙 再 循环判断时候碰到 其他robot并且使用一个flag 判断是否撞到。思路清晰的话,代码不难写出来。。不过模拟题目太恶心原创 2015-02-18 11:28:40 · 302 阅读 · 0 评论 -
poj 3630(phone list)
Phone ListTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 23670 Accepted: 7276DescriptionGiven a list of phone numbers, determine if it is consistent原创 2015-02-10 18:56:39 · 351 阅读 · 0 评论 -
poj 1611(并查集)
http://blog.youkuaiyun.com/dellaserss/article/details/7724401 这篇文章生动的讲解了并查集的概念及其应用,比较好理解。在了解了并查集的概念以后,这道题目并不难做。 一开始我以为要将0 ,作为公共祖先的。走了弯路。 其实在并查集中,谁是公共祖先并不重要,只要他们在同一个集合里面,就ok了。于是乎 答案就是num[ find(0 ) ];484原创 2015-02-11 13:11:39 · 390 阅读 · 0 评论 -
poj 1703
先贴代码,过后再贴上这类题目的总结#include #include using namespace std;const int N=100010;int pre[N];int r[N];void make_set(int n){ for(int i=1;i<=n;i++) { pre[i]=i; r[i]=1; }}i原创 2015-02-12 18:37:27 · 385 阅读 · 0 评论 -
poj 3368(RMQ)
题目链接 http://poj.org/problem?id=3368这道题目是RMQ(Range Minimum/Maximum Query) 问题变形,寻找在区间内出现的最大频次。 用到动态规划 dp[ i] [j] =max(dp [i ] [j-1] ,dp[i +i<<(j-1) ] [j-1] ;这道题的关键是如何构建一个dp数组。 我们可以将读取的数组num 变形。 所有相同原创 2015-02-13 14:18:18 · 375 阅读 · 0 评论 -
树状数组模板+ poj 1195
模板模板int lowbit(int x){ return x & (-x);}void modify(int x,int add)//一维{ while(x<=MAXN) { a[x]+=add; x+=lowbit(x); }}int get_sum(int x){原创 2015-02-27 09:51:12 · 384 阅读 · 0 评论 -
poj 2503 (trie)
poj 2503 题目链接poj 2503 这道题目套用模板就差不多可以得到答案了。 不过比较蛋疼的是输入。参考答案。 模板 include using namespace std; const int branchNum = 26; //声明常量 int i; struct Trie_node{ bool isStr; //记录此处是否构成一个原创 2015-02-13 21:43:05 · 286 阅读 · 0 评论 -
poj 1129
题目链接点击打开链接哎,不知道有四色定理。还以为颜色会有很多种,一直想不出来。反思:程序都是可以分割成一部分一部分的。一开始写dfs 函数的时候,想着又要遍历邻接点,又要判断能否染色。好像会有很多循环,一直想不出来看了别人的博客,看到他将 将判断能否染色 分离出来。这样 dfs 就看起来简洁多了。同时在判断能否染色的时候要注意, 要根据情况选择 判断原创 2015-02-15 21:56:14 · 301 阅读 · 0 评论 -
poj 2828(线段树)
//题目的关键就在于查询元素所在的位置int query(int l,int r,int rt,int p){ if(l==r) { sum[rt]=0; return l; } int ret; int m=(l+r)>>1; if(p<sum[rt<<1]) //与2182 相类似,不过这里只有< 不是<=。原创 2015-02-28 11:58:10 · 500 阅读 · 0 评论 -
2182(线段树)
Lost Cowssegment tree is so amaing !!!#include #include #define N 8005int T[N<<2];int a[N];int b[N];void push_up(int rt){ T[rt]=T[rt<<1]+T[rt<<1|1] ; }void build(int l,int原创 2015-02-27 17:48:04 · 361 阅读 · 0 评论 -
POJ 3461
#include #include #define N 500010int next[N];char s[N];char t[N];void get_next(char s[] ,int len){ int i,j=0; next[1]=0; for(i=2;i<=len;i++) { while(j>0&&s[j+1]!=s[i]) j=原创 2015-03-03 22:47:41 · 313 阅读 · 0 评论 -
poj 2823(线段树)
我用的是朴树的线段树。没有经过优化的。用了9K+ms ,第一次看到这么大的时间。不知道lazy 该怎么标记。 本来想试一试zkw线段树的,但是不是很熟,写不出来因为要求最大最小值,一开始我只用了一个query 想同时 得到最大最小,最后发现实现不了。用了两个函数,一个求最大,一个求最小。得出来了。#include #include #include #incl原创 2015-02-26 19:27:00 · 452 阅读 · 0 评论 -
poj 3468
A Simple Problem with Integers一直在数据类型上出错。终于知道long long 是 “%lld” 来输出输入了。time 1732ms#include #include #define LL long longusing namespace std;const int N=100005;LL add[N<<2];LL sum[N<<2];v原创 2015-02-25 15:20:19 · 291 阅读 · 0 评论 -
poj 1182 (食物链)
这道题目的解法的(向量法) 大神不愧是大神,竟然想到这样的方法。设置一个数组pre ,保存 第i元素的直接前驱 pre【i】 同时设置一个数组offset,保存偏移量。 根据题目 若D=1,则表示X和Y是同类。 若D=2,则表示X吃Y。 那么d-1 表示偏移量 d=1时,d-1=0 ,表示同类 d=2时,d-1=1,表示x吃y。 d=0是,d-1+3=2 表示y吃x。有了这个假设原创 2015-02-11 20:43:38 · 485 阅读 · 0 评论 -
poj 1068
简单的一道模拟题理解题目就不难。一次Ap数组表示 第i个右括号前面有几个左括号。w数组表示 第i 个右括号所构成的括号组中 一共有多少个右括号(含第i个右括号)0ms #include #include #include #include #include using namespace std;int p[30];int w[30];char c[50]原创 2015-02-17 20:59:15 · 291 阅读 · 0 评论 -
poj 3122
题意:生日派对时,准备了n个圆柱形的pie,半径比一定相同,但高都为1,邀请了f个朋友,加上自己一共f+1人,需要将n个pie分给f+1个人要求:每个人分得的pie尺寸要一样大,并且同一个人所分的pie要是从同一个pie上得到的,n个pie分完后可以有剩余求:每个人最多可以分多少分析:因为同一个人所分的pie都来自同一个pie,若每个人所分的最大体积为a,那么比a小的pie原创 2015-02-20 13:02:28 · 576 阅读 · 0 评论 -
poj 3258 +3273 +2456
到现在 二分思想还没完全建立起来,看了别人的代码,才懵懵懂懂。先把代码 留下,留下以后思考这两道题目的方法是相同的。poj 3258#include #include using namespace std;long long rock[50010];long long n,m,l;int cmp(const void* a,const void* b){原创 2015-02-20 11:24:54 · 341 阅读 · 0 评论 -
poj 3087
简单的模拟题目 一开始理解题目错了,把 拆分后的s1,s2弄反了,答案错误。不过代码的速度太慢了,32ms大神都是0ms的。T~T#include #include #include using namespace std;int n,c,time,i;string no;string s1,s2,s;int shuffle(){ int i,j; string t原创 2015-02-17 13:00:04 · 277 阅读 · 0 评论 -
poj 2251
这道题目挺崩溃的。以为用 vis 数组判断是否访问过,以及 g数组存地图。没想到竟然会越过地图的边界(数组没越界)。蹦了。最近做了好几道bfs 的题目。终于对bfs 的题目有感觉了!!! #include #include #include #include using namespace std;char g[40][40][40];int vis[40]原创 2015-02-17 15:49:46 · 248 阅读 · 0 评论 -
poj 3096
好久没做字符串的题目了。题目分类是 c++ 模板库的使用。不过我好像没有用到。一开始忘了 怎么求字符串的长度,错用做strlen, sizeof 。 最后发现错误,使用了size()才ac 的#include #include #include #include using namespace std;int main(){ string str;原创 2015-02-21 15:56:34 · 394 阅读 · 0 评论 -
2299
这道题目的大意 是求 冒泡排序的交换次数但是 若这道题目 用冒泡排序做的话,肯定会超时 。O(n^2);但这道题目可以转换为求 逆序数 的大小。(线性代数里面学过的)9 1 0 5 4 逆序数=4+1+0+1=6 这正是 答案。我们可以使用 merge_sort() 来求 逆序数 。O(nlogn) 要注意 用int 型的话 ,会wa 的,要用long lon原创 2015-02-19 11:09:56 · 331 阅读 · 0 评论 -
poj 3125(模拟队列)
题目大意:让你根据队列中的优先级 ,如果队伍中有 优先级高于队头的,则将队头放到队尾。 若没有,则打印,时间+1. 计算最后打印要完成的任务m时,所需的时间用数组进行模拟,不知道第一次为什么会TLE. 可能是用了struct 。但我觉得应该没影响 。难道是一开始用了cin ?time 16ms#include #include #include using namesp原创 2015-02-21 21:02:45 · 429 阅读 · 0 评论 -
poj 3278
这是一道很水的bfs 题目。但是要注意的是 数组要开大点。因为 可能会访问到200000. 注意剪枝。否则会超时的。#include #include #include using namespace std;const int N=200010;int n,k,ans;bool vis[N];int cnt[N];void bfs(in原创 2015-02-16 23:53:58 · 401 阅读 · 0 评论 -
poj 2418(Trie树的应用)
Poj 2418 (Trie树的应用)题目链接:http://poj.org/problem?id=2418 题目大意: 阔叶林是一种植物群落,其中的树木都具有叶子面子很大这一共同特征,多结坚果,冬天会进入休眠状态。美国的温度和气候创造了近百种阔叶物种,如橡树、枫树、樱桃树等等,阔叶树几乎占全美树种的40%左右。另一方面,针叶树(拉丁语称为”锥轴树“,因为其叶子是锥形针状的)在美原创 2015-02-11 00:02:07 · 873 阅读 · 0 评论 -
poj 1125 floyd
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int dis[101][101];i原创 2015-03-11 21:33:45 · 361 阅读 · 0 评论