郑州大学2022-2023第一学期算法设计与分析-实验6(第四章)
·
1 月饼
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 3010;
pair<double, double> a[N];
bool cmp(pair<double,double> a, pair<double,double> b){
return (a.second / a.first) > (b.second / b.first);
}
int main()
{
int n; double m; cin >> n >> m;
for(int i = 1; i <= n; i ++) cin >> a[i].first;
for(int i = 1; i <= n; i ++) cin >> a[i].second;
sort(a + 1, a + n + 1, cmp);
double res = 0;
for(int i = 1; i <= n; i ++)
{
double v = a[i].first, w = a[i].second;
if(m <= v)
{
res += (double)1.0 * m / v * w;
break;
}
res += w;
m -= v;
}
printf("%.2lf\n", res);
}
2 汽车加油问题
#include <iostream>
#include <cstring>
#include <algorithm>
#define int long long
using namespace std;
const int N = 100010;
signed main()
{
int n, k, x; cin >> n >> k;
int dis = n, sum = 0, res = 0;
bool f = true;
for(int i = 1; i <= k + 1; i ++)
{
cin >> x;
if(x > n) f = false;
if(sum + x > dis)
{
dis = sum + n;
res ++;
}
sum += x;
}
if(f) cout << res << '\n';
else cout << "No Solution!\n";
}
3 会场安排问题
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int s[101], e[101];
signed main()
{
int k; cin >> k;
for (int i = 1; i <= k; i++)
cin >> s[i] >> e[i];
sort(s + 1, s + k + 1);
sort(e + 1, e + k + 1);
int res = 0;
for (int i = 1, j = 1; i <= k; i++)
{
if (e[j] > s[i]) res ++;
else j++;
}
cout << res << '\n';
}
4 程序存储问题
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define int long long
using namespace std;
signed main()
{
int n, m; cin >> n >> m;
vector<int> vec;
for(int i = 1, x; i <= n; i ++)
{
cin >> x;
vec.push_back(x);
}
sort(vec.begin(), vec.end());
int res = 0;
for(auto x : vec)
{
if(x > m) break;
m -= x;
res ++;
}
cout << res << '\n';
}
5 工厂机器安排
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define int long long
using namespace std;
bool cmp(pair<int,int> a, pair<int,int> b){
return a.first == b.first ? a.second > b.second : a.first > b.first;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n, m, x, y;
vector<pair<int,int>> mac, tas;
vector<int> cnt(110, 0);
int num, sum;
while(cin >> n >> m)
{
num = 0, sum = 0;
mac.clear(); tas.clear();
for(int i = 0; i < 110; i ++) cnt[i] = 0;
for(int i = 0; i < n; i ++)
cin >> x >> y, mac.push_back({x, y});
for(int i = 0; i < m; i ++)
cin >> x >> y, tas.push_back({x, y});
sort(mac.begin(),mac.end(), cmp);
sort(tas.begin(),tas.end(), cmp);
for(int i = 0, j = 0; i < m; i ++)
{
while(j < n && mac[j].first >= tas[i].first)
{
cnt[mac[j].second] ++;
j ++;
}
for(int k = tas[i].second; k <= 100; k ++)
{
if(cnt[k])
{
cnt[k] --;
num ++;
sum += (500 * tas[i].first + 2 * tas[i].second);
break;
}
}
}
cout << num << " " << sum << '\n';
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)