1008: 偷袭

时间限制: 1.000 sec 内存限制: 128 MB

武林要以和为贵,张麻子不讲武德来偷袭马老师的亲传弟子。
马老师有n个亲传弟子,每个弟子有一个武力值a[i]。
n个弟子中只有某些弟子学会了闪电鞭,张麻子想知道如果自己的武力值为W可以打败多少个会闪电鞭的亲传弟子(只有W严格大于a[i],才可以打败第i个弟子)。

输入

第一行一个整数T(1<=T<=100),表示数据组数
每组数据第一行两个整数n(1<=n<=100000),m(1<=m<=100000),分别表示亲传弟子数量,询问的数量
接下来一行n个整数,第i个整数a[i]表示第i个弟子的武力值(0<=a[i]<=100000)
接下来一行n个整数,第i个整数b[i]为1或0,b[i]为1表示第i个弟子会闪电鞭,为0则不会闪电鞭.
接下来m行,每行一个整数W(0<=W<=100000)表示张麻子武力值
保证所有T组数据的n加起来不超过100000,m加起来不超过100000

输出

输出T组数据
每组数据输出m行,每行一个整数,表示张麻子武力值为W时,能打败的会闪电鞭的弟子数量

样例输入

1
5 3
1 2 3 2 1
1 0 1 1 0
0
1
6

样例输出

0
0
3

这道题卡时间卡的比较厉害,其他都还好

题解用的文件输入,在本地调试需要用一个a.txt来输入

#include <stdio.h>
#include <stdlib.h> #define DEBUG 0 //提交的时候需要把DEBUG设为0 #if DEBUG
#else
#define fp stdin
#endif int fight[100000];
int* follow; //总共100000个元素 下标即为战斗力 int main() {
#if DEBUG
FILE* fp;
#endif
int t;
int i, j;
int n, m;
int master;
int w;
int cnt;
int total; //会闪电鞭的弟子总数
int max, min;
#if DEBUG
fp = fopen("a.txt", "r");
#endif
while (fscanf(fp, "%d", &t) != EOF) { //读入t
break;
} while (t--) {
max = -1;
min = 100001;
while (fscanf(fp, "%d%d", &n, &m) != EOF) { //读入每组开头的n和m
break;
}
for (i = 0; i < n; i++) {
while (fscanf(fp, "%d", &fight[i]) != EOF) { //将每名弟子的战斗力存入数组
break;
}
if (max < fight[i]) { //找最大值
max = fight[i];
}
if (min > fight[i]) { //找最小值
min = fight[i];
}
}
total = 0; //每次判断前初始化total为0
follow = (int*)calloc(sizeof(int), 100001); //使用calloc在堆中为follow开辟空间并初始化为0
for (i = 0; i < n; i++) {
while (fscanf(fp, "%d", &master) != EOF) {
break;
}
if (master == 1) {
follow[fight[i]]++; //follow的下标即为战斗力, follow元素存的是总人数, 例如follow[2] = 3, 战斗力为2的弟子总共有3人
total++; //计算会闪电鞭的弟子的总人数
}
}
i = m;
while (i--) {
while (fscanf(fp, "%d", &w) != EOF) {
break;
}
if (w <= min) { //张麻子比最弱的还弱, 输出0
printf("0\n");
continue;
}
else if (w > max) { //张麻子比最强的还要强, 输出弟子总数
printf("%d\n", total);
continue;
}
//张麻子战斗力在中间则从w-1开始, 往后求和, 到min结束
cnt = 0;
for (j = w - 1; j >= min; j--) {
cnt += follow[j];
}
printf("%d\n", cnt);
}
free(follow); //回收follow的内存空间以便再次申请
} return 0;
}

重庆邮电大学第十一届ACM程序设计竞赛-网络选拔赛 C题的更多相关文章

  1. 2018中国大学生程序设计竞赛 - 网络选拔赛 1001 - Buy and Resell 【优先队列维护最小堆+贪心】

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6438 Buy and Resell Time Limit: 2000/1000 MS (Java/O ...

  2. 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...

  3. HDU 6154 CaoHaha's staff(2017中国大学生程序设计竞赛 - 网络选拔赛)

    题目代号:HDU 6154 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6154 CaoHaha's staff Time Limit: 2000/1 ...

  4. 2016中国大学生程序设计竞赛 - 网络选拔赛 C. Magic boy Bi Luo with his excited tree

    Magic boy Bi Luo with his excited tree Problem Description Bi Luo is a magic boy, he also has a migi ...

  5. 2018中国大学生程序设计竞赛 - 网络选拔赛 1009 - Tree and Permutation 【dfs+树上两点距离和】

    Tree and Permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  6. HDU 6154 - CaoHaha's staff | 2017 中国大学生程序设计竞赛 - 网络选拔赛

    /* HDU 6154 - CaoHaha's staff [ 构造,贪心 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 整点图,每条线只能连每个方格的边或者对角线 问面积大于n的 ...

  7. HDU 6150 - Vertex Cover | 2017 中国大学生程序设计竞赛 - 网络选拔赛

    思路来自 ICPCCamp /* HDU 6150 - Vertex Cover [ 构造 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 给了你一个贪心法找最小覆盖的算法,构造一组 ...

  8. HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛

    普通的数位DP计算回文串个数 /* HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 2-36进制下回文串个数 */ ...

  9. 河南省第十一届ACM程序设计竞赛 修路

    Problem C: 修路 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 63  Solved: 22[Submit][Status][Web Boar ...

随机推荐

  1. golang map实现原理

    这篇文章主要讲 map 的赋值.删除.查询.扩容的具体执行过程,仍然是从底层的角度展开.结合源码,看完本文一定会彻底明白 map 底层原理. 我要说明的是,这里对 map 的基本用法涉及比较少,我相信 ...

  2. K8S最小硬件配置

  3. 【数据库上】 第四讲 E-R模型基础知识

    第四讲 E-R模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...

  4. javascript(2)运算符

    ### js运算符 1.运算符 1.typeof 获取当前变量类型 运算符(特殊) 2.= 赋值运算符 3.== 简要比较运算符(忽略变量的类型) 4.=== 标准比较运算符(严格变量的类型.判断是否 ...

  5. js 显示日期时间,时间过一秒加1

    html: <div id="data"><font>2017年10月17日 15:11:11</font></span> js: ...

  6. 加入Erlang社区-指引

    国内暂且没有发现较活跃.人气较高的论坛或者社区,偶然发现Erlang官网的Community页面描述了一个Slack交流平台,里面有众多异国他乡的大佬,感兴趣的.有技术疑问的都可以加入看看. 加入教程 ...

  7. TP5 数据保存、更新问题(save、saveAll)

    一.今天写项目的时候,突然发现一个坑爹的问题,使用saveAll新增多条数据,但是一直提示缺少更新条件,然而我发现代码里面并没有更新,而且saveAll我仅仅是去新增多条数据而已 原来源码 模型类中有 ...

  8. 【Linux】LNMP1.6 环境报500错误解决方法

    vi /usr/local/nginx/conf/fastcgi.conf 进入编辑fastcgi.conf 找到  fastcgi_param  PHP_VALUE  "open_base ...

  9. JDBC封装的工具类

    1. JDBC封装的工具类 public class JDBCUtil { private static Properties p = new Properties(); private static ...

  10. 『Python』matplotlib划分画布的主要函数

    1. subplot() 绘制网格区域中几何形状相同的子区布局 函数签名有两种: subplot(numRows, numCols, plotNum) subplot(CRN) 都是整数,意思是将画布 ...