C在线编程题第二道题目哪里要改?
发布于 2017-04-07 20:50 2729 次浏览 0 赞 来自 我要提问  

求问?

5 条回复

不是说样例输入少给一行吗?输入是

4

2 2

3 1

5 2

7 3


其他应该没有吧?

我本地至少可以运行出样例结果,但测试一直都是错,心塞啊 T.T

2017-04-07 21:03

我也是一直10%怎么回事呢

2017-04-07 21:06

10%+1,求ac的思路~

2017-04-07 21:19

10%的应该是同一辆车摧毁了两次

2017-04-07 21:22

#include <string>

#include <math.h>

#include <numeric>

#include <stdio.h>

#include <stdlib.h>

#include <string>

#include <map>

#include <utility>

#include <vector>

#include <iostream>

#include <algorithm>

using namespace std;


int main() {

int n;

scanf("%d", &n);

vector<pair<int, int> > car(n);

int maxp = 0;

for (int i=0; i<n; ++i) {

cin >> car[i].first >> car[i].second;

car[i].second += car[i].first;

//minp = min( minp, car[i].first );

maxp = max(maxp, car[i].second );

}


vector<int> cover(maxp+100, 0);

for (int i=0 ; i<n; ++i) {

for (int j=car[i].first; j<=car[i].second; ++j) {

cover[j]++;

}

}


//find first index

int maxid = 0, value = cover[0];

for (int i=0 ; i<n; ++i) {

if (cover[i] > value) {

maxid = i;

value = cover[i];

}

//cout << "\nmaxid: " << maxid;

//cout << "\nvalue: " << value;

}

    int ret = value;


    for (int i=0; i<cover.size(); ++i)

        cover[i] = 0;

for (int i=0 ; i<n; ++i) {

for (int j=car[i].first; j<=car[i].second && !( car[i].first <= maxid && car[i].second >= maxid ); ++j) {

cover[j]++;

}

}


sort(cover.begin(), cover.end());

cout << cover[cover.size()-1] + ret;




return 0;

}

发现终版少打了一行,现在补上了,但是现在没法验证对不对~有原题给出吗赛码网的。或是有ac的帮忙看看这样行不行呀


2017-04-07 21:28
添加回复
回到顶部