北理工的恶龙
来源:互联网 发布:mac软件汉化工具 编辑:程序博客网 时间:2024/04/28 03:03
【题】
北理工的恶龙
背景:
最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花 最少的学分数杀死恶龙,于是找到你寻求帮助。
输入:
第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n 行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l
输出:
如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “ bit is doomed! ”
- 2 3↵
- 5↵
- 4↵
- 7↵
- 8↵
- 4↵
- 11↵
- 2 1↵
- 5↵
- 5↵
- 10↵
- bit is doomed!↵
【分析】
输入n个龙头数,然后按从小到大排序。
输入m个勇士,然后按从小到大排序。
同时从小到大遍历龙头和勇士数组,只要符合“勇士的身高不小于龙头的直径”,就把勇士的身高加到sum里。
最后,如果龙头那个数组被遍历完了,说明龙都被杀死了,则输出sum;否则输出“bit is doomed!↵”
【代码】
#include <stdio.h>#include <stdlib.h>#define N 100int dragons[N];int heros[N];//升序排列int cmp( int *a, int *b){ return *a > *b;}int main(){int i, j, m, n;scanf("%d %d", &n, &m);getchar();//输入龙头for(i = 0; i < n; i++){ scanf("%d", &dragons[i]); getchar();}//输入勇士 for(i = 0; i < m; i++){ scanf("%d", &heros[i]); getchar();}//龙头排序qsort(dragons, n, sizeof(int), cmp);//勇士排序qsort(heros, m, sizeof(int), cmp);/*for( i=0; i < n; i++ )printf("%3d",dragons[i]);putchar('\n'); for( i=0; i < m; i++ )printf("%3d",heros[i]); */ int cost = 0; //校长的花费 int dragon_count = n; //剩余龙头数 for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { if(dragons[j] != -1 && heros[i] != -1 && heros[i] >= dragons[j]) { cost += heros[i]; dragons[j] = -1; //赋值为-1,表示龙[j]已被杀死 dragon_count--; //龙头数自减1 heros[i] = -1; //赋值为-1,表示勇士[i]已经杀过龙 } } } if(dragon_count > 0) printf("bit is doomed.\n"); else printf("%d\n", cost);return 0;}
- 北理工的恶龙
- 北理工的恶龙
- 【程序设计基础_C语言】北理工的恶龙
- 北理工的葬礼
- 恶问的问题
- 那一闪念的恶
- 一名北理工学子的心路历程
- 谈谈北理工软件学院的小学期
- 恶
- xynuoj 捕杀恶龙 酒馆浪人的博客
- 恶搞的NVIDIA驱动
- Google的恶搞新闻联播
- 恶搞的NVIDIA驱动
- 恶搞的NVIDIA驱动
- 恶搞的NVIDIA驱动
- 恶搞的NVIDIA驱动
- 恶搞的NVIDIA驱动
- 恶搞的NVIDIA驱动
- Activity-RelativeLayout
- DEDE 搜索页面调用arclist
- 源代码--如何?
- 常用UI控件
- 我该跳槽吗?
- 北理工的恶龙
- java模拟登陆
- linux启动地址
- svn 回滚
- 图片和文字的对其方式
- 【小蒙淘金】11月22日金评—希腊求援受挫,基面利空欧元
- 专访蒋宇捷:技术管理者应具备哪些能力?
- eclipse设置
- Android详细解释键盘和鼠标事件