C_lionking 2019-10-22 12:31 采纳率: 33.3%
浏览 597
已采纳

请大佬帮忙看看两道vjudge上的题,代码在ide上能按照题目的用例正确输出,但提交就是wrong answer?

1、某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
马路上有一些区域要用来建地铁,这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

输入样例:
500 3
150 300
100 200
470 471

输出样例:
298

我的代码是

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
    int l , m , s , e , i , j , n = 0;
    cin >> l >> m;
    int * tree = new int[l + 2] {0};

    for(i = 1; i <= m; ++ i)
    {
        cin >> s >> e;
        for(j = s; j <= e; ++ j) tree[j] = 1;
    }
    for(i = 1; i < l + 2; ++ i) n += !tree[i] ? 1 : 0;
    delete [] tree;
    cout << n << endl;

    return 0;
}

2、一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a < 32768)
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开
如果没有满足要求的答案,则输出两个0。

输入样例:
2
3
20

输出样例:
0 0
5 10

我的代码是

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

struct Animal
{
    int min;
    int max;
};

int main()
{
    int n , a , i , j , ji = 0 , tu = 0;
    cin >> n;
    Animal * animal = new Animal[n];

    for(i = 0; i < n; ++ i)
    {
        cin >> a;

        if(a % 2 || a % 4)
        {
            animal[i].min = animal[i].max = 0;
            continue;
        }

        j = a;
        tu += j / 4;
        j -= j / 4 * tu;

        if(j > 0)
        {
            ji += j / 2;
            j -= j / 2 * ji;
        }
        animal[i].min = tu + ji;

        ji = 0;
        j = a;
        ji += j / 2;
        j -= j / 2 * ji;
        animal[i].max = ji;
    }
    for(i = 0; i < n; ++ i) cout << animal[i].min << " " << animal[i].max << endl;
    delete [] animal;

    return 0;
}

请大佬帮忙看一下,哪里有问题,两段代码在ide上都能正确输出,但提交就是错了

  • 写回答

2条回答 默认 最新

  • Cin.白术 2019-10-23 19:09
    关注

    T1,需要注意的是题目中有说明0也可以种树,那么自然隐含有0点可以铺公路,而你的程序是从1开始计算,就会漏掉0,导致结果比答案大1.
    T2,你的特判(0 0)出问题,如果脚的数量是5,自然可以,但如果脚的数量是6,因为6%4=2为真,所以你就会输出0 0,但真实情况却是2 3,所以第23行改成if(a % 2)就行了,后面再进行一些微调。

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

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试