bestcoder#2-1

点击量:8

一开始直接使用结构体搞结果wrong了,随后查看了某牛的代码发现应该直接在区间上累加 — 得出结论不要直接使用复杂的结构体,转变成简单的数据形式未尝不是一个好方法

原题:

http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=526&pid=1001

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <map>
#include <algorithm>
#include <queue>
#include <cmath>
#include <bitset>
using namespace std;
// 大数,内存处理
#define INF 0x3f3f3f3f
#define lln long long int
#define MEM(a) memset(a, 0, sizeof(a))
#define MEMM(a) memset(b, -1, sizeof(b))
#define DEB(x, n) cout << (x) << " " << (n) << endl
#define CR printf("\n")
// 调试用
    template <class Type>
void debug(Type a[], int len)
{
    for(int i = 0; i < len ; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
}
const int maxn = 10000 + 10;
int main()
{
#ifdef DEBUG
    // freopen("input", "r", stdin);
#endif
    int T, n;
    // 24 * 60 + 60 = 1500
    int a[2000], s1, s2, e1, e2;
    int num;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &n);
        int maxx = 0;
        memset(a, 0, sizeof(a));
        for(int i = 0; i < n;i++)
        {
            scanf("%d%d:%d%d:%d", &num, &s1, &s2, &e1, &e2);
            int sum1 = s1*60 + s2;
            int sum2 = e1*60 + e2;
            for(int j = sum1; j < sum2; j++)
            {
                a[j] += num;
                maxx = max(maxx, a[j]);
            }
        }
        printf("%d\n", maxx);
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注