贪心算法
类型总是向下兼容的,有时候double替换int数据更加方便
使用
vector a(100);
sort(a.begin(), a.begin() + n);
的方式节省空间
贪心算法中贪心策略的选择
开始时间 结束时间 持续时间
FatMouse’ Trade
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct goods {
double rate;
double j;
double f;
};
bool cmp(goods g1, goods g2) {
return g1.rate > g2.rate;
}
void func() {
int n;
double m;
while ((cin >> m >> n) && (n != -1 && m != -1)) {
vector<goods> a(n);
for (int i = 0;i < n;i++) {
cin >> a[i].j >> a[i].f;
a[i].rate = a[i].j / a[i].f;
}
sort(a.begin(), a.end(), cmp);
double ans = 0;
double sum = 0;
for (int i = 0;i < n;i++) {
if (sum + a[i].f <= m) {
sum += a[i].f;
ans += a[i].j;
}
else {
ans += (m - sum) * a[i].rate;
break;
}
}
printf("%.3lf\n", ans);
}
}
int main() {
func();
return 0;
}
今年暑假不 AC
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct show {
int start;
int end;
bool operator <(const show& s) {
return end < s.end;
}
};
vector<show> a(100);
int main() {
int n;
while (cin >> n && n != 0) {
for (int i = 0;i < n;i++) {
cin >> a[i].start >> a[i].end;
}
sort(a.begin(), a.begin() + n);
int now = 0;
int ans = 0;
for (int i = 0;i < n;i++) {
if (a[i].start >= now) {
now = a[i].end;
ans++;
}
}
cout << ans << endl;
}
return 0;
}