acm 士兵杀敌(一)
士兵杀敌(一)
- 描述
-
南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。
小工是南将军手下的军师,南将军现在想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。
注意,南将军可能会问很多次问题。
- 输入
- 只有一组测试数据
第一行是两个整数N,M,其中N表示士兵的个数(1<N<1000000),M表示南将军询问的次数(1<M<100000)
随后的一行是N个整数,ai表示第i号士兵杀敌数目。(0<=ai<=100)
随后的M行每行有两个整数m,n,表示南将军想知道第m号到第n号士兵的总杀敌数(1<=m,n<=N)。 - 输出
- 对于每一个询问,输出总杀敌数
每个输出占一行 - 样例输入
-
5 2
1 2 3 4 5
1 3
2 4 - 样例输出
-
6
9#include<stdio.h>
#include<malloc.h>
int main(){
int P,N,M,m,n,i,j,s=,*p=(int *)malloc(*sizeof(int)), *q=(int *)malloc(*sizeof(int));
scanf("%d%d",&N,&M);
for(i=;i<=N;i++)
{
scanf("%d",&p[i]); }
for(i=;i<=N;i++){ if(p[i]>&&p[i]<=){ for(P=;P<M;P++){
scanf("%d%d",&m,&n);
if(m>=&&n<=N){
for(j=m;j<=n;j++)
{
q[P]+=p[j];
}}
}}
for(P=;P<M;P++)
printf("%d\n",q[P]);}
free(p);
free(q);
return ;
}错误信息
运行时间:2016-12-11 21:49:20 | 用户:张子木程序运行超时:
你的程序太慢了,想想办法改进一下速度吧。。
在测试数据很多(几百万个数),而你又用的cin,cout进行输入输出时,也可能会出现超时,改成scanf,printf即可
也有可能是你的程序陷入了死循环不能退出了我想哭。。。。。。怎么了是。。。。于是我百度了一下,得到一个代码#include <stdio.h>
#include <stdlib.h>
#include <string.h> int a[];
int sum[];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
int i;
for(i = ;i <= n;i++){
scanf("%d", &a[i]);
sum[i] = sum[i-]+a[i];
}
int a, b;
for(i = ;i < m;i++){
scanf("%d %d", &a, &b);
printf("%d\n", sum[b]-sum[a-]);
} return ;
}然后我就醉了。。。
我之前也是这样写的,但是一运行就停止运行的,然后想到可能是数组的长度太大了,然后把数组大小变成了10,确实运行正常。。
可是上面这个好像比我的还要大啊。。。。。
下面是我之前的
#include<stdio.h>
#include<Windows.h>
int main(){
int p,N,M,m,n,i,j,s=,a[]={},b[]={};
scanf("%d%d",&N,&M);
for(i=;i<=N;i++)
{
scanf("%d",&a[i]);
if(a[i]<||a[i]>) exit();
}
for(p=;p<M;p++){
scanf("%d%d",&m,&n);
if(m<||n>N) exit();
for(j=m;j<=n;j++)
{
b[p]+=a[j];
}
} for(p=;p<M;p++)
printf("%d\n",b[p]);
return ; }
acm 士兵杀敌(一)的更多相关文章
- ACM题目————士兵杀敌(三)
[RMQ算法]:用于当数组过于庞大的时候,查询区间的最大(最小)值. 时间复杂度:O(nlogn),主要时间发费在预处理上,查询只要O(1). 描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军 ...
- NYOJ 116士兵杀敌(二) 树状数组
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=116 士兵杀敌(一) 数组是固定的,所以可以用一个sum数组来保存每个元素的和就行,但是不 ...
- NYOJ 119 士兵杀敌(三) RMQ ST
NYOJ 119 士兵杀敌(三) RMQ ST 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=119 思路: ST在线 预处理O(nlog ...
- NYOJ 士兵杀敌(1~5)
士兵杀敌(1): http://acm.nyist.net/JudgeOnline/problem.php?pid=108 分析:前缀和 #include <bits/stdc++.h> ...
- nyoj123_士兵杀敌(四)_树状数组_插线求点
士兵杀敌(四) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战 ...
- 士兵杀敌(三)_RMQ(区间最值查询)
士兵杀敌(三) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进 ...
- nyoj116_士兵杀敌(二)_树状数组
士兵杀敌(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常 ...
- NYOJ 士兵杀敌(三)
描述 南将军统率着N个士兵,士兵分别编号为1~N,南将军经常爱拿某一段编号内杀敌数最高的人与杀敌数最低的人进行比较,计算出两个人的杀敌数差值,用这种方法一方面能鼓舞杀敌数高的人,另一方面也算是批评杀敌 ...
- nyoj 108 士兵杀敌(一)
点击打开链接 士兵杀敌(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师, ...
随机推荐
- iOS面试必备-iOS基础知识
近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内 ...
- leetcode刷题1:两数之和two_sum
题目:(难度:Easy) 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, ...
- 基于matlab的边缘提取方法的比较
1.Matlab简述 Matlab是国际上最流行的科学与工程计算的软件工具,它起源于矩阵运算,已经发展成一种高度集成的计算机语言.有人称它为“第四代”计算机语言,它提供了强大的科学运算.灵活的程序设计 ...
- Kubernetes Kube-proxy
Kube-proxy主要负责Service的实现. kube-proxy enables the Kubernetes service abstraction by maintaining netwo ...
- K8s ipvs mode kube-proxy
IPVS vs. IPTABLES IPVS模式在Kubernetes 1.8中被引入,在1.9中进入beta测试. IPTABLES模式在1.1版本中被添加进来,在1.2开始就变成了默认的操作模式. ...
- MySQL/MariaDB数据库备份与恢复之mysqlpump入门操作
创建测试用表:MariaDB [music]> create table summary(id int,info char(128));Query OK, 0 rows affected (0 ...
- 考勤助手——基于CS三层结构的子系统设计
因为小组比较倾向于cs分层结构的风格,所以基于对考勤助手最初的体系架构的设计进行了子系统的分层设计,如下图: 1.教务老师安排课程子系统 2.教务老师查询相关信息的子系统 3.任课教师管理考勤子系统 ...
- MVC 中 System.Web.Optimization 找不到引用
在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...
- codeforces707A:Brain's Photos
Description Small, but very brave, mouse Brain was not accepted to summer school of young villains. ...
- MATLAB一个数组中另一个数组的值
c = setdiff(a,b) 删掉素组a中数组b的元素 如: