
排序查找
文章平均质量分 73
lin375691011
呵呵
展开
-
POJ 2442 Sequence
这道题的数据真强大,各种写法不是MLE就是TLE,好不容易换了这种写法终于AC了。 题目大意: 输入m个数集,每个含n个数,求从每个集合取一个数后,按非降序输出前n小的和。 用优先队列做的,注意限制队列元素个数,否则会超时超内存的。 下面是代码: #include #include using namespace std; int n,m,a[4000005],b[4000005原创 2013-08-16 19:21:29 · 5378 阅读 · 0 评论 -
POJ 2513 Colored Sticks
这题让我明白了POJ原来多组数据测试是这么回事啊!! 大致题意: 给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。 解题思路: 木棒相当于边,两端相当于两个节点,建图,判断是否联通,是否是欧拉图。 建图并使用并查集判断联通时需要字典树,不能用map,会超时的(吐槽它为什么这么慢!!!)。 当无向原创 2013-08-17 19:31:11 · 4006 阅读 · 0 评论 -
POJ 1442 Black Box
这个题用优先队列很好过。 题目大意: 给出两种操作如下:( ADD GET ) 操作 当GET取第几大 所有已添加元素 输出的元素 1 ADD(3) 0 3 2 GET 1 3原创 2013-08-17 15:56:56 · 4643 阅读 · 0 评论 -
POJ 3253 Fence Repair
这是一个可以用哈夫曼树来解决的题,以可以用优先队列。 题目大意: FJ需要修补牧场的围栏,他需要 N 块长度为 Li 的木头(N planks of woods)。开始时,FJ只有一块无限长的木板,因此他需要把无限长的木板锯成 N 块长度 为 Li 的木板,Farmer Don提供FJ锯子,但必须要收费的,收费的标准是对应每次据出木块的长度,比如说测试数据中 5 8 8,一开始,FJ原创 2013-08-16 10:33:59 · 3997 阅读 · 0 评论 -
POJ 2002 Squares
这题的题意是这样的: 有一堆平面散点集,任取四个点,求能组成正方形的不同组合方式有多少。 相同的四个点,不同顺序构成的正方形视为同一正方形。 解题思想: 建立点的哈希表,枚举任意两点,计算出符合条件的其余两点,在哈希表中寻找,找到计数加一,因为不同序列构成的视为同一个正方形,最后计数需除以四再输出。 下面是代码: #include #include struct po原创 2013-08-16 09:31:01 · 3916 阅读 · 0 评论 -
POJ 1840 Eqs
这个题是对哈希表的运用练习。 题目大意: 已知a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 ,其中系数 ai∈[-50,50] 自变量xi∈[-50,0)∪(0,50],给出系数a1~a5, 求方程解的个数。 不过直接用的map,这算不算哈希表?? 下面是代码: #include #include using namespace std; in原创 2013-08-15 19:50:09 · 4349 阅读 · 0 评论 -
POJ 3274 Gold Balanced Lineup
说实在话对于英文渣渣的我读题真的很难。 下面是题目大意,对提供者表示感谢。 代码操作如下: 1、先将十进制数转换成二进制数记录保存。 2、然后逐行累加,得出到某只牛时某种特征出现了几次。 3、每行减去第一个数,得出一个序列,若两头牛之间是平衡区间的话,各个特征的增长数是相等的,及减掉第一个数得出来的序列是相等的。 4、寻找距离最远的两个相等的序列,得出答案。 我们可以由样例举原创 2013-08-15 10:21:25 · 4736 阅读 · 0 评论 -
POJ 3349 Snowflake Snow Snowflakes
这是一个水水的水题,排序再查找。 贴代码: #include #include struct node { int a[6]; }snow[100005]; int cmp1(const void *a,const void *b) { return *(int *)a-*(int *)b; } int cmp2(const void *a,const void *b) {原创 2013-08-14 20:39:01 · 3984 阅读 · 0 评论 -
POJ 2488 A Knight's Journey
标准的DFS,只不过是坑爹的字典序坑到了无数人…… 题目大意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。 注意事项: 只有一条,那就是字典序!!!!!!!! 对于马的位置,DFS搜索时需要按这个顺序来: 这样搜出来的第一条路就是字典序最小的路了。 还有一条就是因为这条路可以走过棋盘上的所有的点原创 2013-08-19 10:20:02 · 3846 阅读 · 0 评论 -
POJ 2388 Who's in the Middle
这也是水题一道啊,STL各种解法,水水的。 于是乎借着这个题学习了一下nth_element。 下面是水水的代码: #include #include using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { int a[10001],i; for(i原创 2013-08-14 10:22:33 · 3752 阅读 · 0 评论 -
POJ 1035 Spell checker
简单的字符串查找题,暴力搜索就能过。 重点是细节,细节有没有!!! 爆搜差不多150毫秒,我建了一个长度哈希表,成了110毫秒。 下面是代码: #include #include #include char dic[10005][18],s[20]; int cmp(const void *a,const void *b) { return *(int *)a-*(int *原创 2013-08-13 15:59:00 · 4198 阅读 · 0 评论 -
POJ 2503 Babelfish
周赛的时候刚做过,还不知道是POJ的题嘞。 这道题直接用Map,不会出任何问题。 下面是代码: #include #include #include #include #include using namespace std; int main() { int i,flat,in,p; map map1; char a[50],b[20],c[20];原创 2013-08-16 09:48:33 · 4037 阅读 · 0 评论 -
POJ 3273 Monthly Expense
题目大意: 给N个数,分成M组,每一组最大值的最小值是多少。每一组数必须是连续的。 解题思路: 用二分法来穷举最大值,求最小。是针对最大值的上界和下界二分。 下面是代码: #include int a[100005],n,m; bool does(int xian) { int sum=0,cnt=1; for(int i=0; i<n; i++原创 2013-12-30 20:07:35 · 4433 阅读 · 0 评论 -
POJ 2299 Ultra-QuickSort
做完这题长知识了,原来求逆序数可以用排序的交换次数来计算。 但仅限于稳定的排序,用快排这类不稳定的办不了。 下面是代码: #include #include long long a[500005],temp[500005]; long long ans; void mergearray(int first, int mid, int last) { int i = first,原创 2013-08-14 15:27:13 · 3831 阅读 · 0 评论