Gym 101873K - You Are Fired - [贪心水题]
题目链接:http://codeforces.com/gym/101873/problem/K
题意:
现在给出 $n(1 \le n \le 1e4)$ 个员工,最多可以裁员 $k$ 人,名字为 $s_i$ 的员工的薪资为 $c_i(1 \le c_i \le 1e5)$。
已知必须节省下 $d(1 \le d \le 1e9)$ 元才能拯救公司,问要裁员哪些人。
题解:
薪资越高的人越要裁掉。
(这么个大水题,居然没人发现,交的人不多。可能是这套题英语阅读量有点烦人吧……)
AC代码:
#include<bits/stdc++.h> using namespace std; const int maxn=1e4+10; int n,d,k; struct P{ string s; int c; bool operator<(const P& oth)const { return c>oth.c; } }p[maxn]; int main() { cin>>n>>d>>k; for(int i=1;i<=n;i++) cin>>p[i].s>>p[i].c; sort(p+1,p+n+1); int sum=0; vector<int> ans; for(int i=1;i<=k;i++) { sum+=p[i].c; ans.push_back(i); if(sum>=d) break; } if(sum<d) cout<<"impossible"<<endl; else { cout<<ans.size()<<endl; for(int i=0;i<ans.size();i++) { cout<<p[ans[i]].s<<", YOU ARE FIRED!"<<endl; } } }
转载请注明出处:https://dilthey.cnblogs.com/