JIAN_BOY_RISE 2016-09-12 06:13 采纳率: 37.5%
浏览 1436
已采纳

acm 总是Time Limit Exceed!!!!!!!!!!!

Description

The 36th ACM match was hosted in Chengdu in 2011 Nov 4. There is an interesting rule in ACM match that once you solve a problem, you'll get a balloon.

To simplify these names, we just name these teams S1, S2, S3 ... SN.

We want to know how many balloons they get between team Si and Sj (including Si and Sj). We may ask many times. It is too boring to count every time.

Since you are a programmer, can you write a program to solve it?

Input

First is an integer N (1 <= N <= 140) indicates the number of schools.

Followed with an integer M (1 <= M <= 50000) indicates the number of operations.

There are two kinds of operations.

AC X

     Means team SX solve a problem and will get a balloon.

COUNT X Y

     Means count balloons of team between SX and SY

Output

For each operation "COUNT X Y" output the number you count

Sample Input
5 4
AC 1
COUNT 1 3
AC 2
COUNT 1 3
Sample Output
1
2

我的程序:
#include
#include
#include
using namespace std;
int main()
{
int b,a;
scanf("%d%d",&b,&a);
int *c=new int[b];
for(int j=0;j {
c[j]=0;
}
while(a--)
{
string d;
int g,p,f;
cin>>d;
if(d=="AC")
{
scanf("%d",&g);
c[g-1]++;
}else if(d=="COUNT")
{
scanf("%d%d",&p,&f);
int sum=0;
for(int i=p-1;i<f;i++)
{
sum+=c[i];
}
printf("%d\n",sum);
}

}
return 0;
}

  • 写回答

4条回答 默认 最新

  • 祈祷爱绝缘 2016-09-13 08:14
    关注

    反正闲着没事,就去你们矿业大学的ACM注册了个账户,用java写了一个,你可以参考一下

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
    
            Scanner in = new Scanner(System.in);
    
            while (in.hasNext()) {
                int schools = in.nextInt();// 学校数
                int operations = in.nextInt();// 操作数
                int[] arr = new int[schools + 1];// 数组
                for (int i = 0; i < operations; i++) {
                    String oper = in.next();
                    if (oper.equals("AC")) {
                        int school = in.nextInt();
                        // 从当前学校往后的所有学校都加一
                        for (int j = school; j < schools + 1; j++) {
                            arr[j]++;
                        }
                    } else {
                        int first = in.nextInt();
                        int second = in.nextInt();
                        System.out.println(arr[second] - arr[first - 1]);
                    }
                }
            }
        }
    }
    
    
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里