本文主要是介绍NEFU 982 vd数蚂蚁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
vd数蚂蚁
vd数蚂蚁
Problem : 982 | Time Limit : 2000ms | Memory Limit : 65536K |
description
vd闲着无聊就喜欢蹲在蚂蚁窝旁数蚂蚁,他的小伙伴们偶尔会路过,假装关心的问问有多少只进出。 vd会记下n([1,n])分钟内,每分钟有多少蚂蚁经过:如果有2只出来就是2,如果有2只进去就是-2,一进一出就是0。 小伙伴会在路过m次,每次路过会询问第t1i到t2i(1<=t1i<=t2i<=n)分钟总共进出的蚂蚁只数数。
input
多组输入输出。每组第一行,两个正整数n,m(1<=n,m<=10^5)。 第二行是n个整数,表示第i分钟经过了ai只(|ai|<=100)。 接下来m行,每行一个整数,表示t1i,t2i。
output
对每一次询问输出答案(一行一个整数)。
sample_input
5 4 2 -2 2 5 0 1 1 1 2 3 4 3 5
sample_output
2 0 7 7
hint
source
打表思想。
AC code:
</pre><pre name="code" class="cpp">#include<iostream> #include<cstdio> using namespace std; int a[200000]; int main() {int n,m;while(cin>>n>>m){for(int i=1;i<=n;i++)scanf("%d",&a[i]);a[0]=0;for(int i=1;i<=n;i++){a[i]=a[i-1]+a[i];}while(m--){int b,c;int sum=0;scanf("%d%d",&b,&c);printf("%d\n",a[c]-a[b-1]);}} }
Time Limit Exceeded :
#include<iostream> #include<cstdio> using namespace std; int a[200000]; int main() {int n,m;while(cin>>n>>m){for(int i=1;i<=n;i++)scanf("%d",&a[i]);while(m--){int b,c;int sum=0;scanf("%d%d",&b,&c);for(int i=b;i<=c;i++)sum+=a[i];printf("%d\n",sum);}} }
这篇关于NEFU 982 vd数蚂蚁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!