重庆邮电大学第十一届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 ...
随机推荐
- 移动端 uni-app 滑动事件 精确判断手指滑动方向
移动端根据手指滑动操作判断滑动方向 设计思路: 1.根据移动端touchstart和touchend方法获取手指触摸屏幕的开始坐标和结束坐标 2.根据两个坐标计算与水平方向的夹角 3.根据夹角判断当前 ...
- 基于Nginx实现负载均衡的部署
Nginx(enginex)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器. nginx官方网站:http://nginx.org/ nginx plus收费软件, ...
- bat 使用ftp进行文件上传
实例 @echo off rem 打开远程ftp echo open 172.16.137.23 > ftpconfig.txt rem 使用匿名用户登录 echo user anonymuou ...
- MySQL——MySQL安装
1.rpm yum安装:安装方便.速度快.无法定制 2.二进制安装:解压即可使用,不能定制功能 3.编译安装: 可定制.安装慢: MySQL5.5之前:./configure make make in ...
- Django中使用MySQL数据库的连接配置
1. 安装pymysql pip install pymysql 2. 导入 # 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置 import pymysql ...
- VS dll 引用依赖
在公司实习过程中,经常遇到三个问题: 开发环境 dll引用依赖 dll版本控制 一般公司都会配置开发/测试/Lab/线上四个环境,之后不管时开发什么项目,都与环境分不开边.这个和dll版本控制暂且记下 ...
- Jenkins(6)- 新建用户
如果想从头学起Jenkins的话,可以看看这一系列的文章哦 https://www.cnblogs.com/poloyy/category/1645399.html 进入用户管理 点击新建用户 填写新 ...
- Docker(41)- Portainer 可视化面板安装
Portainer docker run -d -p 8080:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock ...
- 关于Golang的学习路线
基础 安装golang环境 Golang基础,流程控制,函数,方法,面向对象 网络编程(自己做一个简单的tcp的聊天室,websocket,http,命令行工具) 并发(可以看一下并发爬虫或者下载器的 ...
- systemctl添加自定义系统服务
[Service] Type=forking ExecStart=绝对路径 ExecStop=绝对路径 ExecReload=绝对路径 以上最精简版,文件/usr/lib/systemd/system ...