重庆邮电大学第十一届ACM程序设计竞赛-网络选拔赛 C题
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题的更多相关文章
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1001 - Buy and Resell 【优先队列维护最小堆+贪心】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6438 Buy and Resell Time Limit: 2000/1000 MS (Java/O ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...
- HDU 6154 CaoHaha's staff(2017中国大学生程序设计竞赛 - 网络选拔赛)
题目代号:HDU 6154 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6154 CaoHaha's staff Time Limit: 2000/1 ...
- 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 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1009 - Tree and Permutation 【dfs+树上两点距离和】
Tree and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDU 6154 - CaoHaha's staff | 2017 中国大学生程序设计竞赛 - 网络选拔赛
/* HDU 6154 - CaoHaha's staff [ 构造,贪心 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 整点图,每条线只能连每个方格的边或者对角线 问面积大于n的 ...
- HDU 6150 - Vertex Cover | 2017 中国大学生程序设计竞赛 - 网络选拔赛
思路来自 ICPCCamp /* HDU 6150 - Vertex Cover [ 构造 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 给了你一个贪心法找最小覆盖的算法,构造一组 ...
- HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛
普通的数位DP计算回文串个数 /* HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 2-36进制下回文串个数 */ ...
- 河南省第十一届ACM程序设计竞赛 修路
Problem C: 修路 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 63 Solved: 22[Submit][Status][Web Boar ...
随机推荐
- Jest中Mock网络请求
Jest中Mock网络请求 最近需要将一个比较老的库修改为TS并进行单元测试,修改为TS还能会一点,单元测试纯粹是现学现卖了,初学Jest框架,觉得在单元测试中比较麻烦的就是测试网络请求,所以记录一下 ...
- openswan源码ubantu下编译、安装、基本环境搭建
openswan的编译过程 文章目录 openswan的编译过程 1. 下载源码: 2. 在虚拟机上解压后编译: 2.1 查看INSTALL文件 2.2 查看文件buildlin.sh文件 3. 查看 ...
- 完蛋,公司被一条 update 语句干趴了!
大家好,我是小林. 昨晚在群划水的时候,看到有位读者说了这么一件事. 在这里插入图片描述 大概就是,在线上执行一条 update 语句修改数据库数据的时候,where 条件没有带上索引,导致业务直接崩 ...
- bean.xml配置数据源和读取配置文件配置数据源
一.bean.xml配置数据源 bean.xml装配bean,依赖注入其属性的时候,对应实体类中属性一定要有set方法, 二.读取配置文件配置数据源 1.配置文件 bean.xml配置: classp ...
- 将给定数据源生成静态HTML页面持久化到项目之外的硬盘
一.java代码 设置好数据源map Map<String,String> map=new HashMap<>(); map.put("knowledgeName&q ...
- Input 只能输入数字,数字和字母等的正则表达式
JS只能输入数字,数字和字母等的正则表达式 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace( ...
- vue.js框架图片上传组件
html: <div id="app"> <div class="hello"> <div class="upload& ...
- DLL延时加载技术与资源释放
DLL延时加载技术与资源释放 0x00 前言 诸如调用非Windows的第三方库,我们或许会使用到dll文件,而这个时候原本程序运行需要相应的dll文件才能加载启动.通过DLL延时加载技术,使用延时加 ...
- 计算字符串的长度.len,RuneCountInString
内置函数len(),可以返回字符串/数组/切片/map/channel的长度. unicode/utf8包 函数:RuneCountInString(输入一个字符串),返回int类型的字符串长度.由于 ...
- JSON,XML设计模式详解
JSON在Java中的应用: Json概念: json 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式用来存储和表示数据.JSON的语言简洁清晰,广为大众所欢迎,是一种理想的数据交换语言 ...