[河南省ACM省赛-第三届] 房间安排 (nyoj 168)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=168

分析:找到一天中需要最多的房间即可

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define N 200

int day[N];//day[i] 第i天的最多房间数 

int main()
{
    freopen("d:\\in.txt", "r", stdin);
    int t, n;
    scanf("%d", &t);
    while(t--){
        memset(day, 0, sizeof(day));
        scanf("%d", &n);
        int num, start, length;
        for(int i=0; i<n; i++){
            scanf("%d%d%d", &num, &start, &length);
            for(int i=0; i<length; i++){
                day[i+start] += num;
            }
        }
        int ans = 0;
        for(int i=0; i<N; i++){
            ans = max(ans, day[i]);
        }
        printf("%d\n", ans);
    } 

    return 0;
}

看别人题解后才明白的,同时记录下自己的模拟算法(TimeLimitExceeded)

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<algorithm>
 6 #include<cmath>
 7 using namespace std;
 8 #define INPUT freopen("d:\\in.txt", "r", stdin);
 9 #define N 10002
10
11 struct Node {
12     int a, b, v;
13 }c[N];
14
15 bool cmp(Node n1, Node n2)
16 {
17     return n1.a != n2.a ? n1.a < n2.a : n1.b < n2.b;
18 }
19 int main()
20 {
21     INPUT;
22
23     int t, n;
24     scanf("%d", &t);
25     while(t--)
26     {
27         scanf("%d", &n);
28         int day;
29         for(int i=0; i<n; i++){
30             scanf("%d%d%d", &c[i].v, &c[i].a, &day);
31             c[i].b = c[i].a+day;
32         }
33         sort(c, c+n, cmp);
34         int ans = c[0].v;
35         for(int i=1; i<n; i++){
36             int cur = c[i].v;
37             ans += cur;
38             for(int j=0; j<i; j++){
39                 if(c[j].v && cur && c[j].b <= c[i].a){//如果 j团有剩余房间 且 当前订单还需要房间 且j团已离开
40                     int reuse = min(c[j].v, cur);
41                     ans -= reuse;
42                     c[j].v -= reuse;
43                     cur -= reuse;
44                 }
45             }
46         }
47         printf("%d\n", ans);
48     }
49     return 0;
50 }

时间: 2024-08-02 02:49:43

[河南省ACM省赛-第三届] 房间安排 (nyoj 168)的相关文章

[河南省ACM省赛-第三届] 素数 (nyoj 169)

#include <iostream> #include <cstdio> #include <queue> #include <cstring> #include <algorithm> #include <cmath> using namespace std; #define N 1100 #define INF 0x7fffffff bool prime[N]; void init() { memset(prime, true,

[河南省ACM省赛-第三届] 网络的可靠性 (nyoj 170)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=170 根据题意,需要找到度数为1的结点个数,如下图: #include<iostream> #include<cstdio> #include<cstring> #include<vector> using namespace std; #define N 10002 vector<int> g[N]; int main() { freo

[河南省ACM省赛-第三届] AMAZING AUCTION (nyoj 251)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=251 规则: 1.若某竞标价唯一,则胜出 2.若不存在唯一竞标价,则投标次数最少竞标价中标,存在多个时,选择价钱最低且最先投此价钱的为中标 #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define N 102 #define M 1002 struct N

[河南省ACM省赛-第三届] BUYING FEED (nyoj 248)

#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define N 352 /* 重量*单价+重量*距离 = 重量*(距离+单价) 预处理单价 贪心:优先买价格低的 */ struct Node { int p;// p = (单价+距离) int w; }c[N]; bool cmp(Node a, Node b)

[河南省ACM省赛-第三届] 聪明的kk (nyoj 171)

#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; #define INF 0x7fffffff #define INPUT freopen("d:\\in.txt", "r", stdin); #define OUTPUT freope

[河南省ACM省赛-第四届] Substring (nyoj 308)

练习使用字符串函数了. 1.字串的反转也是它的字串,2.最长,3.最先出现 string: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; int main() { int t, n; string s; cin>>t; while(t--){ cin>&

[河南省ACM省赛-第五届] 试制品 (nyoj 542)

模拟 a 反应物集合 ; b 生成物集合; c 存在的化合物或单质集合; ans 新生成化合物集合 1.如果反应无均在已生成的化合物集合中,则完成反应,将合成物加入c集合 2.对每个方程式的反应物进行排序,方便加速查找 3.不停的搜索,直到没有新化合物生成. #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #inc

Mine Number(搜索,暴力) ACM省赛第三届 G

1 安装及下载client 端 2 什么是SVN(Subversion)? 3 为甚么要用SVN? 4 怎么样在Windows下面建立SVN Repository? 5 建立一个Working目录 6 新增档案及目录到Repository中 7 更新档案及目录 8 更新至特定版本 9 复制档案及目录 10 制作Tag或是Release 11 快速参考 11.1 取得(Checkout)Repository 11.2 更新(Update)档案或目录 11.3 新增(Add)档案或目录 11.4 提

[河南省ACM省赛-第五届] 最强DE 战斗力 (nyoj 541)

题解链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=541 几天前百度题解后用数学知识AC的,后来大牛说这是一道动态规划题. 网上的数学解题链接:http://blog.csdn.net/x314542916/article/details/8204583 d(i) = max{d(j)*d(n-j) | 1<= j <=n/2}; 用Java写比较简单 import java.math.BigInteger; import java.u