uva10670
来源:互联网 发布:java webservice部署 编辑:程序博客网 时间:2024/06/05 20:27
公司要你要完成N份任务,但是你是不可能全部完成的,所以需要雇佣别人来做,做到剩下M份时,自己再亲自出马。现在有个机构,有两种付费方式,第一种是每付A元帮你完成1份,第二种是每付B元帮你完成剩下任务的一半。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn = 105;char str[maxn];int n, m, l;struct node { char name[maxn]; int half; int per; int money;}p[maxn];void deal (int j) { int k = 0,i; for (i = 0; i < strlen (str); i++) { if (str[i] != ':') k++; else break; } memcpy (p[j].name, str, sizeof (str)); p[j].name[k] = '\0'; int sum = 0; for (i = k + 1; i < strlen (str); i++) { if (str[i] != ',') sum = sum * 10 + str[i] - '0'; else { p[j].per = sum; sum = 0; } } p[j].half = sum; }void cal(int cur) { int num = n; int sum = 0; while(num/2>=m && (p[cur].per*(num-num/2))>=p[cur].half) { sum += p[cur].half; num/=2; } sum += (num-m)*p[cur].per; p[cur].money = sum;}int cmp (const node & x, const node & y) { if (x.money < y.money) return true; else if (x.money > y.money) return false; else return strcmp (x.name, y.name) < 0 ? true: false;}int main() { int kase; int cas = 1; scanf("%d", &kase); int i, j; while(kase--) { printf("Case %d\n", cas++); scanf("%d%d%d", &n, &m, &l); getchar(); for(i=0; i<l; i++) { gets(str); deal(i); cal(i); } sort(p, p+l, cmp); for (j = 0; j < l ; j++) printf ("%s %d\n", p[j].name, p[j].money); } return 0;}
0 0
- uva10670
- uva10670
- uva10670
- UVA10670-Work Reduction
- uva10670 - Work Reduction
- uva10670 - Work Reduction(减轻工作)
- [贪心&&排序]UVA10670 Work Reduction
- redisMQ消费消息的机制
- 含有max、绝对值等式化简汇总
- 知乎上35条神回复,针针见血,看完整个人通透多了
- Dragger2 入门使用用法 参照博文自己领悟使用解析
- win 磁盘重分区
- uva10670
- 安装node.js可能出现的问题及解决方法
- 晶体和晶振
- mysql的一些经典用法(后面继续补充 )
- Android平台实现开机调试system_process
- oracle中的number类型用法及举例
- Centos 6.5 安装swftools
- Win7启动无桌面(explorer.exe)
- Torch7