SCPC / ACM2015国庆培训正式赛

本文介绍了ACM2015国庆培训的一系列编程题目,包括签到题、绝对值判断、导弹拦截、模拟及排序问题等。讲解了各题目的解题思路,如使用if大于0判定绝对值,快速排序方法,以及针对不同问题的优化策略,如线段树解决刷墙问题。同时,文中还提到一些易错点和出题人的小陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:

A:这是一个签到题

总时间限制: 1000ms 内存限制: 65535kB
描述
计算A+B+C的和。

输入
多组测试数据。
输入A,B,C,保证是小于100的正整数。
输出
对于每组数据输出A,B,C的和。
样例输入
1 2 3
3 4 5
样例输出
6
12

这是一道水题,代码很简单。

#include<stdio.h>
#include"string.h"
int main()
{
    int a,b,c;
    while(scanf("%d %d %d",&a,&b,&c)!=EOF)
    {
        int ans=a+b+c;
        printf("%d\n",ans);
    }
    return 0;
}

B:A+B+C+D+….

总时间限制: 1000ms 内存限制: 65535kB
描述
给你一个数组,你要做的就是计算|a1|+|a2|+....+|an|。

输入
先输入一个T。表示有T组测试数据
每组测试数据先输入一个n,n<100.表示数组的个数。接下来是n个整数ai(-10^5≤ai≤10^5)
输出
输出n个数的绝对值之和
样例输入
2
3
1 1 1
3
-1 -1 -1
样例输出
3
3

绝对值可以使用if大于0进行判定,尽量少使用math.h的东西。

#include<stdio.h>
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        int ans=0;
        while(n--)
        {
            int a;
            scanf("%d",&a);
            if(a>0) ans=ans+a;
            else ans=ans-a;
        }
        printf("%d\n",ans);
    }

    return 0;
}

C:导弹拦截之终结版

总时间限制: 1000ms 内存限制: 65535kB
描述
经过100 年的韬光养晦,某国研发出了一种用于太空战争的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。而且没有缺陷。

某天,雷达捕捉到外星人的导弹来袭。由于该系统尚处于试验阶段,所以只有一套系统投入工作。请计算可以拦截下的导弹个数。

输入
多组测试数据;
对于每组数据共有两行:
第一行一个n(0≤n≤1000),表示导弹个数,一个m,表示工作半径(0≤m≤30000);
第二行表示每颗导弹与拦截系统的距离Li(0≤Li≤30000),以空格隔开 。
输出
每组数据一行,输出可以拦截下的导弹个数;
样例输入
8 200
389  207  155  300  299  170  158  65
样例输出
4

这道题先输入拦截高度,对于每颗导弹的高度后面已经不需要了,所以这里连数组都不需要,直接一个扫过去统计就行了。

#include<stdio.h>
int main()
{
   int n,m;
   while(scanf("%d %d",&n,&m)!=EOF)
   {
       int ans=0;
  
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值