上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 20 下一页
摘要: 题目大意:给一个整数序列,他们的和为0。通过对这些数进行移动,使得他们全部为0。在相邻两个数之间移动一个单位(如2,-1变成1,0)为一个单位的工作量,求最小的工作量。 用贪心解决,首先使第一个数为0,然后在考虑第二个数,以此类推。在把第一个数移为0的过程中,先考虑最近的需求或供给,此为贪心。 1 #include 2 #define MAXN 100000+10 3 4 int a[MAXN]; 5 6 int main() 7 { 8 #ifdef LOCAL 9 freopen("in", "r", stdin);10 #endif11 int n 阅读全文
posted @ 2013-08-12 17:02 xiaobaibuhei 阅读(231) 评论(0) 推荐(0)
摘要: 题目大意:给出一些数,把他们相加,计算最小代价。 很明显感觉是贪心,不过开始想错了,只是把他们排了一下序然后相加,想的太简单了。。。属于哈夫蔓树的模型吧,看别人的代码,新试了一下优先队列,还要好好看看优先队列的东西。 1 #include 2 #include 3 using namespace std; 4 5 struct Node 6 { 7 int x; 8 bool operator a.x;10 }11 };12 13 int main()14 {15 #ifdef LOCAL16 freopen("in", "r", stdin);1... 阅读全文
posted @ 2013-08-12 14:55 xiaobaibuhei 阅读(162) 评论(0) 推荐(0)
摘要: 题目大意:有1X1,2X2 ... 5X5,6X6六种类型的物品,把他们装进6X6的盒子里,求使用的最少盒子数。 贪心吧,其实一看就知道思路了,算是常识吧,装物品时通常都是先装大的,再在其余空间放小的。一点一点敲代码就好了。 1 #include 2 3 int main() 4 { 5 #ifdef LOCAL 6 freopen("in", "r", stdin); 7 #endif 8 int a[7]; 9 while (scanf("%d%d%d%d%d%d", &a[1], &a[2], &a[3] 阅读全文
posted @ 2013-07-31 21:44 xiaobaibuhei 阅读(137) 评论(0) 推荐(0)
摘要: 题目大意:鞋匠有n个任务,第i个任务要花费ti天,同时第i个任务每耽误一天要有fi的罚金。求完成所有任务的最小罚金。 虽然知道是贪心,可是并不确定如何作贪心选择,只好“取经”了...假如有两个任务i和j,先做i的话罚金就是ti*fj,先做j的话就是tj*fi (其实我也想到这个了,就是不知道怎么用),可以得到f/t大的任务应该先做。对贪心有多了一点认识了,贪心做出当前情况下的最好选择,与子问题无关,而动态规划中做出的选择与子问题有关系,要依赖子问题的结果。 1 #include 2 #include 3 using namespace std; 4 #define MAXN 1000... 阅读全文
posted @ 2013-07-30 23:13 xiaobaibuhei 阅读(459) 评论(0) 推荐(0)
摘要: 题目大意:从1开始往后写数字,构成一个如下的字符串 123456789101112... 。求第n位的数字是多少。 找规律,按数字的位数可以构建一个类似杨辉三角的东西,求出第n位是哪个数的第几位即可。 1 #include 2 #include 3 4 int main() 5 { 6 #ifdef LOCAL 7 freopen("in", "r", stdin); 8 #endif 9 int table[9] = {0};10 int base = 9;11 for (int i = 1; i <= 8; i++)12 {13 ... 阅读全文
posted @ 2013-07-29 01:43 xiaobaibuhei 阅读(340) 评论(0) 推荐(0)
摘要: 题目大意:给一个不含括号、只有+和*运算的表达式,数字的范围在1到20之间,算出计算结果的可能最大值和最小值。 贪心,如果加法优先级比乘法高,那么得出的结果为最大值。(a+b)*c = a*c + b*c >= a+b*c。同理,如果乘法优先级比加法高,得出的结果为最小值。 1 #include 2 #include 3 4 int main() 5 { 6 #ifdef LOCAL 7 freopen("in", "r", stdin); 8 #endif 9 double lmin, lmax, lstack[30];10 int top;11 阅读全文
posted @ 2013-07-27 16:06 xiaobaibuhei 阅读(133) 评论(0) 推荐(0)
摘要: 题目大意:给n个数,找一个数A使得A与这n个数的差的绝对值最小。输出A最小的可能值,n个数中满足A的性质的数的个数以及满足A性质的不同的数的个数(不必从这n个数中挑选)。 看见绝对值就想到了数轴上点之间的距离,从寻找中位数入手。本来是打算把所有数都保存然后排序的,忽然就看到了题目上所有数都小于65536,就想到用计数排序,然后就敲啊敲,提交!正为节省了点空间而小小自得呢,就WA了... -_-|| ,再看看感觉也没什么问题,只好搜代码了,看到别人都是直接存的数然后进行处理,就想哪出问题了,看到那些重复的数就明白了,还以为用计数(开始想用游程编码来着)方法处理重复的数不错了,其实是我错了,... 阅读全文
posted @ 2013-07-25 11:04 xiaobaibuhei 阅读(534) 评论(0) 推荐(0)
摘要: 题目:给一个方程,求解方程的解。已给出解的范围,并且可知方程等号左侧的函数是递减的,可用二分法进行试探,直到得出给定误差范围内的解。 1 #include 2 #include 3 #define EPSILON 1e-9 4 5 int p, q, r, s, t, u; 6 7 double f(double x) 8 { 9 return p*exp(-1.0*x) + q*sin(x) + r*cos(x) + s*tan(x) + t*x*x + u;10 }11 12 int main()13 {14 #ifdef LOCAL15 freopen("in... 阅读全文
posted @ 2013-07-24 19:00 xiaobaibuhei 阅读(158) 评论(0) 推荐(0)
摘要: 题目大意:也是区间覆盖问题,是关于书籍查询的,和UVa 10020差不多,不过比那个简单,不用判断是否能覆盖,直接输出最小个数就行了。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 5000+10 6 7 struct Interval 8 { 9 int l, r;10 };11 12 Interval interval[MAXN];13 14 bool cmp(const Interval a, const Interval b)15 {16 if (a.l != b... 阅读全文
posted @ 2013-07-24 16:05 xiaobaibuhei 阅读(173) 评论(0) 推荐(0)
摘要: 题目大意:以[L, R]的形式给出线段的左右端点,给出一些线段,判断是否能完全覆盖区间[0, m],如果能,算出所需线段的最小个数并输出线段。 区间覆盖问题,用贪心策略。“ 突破口是区间包含和排序扫描,不过要先进行一次预处理,每个区间在[s, t](对应本题的[0, m])外的部分都应该先被切掉。在预处理后,在相互包含的情况下,小区间显然不应该被考虑。把各区间按照左边界从大到小排序。如果区间1的起点不是s, 无解,否则选择起点在s的最长区间。选择区间[ai, bi]后,新的起点应该设置为bi,并且忽略所有区间在bi之前的部分,就像预处理一样。” ——摘自《算法竞赛入门经典》 虽然说的意... 阅读全文
posted @ 2013-07-24 16:00 xiaobaibuhei 阅读(408) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 20 下一页