poj
Loi_whales
生活不止眼前的苟且,还有诗和远方的田野
展开
-
poj2376 Cleaning Shifts
题目是每只奶牛负责一个时间段,让你求覆盖完全部的时间段最少需要多少只奶牛,如果不能覆盖完输出“-1”,但是很多人理解成把整个区间都覆盖完需要多少个小区间,其实是覆盖完所有点需要多少的小区间,例如: 2 10 1 5 6 10 这样是可以覆盖完所有点的,所以输出2,而不是-1. 这个题目的思路是贪心,按起点由小到大排序,同一起点的,按能够延伸的长度由长到短排序,这样我们从起点开始,每次选择能原创 2017-10-27 10:15:43 · 291 阅读 · 0 评论 -
poj3723 Conscription
这个题目大意就不写了,注意男生和女生区分的话可以:(女:1,2,3…;男:n+1,n+2,n+3…),把两人之间的亲密度当做点与点之间有权值,就是求最大生成树,把权值换成负的,就是求最小生成树了。 数据输入量很大,要用scanf,不然会TLE。(poj教你养成随手scanf和printf的习惯,因为poj的题目老是卡这个) 代码如下:#include <cstdio>#include <ios原创 2017-10-13 16:17:33 · 257 阅读 · 0 评论 -
poj2457 Part Acquisition
题目大意:给你一些点和边(单向边),所有边权都相等,问从第一个点到最后一个点最少经过多少点(包含初始和结束点),并把这条最短路的路径上的点输出来。 当然,把题目直接翻译过来的话不是上述内容,你需要转换成上面的意思,这是一道最短路还原路径的典型题(模板题),具体实现如下:#include <cstdio>#include <iostream>#include <cstring>#include原创 2017-10-13 11:14:12 · 313 阅读 · 0 评论 -
poj1007 DNA Sorting
题意是给你一些DNA序列,让你计算每个序列里某个字母后面有多少个比它小的字母,加起来作为一个参数(就是求逆序数),然后按照这个参数从小到大的顺序排列这些DNA序列并输出,如果大小相等,按原来顺序输出。 按题意模拟就好(表示看错题意WA了好多次T_T)#include <cstdio>#include <iostream>#include <algorithm>#include <cstrin原创 2017-10-13 09:01:57 · 279 阅读 · 0 评论 -
poj1002 487-3279
题目大意:就是给你一些符号和大写字母对应的数字,要求全部转化成电话号码XXX-XXXX的形式,其中X只能是数字,这些字符串的长度不等,里面会有一些‘-’,最后要求是找出出现次数>1的电话号码,输出号码和重复出现的次数,如果没有重复的号码,就输出:“No duplicates.” WA的同学注意“No duplicates.”不要漏掉“.”。 TLE的同学注意把cin和cout改成scanf和pr原创 2017-10-12 20:59:00 · 229 阅读 · 0 评论 -
poj1182食物链
Description动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第二种说法是”2 X Y”,表示X吃Y。 此人对N个动物,用上述两原创 2017-10-11 21:42:20 · 247 阅读 · 0 评论 -
poj2431 Expedition
这个题注意几点: 1、《挑战程序设计竞赛》上的代码并不能适用此题,这里的a[i]是到终点的距离 2、注意要排序!这里给出的a[i]并不一定是按顺序给的(只有WA过才会明白有多坑)#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace原创 2017-10-11 19:11:45 · 329 阅读 · 0 评论 -
poj 3069 Saruman's Army
题目大意就不说了 方法是:先排序,然后从第一个点开始往右R个长度看看能覆盖多少点,再从最远能覆盖到的点P开始继续往右R个单位长度,这是点P能覆盖的范围,找到所有这些点做标记,就是最少能标记的点 具体实现如下:#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace s原创 2017-10-11 08:24:32 · 224 阅读 · 0 评论 -
poj1330Nearest Common Ancestors(暴力与倍增)
这道题的意思就是,给你一棵树,再从中取出任意两个节点,让你找他们的最近公共祖先,一个很裸地题,当倍增入门题不错。由于数据比较水,暴力也能A//暴力做法#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;int fa[100005];bool vis[1原创 2016-10-25 17:00:15 · 105 阅读 · 0 评论 -
poj2367(拓扑排序)
题目就是让你求拓扑序 拓扑排序就是,先找到入度为0的点,删去,同时把它的所有出度删去,再找新的入度为0的点,删去的点的顺序就是拓扑序#include <cstdio> #include <iostream>#include <cstring>#include <algorithm>using namespace std;int s[233][233];int in_degree[233原创 2016-10-27 15:11:24 · 1069 阅读 · 0 评论 -
poj3061Subsequence(尺取法)
题意: 给定长度为n的数列及整数S,求出总和不小于S的连续子序列长度的最小值尺取法: 我理解的尺取法就是,对给定的序列进行扫描,如果不满足条件,右端点右移,直到满足条件为止,右移左端点,看是否还能满足条件,这样就能取到较小的序列,使其满足条件。#include <cstdio>#include <iostream>#include <cstring>#include <algori原创 2016-10-28 08:53:47 · 483 阅读 · 2 评论 -
poj2386(BFS与DFS)
这个题就是求联通块 bfs代码#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;char s[233][233];int n,m,ans = 0;bool vis[233][233];int dx[9]={0原创 2016-10-29 06:58:17 · 101 阅读 · 0 评论 -
poj2488 A Knight's Journey
题目大意是让你求出这个马不重复地跳完整个棋盘的字典序最小的路线,如果不能跳完整个棋盘,就输出impossible。 这是一道搜索题,马能走的有八个方位,想要使字典序最小,我们就先从字典序为A开头的地方搜,不行再搜B,这样搜到的第一个答案就是字典序最小的答案或者没有答案。 代码如下:#include <cstdio>#include <cstring>#include <iostream>#原创 2017-10-10 07:18:44 · 192 阅读 · 0 评论 -
poj 2709 Painter
题目翻译: 杂货店出售一种由 N(3<=N<=12)种不同颜色的颜料,每种一瓶(50ML), 组成的颜料套装。你现在需要使用这 N 种颜料;不但如此,你还需要一定 数量的灰色颜料。杂货店从来不出售灰色颜料——也就是它不属于这 N 种 之一。幸运的是,灰色颜料是比较好配置的,如果你取出三种不同颜色的 颜料各 x ml,混合起来就可以得到 xml 的灰色颜料(注意不是 3x原创 2017-10-10 16:27:21 · 228 阅读 · 0 评论 -
poj1852 Ants
这题考察思维的灵活性,此外这份代码用cin和cout会超时(orz)#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <cmath>using namespace std;int a[1000000];int ans[1000000];int main(){原创 2017-10-10 19:20:57 · 209 阅读 · 0 评论 -
POJ3617 Best Cow Line
注意最后输出的时候每80个就要换一次行(PE两次后的教训之认真看题)#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;int n;char s[20000],T[20000];int main(){ scanf("%d",&n);原创 2017-10-10 21:23:06 · 246 阅读 · 0 评论 -
poj1111 Image Perimeters
题目大意:求联通块的周长(八联通),每个块的周长为4。 我的做法是求出联通块的个数cnt,这样总的周长是cnt*4,但是有些块的某些边不能计算在内,有些块整个周长都不能计算在内,处理这个问题的方法是找一个块能够与多少块直接相连(最多有四个,上下左右),假设与x个块相连,再把每个块的x加起来,就是不需要计算在内的边数和,这样再用cnt*4减去就是真正的周长了。#include <cstdio>#i原创 2017-10-14 17:11:22 · 319 阅读 · 0 评论