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条)

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用