HDU acm step:Chapter one section three(简单贪心)
来源:互联网 发布:幼儿园软件设施 编辑:程序博客网 时间:2024/06/05 02:36
这次的题目除了第四题和最后一题,都是贪心题。
1.3.1 Moving Tables
策略:将处于对面的当作是同一个位置,每次占用在相应的位置加一,全部数完之后求出最大的占用的那个值,就是最大的时间了。开始出现的错误是没有分开求占用。
1.3.2 今年暑假不AC
策略:先拍结束时间,从小到大排序。在比较开始时间与上一次的结束时间。大于的表示可以。
1.3.3Tian Ji -- The Horse Racing
策略:
先排序。
首先比较最低的,前者的最低大于后者,直接比赛。
前者的最低小于后者,前者的最低与后者的最高比赛。
前者的最低等于后者的最低时:再比较两者的最高,
若前者的最高高于后者的最高,那么直接前者的最低与后者的最低比赛,前者的最高与后者的最高比赛。
若前者的最高低于后者的最低,那么直接前者的最低与后者的最高比赛。
若前者的最高等于后者的最高,那么再比较前者的最低与后者的最高,若相等,则全部相等。若小于,那么前者的最低与后者的最高比赛。
开始的做法忽略了等于的时候的若干种请款
1.3.4 第二小整数
求得最大和第二大,输出第二大。
1.3.5 Saving HDU
策略:单位体积价格非增排序,从头开始。
1.3.6 悼念512汶川大地震遇难同胞——老人是真饿了
策略:大米单价非减排序,从头开始取。
1.3.7 Crixalis's Equipment
策略:计算需要体积和占用体积的差值,将差值从从大到小排序,当差值相同时,选择需要体积大的排在前面。(但是这里有没有都是一样过了),然后从头开始取。
1.3.8 Who's in the Middle
排序,去中位值。(开始的做法是只有一组,然后一直报错。可是题目本身也没说有很多组啊!)
1.3.1
#include <bits/stdc++.h>using namespace std;int a[1100], b[1100];int main(){ int n; while(cin >> n && n != 0) { for(int i = 0; i < n; i++) { cin >> a[i]; } sort(a, a+n); for(int i = 0; i < n; i++) { cin >> b[i]; } sort(b, b+n); int ha = n-1, hb = n-1; int la = 0, lb = 0; int sum = 0; int i = 0, j = 0; while(ha >= la && hb >= lb) { if(a[la] > b[lb]) { la++; lb++; sum += 200; } else if(a[la] < b[lb]) { la++; hb--; sum -= 200; } else { if(a[ha] > b[hb]) { ha--; hb--; sum += 200; } else if(a[ha] < b[hb]) { hb--; la++; sum -= 200; } else { if(a[la] < b[hb]) { sum -= 200; la++; hb--; } else if(a[la] == b[hb]) { break; } } } } cout << sum << endl; } return 0;}
1.3.4
#include <bits/stdc++.h>using namespace std;int main(){ int t; cin >> t; while(t--) { int n; cin >> n; int maxn, second_maxn; int a; cin >> maxn >> second_maxn; n--; n--; if(maxn > second_maxn) { swap(maxn, second_maxn); } while(n--) { cin >> a; if(a <= maxn) { maxn = a; } else if(a > maxn && a < second_maxn) { second_maxn = a; } } cout << second_maxn << endl; } return 0;}
1.3.5
#include <bits/stdc++.h>using namespace std;const int maxn = 1100;struct treasure1{ int pi, mi;};treasure1 treasure[maxn];bool cmp (treasure1 a, treasure1 b){ return a.pi > b.pi;}int main(){ int v, n; while(cin >> v && v != 0) { cin >> n; int sum = 0; for(int i = 0; i < n; i++) { scanf("%d%d", &treasure[i].pi, &treasure[i].mi); } sort(treasure, treasure+n, cmp); for(int i = 0; i < n && v > 0; i++) { if(treasure[i].mi <= v) { v = v - treasure[i].mi; sum += treasure[i].pi * treasure[i].mi; } else { sum += treasure[i].pi * v; v = 0; } } printf("%d\n", sum); }}
1.3.6
#include <bits/stdc++.h>using namespace std;const int maxn = 1010;struct dot{ double a, b;};dot dot1[maxn];bool cmp(dot i, dot j){ return i.a < j.a;}int main(){ int t; cin >> t; while(t--) { double money; int num; double sum = 0; cin >> money >> num; for(int i = 0; i < num; i++) { scanf("%lf%lf", &dot1[i].a, &dot1[i].b); } sort(dot1, dot1+num, cmp); for(int i = 0; i < num && money != 0; i++) { if(money > dot1[i].a*dot1[i].b) { sum += dot1[i].b; money -= dot1[i].a*dot1[i].b; } else { sum += (money/dot1[i].a); break; } } printf("%.2f\n", sum); } return 0;}
1.3.7
#include <bits/stdc++.h>using namespace std;struct cost{ int take, need;};cost cost1[10100];bool cmp(cost a, cost b){ if(a.need - a.take != b.need - b.take) return a.need - a.take > b.need - b.take; else return a.need > b.need;}int main(){ int t; cin >> t; while(t--) { int take1, n; cin >> take1 >> n; for(int i = 0; i < n; i++) { scanf("%d%d", &cost1[i].take, &cost1[i].need); } sort(cost1, cost1+n, cmp); int flag = 0; for(int i = 0; i < n; i++) { if(cost1[i].need > take1 || cost1[i].take > take1) { flag = 1; break; } else { take1 = take1 - cost1[i].take; } } if(flag == 0) { cout << "Yes" << endl; } else { cout << "No" << endl; } } return 0;}
1.3.8
#include <bits/stdc++.h>using namespace std;int a[10010];int main(){ int n; while(cin >> n) { for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } sort(a, a+n); cout << a[(n-1)/2] << endl; } return 0;}
- HDU acm step:Chapter one section three(简单贪心)
- HDU acm step:Chapter one section two
- [HDU]ACM Steps-Chapter One-Section 1
- [HDU]ACM Steps-Chapter One-Section 2
- [HDU]ACM Steps-Chapter One-Section 3
- Acm Step Chapter One Section Two—Rightmost Digit
- hdu ACM Step chapter 2
- HDU's ACM Step Section One -- A+B for Input-Output Practice
- hdu ACM Steps 做题笔记(Chapter One)
- ACM Steps之二 (Section One)
- hdu ACM Steps 做题笔记(Chapter Two)(Section 1)
- One Day One Step 之贪心算法(1)
- USACO-Section 2.1 Sorting a Three-Valued Sequence (贪心)
- ACM Steps之一(Section One)
- Step-by-step learning C + +(chapter three summary____Library Types)
- 13/05/12 HDU chapter one 简单题
- 杭电ACM Steps中Chapter One ——Section Two 所有的ac代码及解析
- hdu acm step 2.3
- liunx设置时区
- AfxEnableControlContainer()
- Linux 第八周
- 二维数组去重
- GameMode vs GameState
- HDU acm step:Chapter one section three(简单贪心)
- hdu1556题解
- java垃圾清除算法
- MR-4.MapReduce压缩基本介绍
- 微服务构建大应用
- java中abstract详解
- Packet for query is too large
- 别名推送
- 一个仅供测试的百度地图的AK