2012年10月15日
摘要: 大意:数轴上有n个闭区间[ai,bi],选择尽量少的区间覆盖一条指定的线段[s,t]。思路:贪心,具体见刘汝佳白书P154。把各区间按照a从小到大排序。如果区间1的起点不是s,无解,否则选择起点在s的最长区间。选择此区间[ai,bi]后,新的起点设置为bi,然后经过依次扫描之后就可以得出最小的线段数。并用另一个结构体储存路径。另外:排序可有可无,有了只不过是一种优化措施,没有排序的话程序也对,最主要的算法还是贪心。CODE:#include<iostream>#include<cstdlib>#include<cstring>#include<algo 阅读全文
posted @ 2012-10-15 21:50 有间博客 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 贪心,用到了许多小技巧,向下取整等。CODE:#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>usingnamespacestd;intu[4]={0,5,3,1};//以三的剩余个数进行分类intmain(){intone,two,three,four,five,six;while(scanf("%d%d%d%d%d%d",&one,&two,&three,&four,&five,&six) 阅读全文
posted @ 2012-10-15 19:53 有间博客 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 大意:鞋匠接收了许多订单,有些鞋子有一定的修理期限,超过了这个期限就会罚款,让你求出最少赔款的方案,如果有多个相同的,请按输入的顺序从小到大输出。思路:可以证明是简单的贪心,即时间越早,而罚款数越大则越先修。按照fine/cost排序即可。CODE:#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>usingnamespacestd;#defineMAXN1001stru 阅读全文
posted @ 2012-10-15 18:06 有间博客 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一串那样的数字,很有规律的,总共有2147483647位,然后问你第 n 位上的数字是多少。思路:具体做法是用两个数组保存上面的数据。1、[] 数组表示前面所有段的位数,a[i]表示前i段一共有多少位。2、保存那一段具体的位数,b[]数组存储的是序列12345678910111213…各位位数对应数组的值,即b[1]=1, b[2]=2, b[3]=3, b[4]=4, b[5]=5, b[6]=6, b[7]=7, b[8]=8, b[9]=9, b[10]=1,b[11]=0, b[12]=1,b[13]=1, b[14]=1,b[15]=1, b[16]=1,b[17]=2, 阅读全文
posted @ 2012-10-15 17:26 有间博客 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 大意:判断最多有多少点在同一直线上。思路:可以通过枚举所有点加判断三点共线去解决,即(y2-x1) /(x2-x1) = (y3-y1)/(x3-x1);注意输入格式比较特别。CODE:#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>#include<map>usingnamespacestd;#defineMAXN10001intx[MAXN],y[MAX 阅读全文
posted @ 2012-10-15 15:35 有间博客 阅读(265) 评论(0) 推荐(0) 编辑