随笔分类 -  贪心

摘要:ASequenceProblemMyTags(Edit)Source:-Sealed-Timelimit:1secMemorylimit:256MSubmitted:77,Accepted:9ASequenceProblemAfterhavingcompetedonTheTonghuaareainvitationaltournament,Yejinrucameupwiththisproblem:givennintegersa[1]...a[n],youshouldfindoutthelongestcontinuessubsequencea[i]...a[i+k-1]whichsatisfied 阅读全文
posted @ 2013-06-01 21:24 yejinru 阅读(212) 评论(0) 推荐(0) 编辑
摘要:這次比賽太水了,怎麼可以把A題過了,然後把D題小數據過了就可以進決賽?!(很顯然,我的修行還不夠,沒能進。。。)题目列表 > 无尽的编号时间限制: 1000ms 内存限制: 256MB描述在一条公路上,将要依次建造N座建筑。在每个建筑建成之后,都会用一个01串来给它编号。整条公路从起点到终点,所有建筑的编号都严格按照字典序递增的顺序来排列,而每在一个新的地方建起一个建筑时,它的编号会按以下规则确定:1) 编号要比前一个建筑(起点方向)的字典序大,比后一个建筑(终点方向)的字典序小3) 编号一定以1结尾2) 编号要尽可能短,满足该条件时,字典序尽可能小最开始时,公路的起点和终点上各有一个建 阅读全文
posted @ 2013-04-20 17:44 yejinru 阅读(320) 评论(1) 推荐(0) 编辑
摘要:吉哥系列故事——完美队形IITime Limit: 3000/1000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 354Accepted Submission(s): 99Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则就是新的完美队形: 1、挑出的人保持原队形的相对顺序不变,且必须... 阅读全文
posted @ 2013-03-24 18:19 yejinru 阅读(300) 评论(0) 推荐(1) 编辑
摘要:/* * 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1028 * 顺子:三个相连的数字 * 刻子:三个相同的数字 * 对子:两个相同的数字 * 和牌:m个顺子或者刻子加上一个对子 * 现在给出3*m+1个牌,问能不能够和牌,能够和牌的牌号分别可以是。。。 * * 分析: * 直接贪心加枚举对子,然后再判能不能够和牌 * * */#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using n 阅读全文
posted @ 2012-12-29 14:54 yejinru 阅读(322) 评论(0) 推荐(0) 编辑
摘要:/* * 分析: * 贪心+高精度。。。尽量凑3,不足凑2 * * */http://www.lydsy.com/JudgeOnline/problem.php?id=1263import java.util.Scanner;import java.math.*;public class Main{ public static void main(String [] args){ BigInteger ans; BigInteger th = BigInteger.valueOf(3); int n; Scanner cin = new Scanner(System.in); ... 阅读全文
posted @ 2012-12-18 12:01 yejinru 阅读(340) 评论(0) 推荐(0) 编辑
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1029/* * 题目: * 每个任务需要ai时间完成,并且需要在时间bi或之前完成,问如何安排任务完成顺序,使得完成 * 任务的数量最多 * * 分析: * 贪心,先对期限排序,然后用最大堆维护需要完成的时间ai * 1.当now + ai <= bi时,ans + 1 ,更新now,把ai插入到堆中 * 2.当now + ai > bi时,若堆的最大元素大于ai时,将该元素(aj,bj)替换为ai,得到的序列答案 * 不会减少。因为替换之后,时间期限bi必定大于bj,所以可以完成该任 阅读全文
posted @ 2012-12-17 11:49 yejinru 阅读(189) 评论(0) 推荐(0) 编辑
摘要:Coin QuestionMy Tags(Edit)Source:ACM GroupTime limit: 1 secMemory limit: 64 MSubmitted: 234,Accepted: 131Every HCPC(HIT Collegiate Programming Contest), Participants will check if Robin has set a problem. The reason is so obvious -- he has been so weak, how hard can his problem be.This year, traditi 阅读全文
posted @ 2012-10-07 13:03 yejinru 阅读(359) 评论(0) 推荐(0) 编辑
摘要:代码如有错,请指出找规律题。。。打的表如下:View Code n 满足有公因子且不整除的数的个数 满足为奇数的个数(要求的答案)1 0 02 0 03 0 04 0 05 0 06 1 17 0 18 1 29 1 310 3 411 0 412 3 513 0 514 5 615 4 616 4 617 0 618 7 719 0 720 7 821 6 822 9 923 0 924 9 1025 3 1126 11 1227 6 1228 11 1329 0 1330... 阅读全文
posted @ 2012-09-09 18:24 yejinru 阅读(972) 评论(0) 推荐(0) 编辑
摘要:67270642012-09-09 17:39:14Accepted42780MS212K853 BG++若代码有错,请指出^^分析: 相当于将十进制转换为8进制。。。View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 5 using namespace std; 6 7 int n, m, l, ans; 8 int a[20]; 9 int p[11];10 11 int main()12 {13 p[0] = 1;14 for (int i = 1; i 阅读全文
posted @ 2012-09-09 17:41 yejinru 阅读(241) 评论(0) 推荐(0) 编辑
摘要:/*题目: 有n对新人,他们的婚礼时间分别为[s,t],他们的习俗是需要牧师能够对新人 进行祝福,要求牧师的祝福时间超过他们婚礼的持续时间的一半。问只有一个 牧师的话能不能成功主持所有这样婚礼分析: 贪心,可以先求出所有新人所需要祝福的时间,由于改时间超过婚礼的一半, 所以在[s,t]的中间时刻一定是要祝福新人,比如[1,5]时,2,3,4均要祝福; [1,4]时,2,3需要祝福,所以可以定义 ms:必须在祝福的最晚起始时间, me:必须在祝福的最早终止时间。 我们通过对ms进行排序,若相等则按me进行排序,再判断是否符合即可*/#incl... 阅读全文
posted @ 2012-06-13 14:17 yejinru 阅读(269) 评论(0) 推荐(0) 编辑
摘要:/*贪心: 当为6*6时,只能用一个盒子装 当为5*5时,可以每一个多装11个1*1的盒子 当为4*4时,可以先装2*2的盒子,每一个4*4的可以装5个2*2,若2*2不够,则装1*1的 当为3*3时,每一个可以装4个3*3,若最后不足4个,先用2*2的装,空余的位置用1*1装 当为2*2时,每一个可以装9个2*2的,最后有剩余装1*1的 若最后还有1*1的,每36个可以装一盒,多的算多一盒*/#include <iostream>#include <cstdio>using namespace std;#define X 7int a[X];int main(){ f 阅读全文
posted @ 2012-04-07 21:09 yejinru 阅读(158) 评论(0) 推荐(0) 编辑
摘要:/*题目:下列区间可以在数轴上分成最少多少个区间块分析:这题主要是贪心的做法,对输入的区间按照左边的值进行排序后,然后开始向后枚举每个后面的区间的前边的值是否小于等于起初的最大能到右面的最大值,符合的话,在更新一下起初的能到达右面的最大距离,比如2-54-8的话,由于第一个的右值为5,而枚举到第二个区间时,4<5,而8比5大,所以又可以到达8,更新一下,具体看代码*/#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>usingnamespacestd; 阅读全文
posted @ 2012-04-06 15:42 yejinru 阅读(212) 评论(0) 推荐(0) 编辑
摘要:/*一般我们的做法都是正向思维,即先对横坐标排好序,再枚举横坐标的整点,然后贪心做,其实这样做是很费力的。可以逆向思维考虑一下: 最多只有1000的点,我们可以先预处理完以该点为圆心,半径为d的圆与横坐标的左右交点 (当然还可能只有1个,或者没有),然后分别储存到结构体的两个关键字中,然后尽量再枚举 后面的点的区间与前面的点的区间(两个关键字构成的区间)有交集(贪心,因为事先排好序), 再向后面延展的同时,使得雷达的数量最小化,直到遇到没有交集的点为止 (我的文字可能不清晰,具体看代码)*/#include <cstdio>#include <iostream>#inc 阅读全文
posted @ 2012-04-05 21:18 yejinru 阅读(164) 评论(0) 推荐(0) 编辑
摘要:分析: 贪心算法 当n为偶数时,例如:1 2 3 4 5 6,可知,分开的两支队伍为 1 3 5与2 4 6时等待时间最小。 当n为奇数时,例如1 2 3 4 5时,可知,分开的两支队伍为 1 3 4与2 4时总等待时间最小,若n为奇数时,所以每次总把最小的数放在最长的队列中时, 总等待时间最小#include <iostream>#include <cstdio>#include <algorithm>using namespace std;#define X 1005int d[X],n,ans;int main(){ freopen("sum 阅读全文
posted @ 2012-03-17 20:13 yejinru 阅读(189) 评论(0) 推荐(0) 编辑
摘要:#include <cstdlib>#include <iostream>#include <cstdio> using namespace std;#define X 150001typedef struct node{ int id,m; int key; //按顺序}node;struct node f[X];int cmp(const void *a,const void *b){ struct node *c=(node *)a; //强转 struct node *d=(node *)b; if(d->m==c->m) //如果相等, 阅读全文
posted @ 2012-02-29 22:37 yejinru 阅读(175) 评论(0) 推荐(0) 编辑
摘要://贪心法,使用排序函数,每次都找最便宜的牛奶,然后判断够没够重量#include <iostream>#include <algorithm>#define X 5010using namespace std;typedef struct milk //定义牛奶结构体{ int p; int a;}milk;int cmp(milk a,milk b) //对牛奶结构体排序{ return a.p<b.p; }int main(){ int n,m; freopen("sum.in","r",stdin); freopen 阅读全文
posted @ 2012-02-29 22:37 yejinru 阅读(283) 评论(0) 推荐(0) 编辑