zoukankan      html  css  js  c++  java
  • ZOJ-3941 Kpop Music Party

    ZOJ-3941

    题意:Edward想去参加音乐会,每次参加完音乐会只之后都会持续K天的兴奋(从今天到今天+K-1天), 现在共有n场音乐会, 每场音乐会都有一个开始时间和结束时间,并且他能选择其中的M天去参加, 现在求他能兴奋的总天数最多。

    题解:如果他在第一段时间能用完所有的次数(有效利用的情况下),那么就算不把次数留到后面去他的总天数也是等效的,所以去除有效利用之后,再搜一下每一段的最后一天参不参加的状态就好了,一共10段,2^10也才1e3,接下来就是处理一下细节然后DFS搜索就好了。

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define fi first
     5 #define se second
     6 #define lson l,m,rt<<1
     7 #define rson m+1,r,rt<<1|1
     8 #define max3(a,b,c) max(a,max(b,c))
     9 const int INF = 0x3f3f3f3f;
    10 typedef pair<ll , ll> pll;
    11 pll p[15];
    12 ll N, K, M;
    13 ll ans = 0;
    14 void Dfs(int i, ll to, ll len, ll time)
    15 {
    16     if(time <= 0 || i == N+1)
    17     {
    18         ans = max(ans, len);
    19         return ;
    20     }
    21     ll b = max(to, p[i].fi);
    22     ll e = p[i].se;
    23     if(b >= e)
    24     {
    25         Dfs(i+1, to, len, time);
    26         if(e+K > to)
    27         Dfs(i+1, e+K, len+(e+K-b), time-1);
    28         return;
    29     }
    30     ll tt = ((e-b+1)%K == 0)? (e-b+1)/K : (e-b+1)/K+1;
    31     if(tt > time) tt = time;
    32     Dfs(i+1, b+tt*K, len+tt*K, time-tt);
    33     if(tt+1 <= time)
    34     Dfs(i+1, e+K, len+e-b+K, time-tt-1);
    35 }
    36 int main()
    37 {
    38     ios::sync_with_stdio(false);
    39     cin.tie(0);
    40     cout.tie(0);
    41     int T;
    42     while(cin >> T)
    43     {
    44         while(T--)
    45         {
    46             cin >> N >> K >> M;
    47             ans = 0;
    48             for(int i = 1; i <= N; i++)
    49                 cin >> p[i].fi >> p[i].se;
    50             sort(p+1, p+1+N);
    51             Dfs(1,0,0,M);
    52             cout << ans << endl;
    53         }
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    K2 BPM_携手东航物流,领跑全球航空物流业_全球领先的工作流引擎
    K2 BPM_如何将RPA的价值最大化?_全球领先的工作流引擎
    Sqlserver 增删该查----查
    U3D Resources AssetBundle资源打包
    Sqlserver 触发器
    Sqlserver 游标
    U3D 协程和www
    U3D 数据在安卓设备上的存储,加载
    U3D SQLite数据库
    U3D 装备的添加和移除(Unity3D)
  • 原文地址:https://www.cnblogs.com/MingSD/p/8456946.html
Copyright © 2011-2022 走看看