随笔分类 -  贪心

摘要:表示cin很不靠谱,10^5的数据量都能TLE 改成scanf 300+ms。My Code:#include <iostream>#include <algorithm>#include <cstdio>#include <fstream>using namespace std;const int N = 100005;class phage{public: int di; int ti;}p[N];bool cmp(phage a, phage b){ if(a.ti != b.ti) return a.ti > b.ti; else 阅读全文
posted @ 2011-10-07 19:05 AC_Von 阅读(199) 评论(0) 推荐(0) 编辑
摘要:典型的贪心题目,做过很久了,今天复习贪心,回头看了看,顺便把报告补上。我的思路是做一个标记变量flag和一个计算的变量k(k = n),flag初始为0,每次找一个满足(l <= l' && w <= w' && !flag)的序列,并将序列元素的flag标为1,总序列就会减少一个数所以k--,找完一个序列,结果ans++。然后回头再找第一个falg = 0的元素,确定新的序列。如此循环。。。代码:#include <iostream>#include <cstdio>#include <cstdlib& 阅读全文
posted @ 2011-08-19 19:34 AC_Von 阅读(160) 评论(0) 推荐(0) 编辑
摘要:这道题整了一下午,最后还是看别人的解题报告弄出来的,先说说我的理解吧。大体处理思路是利用贪心思想,每次取权值最大的节点,不断的将权值最大节点与它的父节点合并。过程:1、初始时将序列中的time[i]都置为1,w[i]置为c[i];2、查找最大的w[i], 返回其位置;3、将该位置的c[]与它的父节点c[]合并(合并过程就是C_i / T_i,C_i = c[该节点] + c[父节点],T_i = time[该节点]+time[父节点])得到新的父节点w[](w[父节点] = C_i / T_i),如果有节点与pos相连,让它指向pos的父节点;4、重复2、3,知道合并完;至于如何求出结果:初. 阅读全文
posted @ 2011-08-19 18:31 AC_Von 阅读(1604) 评论(0) 推荐(0) 编辑
摘要:这道题思路。。。想破脑袋没想起来,开始按A排序,后来按B排序,再后来按A/B排序,然后正序走一遍,逆序走一遍,都不对!最后看的解题报告,崩溃!!!按B-A排序。至于证明,不会!这道题告诉我们,关于贪心问题,只要涉及到排序,+,-,*,/,都试试,没准有一个可以的。。。#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;const int N = 1007;struct node{ int a; int b;}num[N];int cmp(const void * 阅读全文
posted @ 2011-08-19 10:01 AC_Von 阅读(307) 评论(0) 推荐(0) 编辑
摘要:VonGang原创,如有错误,欢迎指正。转载请注明:http://www.cnblogs.com/vongang/ 如图,先求出每一个岛屿所对应的雷达区间,让后利用贪心思想即可,类是会场布置问题。(注意:c语言qsort函数对浮点操作时可能有点误差,本人因为这个贡献出无数WA。。。) #include <stdio.h>#include <stdlib.h>#include <math.h>#define N 1002struct node{ double s; double e;}num[N];int cmp(const void * a, const v 阅读全文
posted @ 2011-08-18 21:25 AC_Von 阅读(270) 评论(0) 推荐(0) 编辑
摘要:很典型的贪心算法,不过要注意奇偶,比如:S: 4 6E: 5 7这个例子答案是多少?答案是20。5和6重合,所以要分两次搬完。从上边可以看出当E为奇数时,如果下一个的S = E+1,则要多搬一次;同理当E为偶数,如果下一个的S = E-1, 也要多搬一次;代码:#include <stdio.h>#include <stdlib.h>#define N 207struct node{ int e; int s;}num[N];int cmp(const void * a, const void *b){ return (*(struct node*)a).e - (*( 阅读全文
posted @ 2011-08-18 10:01 AC_Von 阅读(694) 评论(0) 推荐(0) 编辑
摘要:最优合并问题Time Limit:1000MS Memory Limit:65536KTotal Submit:19 Accepted:8Description给定k 个排好序的序列s1, s2,……, sk, 用2 路合并算法将这k 个序列合并成一个序列。假设所采用的2 路合并算法合并2 个长度分别为m和n的序列需要m + n -1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。为了进行比较,还需要确定合并这个序列的最差合并顺序,使所需的总比较次数最多。对于给定的k个待合并序列,计算最多比较次数和最少比较次数合并方案。Input输入数据的第一行有1 个正整数k( 阅读全文
posted @ 2011-07-24 16:53 AC_Von 阅读(2534) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示