zoukankan      html  css  js  c++  java
  • Codeforces732D Exams

    显然要二分答案,然后对于一个天数,我们来判断是否可以通过所有考试,这里就贪心来安排就好了。

    首先我们希望每门课的考试时间越晚越好,然后就是先复习最早开始的考试。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 vector<int> pos[100010];
     5 int d[100010];
     6 int a[100010];
     7 int n, m;
     8 
     9 bool judge(int mid)
    10 {
    11     vector<pair<int, int>> course;
    12     for (int i = 1; i <= m; i++)
    13     {
    14         vector<int>::iterator it = upper_bound(pos[i].begin(), pos[i].end(), mid);
    15         if (it == pos[i].begin())
    16             return false;
    17         it--;
    18         course.push_back({*it, i});
    19     }
    20     sort(course.begin(), course.end());
    21     int used = 0;
    22     for (auto &c : course)
    23     {
    24         if (c.first - 1 - used < a[c.second])
    25             return false;
    26         used += a[c.second] + 1;
    27     }
    28     return true;
    29 }
    30 
    31 int main()
    32 {
    33     scanf("%d%d", &n, &m);
    34     for (int i = 1; i <= n; i++)
    35     {
    36         scanf("%d", d + i);
    37         if (d[i] > 0)
    38             pos[d[i]].push_back(i);
    39     }
    40     for (int i = 1; i <= m; i++)
    41         scanf("%d", a + i);
    42     int l = 1, r = n;
    43     if (!judge(n))
    44         puts("-1");
    45     else
    46     {
    47         while (l < r)
    48         {
    49             int mid = l + r >> 1;
    50             if (judge(mid))
    51                 r = mid;
    52             else
    53                 l = mid + 1;
    54         }
    55         printf("%d", l);
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    centos8网络连接(1)虚拟机网卡和网络编辑器设置
    centos7离线安装ruby
    centos7安装ruby-2.6.5,简单快捷的下载与安装方式
    redis 4.0.13 -- 集群模式
    活了
    世界无我
    markdown_test
    关于mimikatz在webshell运行
    可用性自动化V3
    关于sqlmap常用
  • 原文地址:https://www.cnblogs.com/iRedBean/p/5975454.html
Copyright © 2011-2022 走看看