暴力二分答案+网络流,点数为$o(nk)$,无法通过

考虑Hall定理,即有完美匹配当且仅当$\forall S\subseteq V_{left}$,令$S'=\{x|\exists y\in V_{left}且(x,y)\in E\}$,满足$|S|\le |S'|$

代入本题中,即$o(2^{n})$枚举工人,判断前$i$天内这些工人中有人存在的天数>=工人数的$k$倍

(虽然每一个工人被裂为了$k$个点,但由于中$k$个点的出边相同,选多个不会增大$|S'|$,必然全选)

考虑如何统计,先预处理出每一天存在的工人的二进制,再将所有于其有交的二进制全部加1即可

反过来,就是所有与其无交点的二进制,即全部属于其补集的二进制,高位前缀和即可

还有二分上限的问题,可以证明是$2kn$的,这样可以保证每一个工人都出现了至少$kn$次,任取$k$次即可

考虑时间复杂度,总复杂度为$o(n^{2}k+(n2^{n}+nk)\log_{2}nk)$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 3600005
4 int n,m,x,day[N],tot[N],f[N];
5 bool pd(int k){
6 for(int i=0;i<(1<<n);i++)f[i]=0;
7 for(int i=1;i<=k;i++)f[day[i]]++;
8 for(int i=0;i<n;i++)
9 for(int j=0;j<(1<<n);j++)
10 if (j&(1<<i))f[j]+=f[j^(1<<i)];
11 for(int i=0;i<(1<<n);i++)
12 if (tot[i]*m>k-f[(1<<n)-1-i])return 0;
13 return 1;
14 }
15 int main(){
16 scanf("%d%d",&n,&m);
17 for(int i=0;i<n;i++){
18 scanf("%d",&x);
19 for(int j=1;j<N-4;j++)
20 if ((j-1)/x%2==0)day[j]|=(1<<i);
21 }
22 for(int i=0;i<(1<<n);i++)tot[i]=tot[i>>1]+(i&1);
23 int l=1,r=N-5;
24 while (l<r){
25 int mid=(l+r>>1);
26 if (pd(mid))r=mid;
27 else l=mid+1;
28 }
29 printf("%d",l);
30 }

最新文章

  1. session 和 cookie区别
  2. C#中线程对控件的访问
  3. vim 标准环境的配置
  4. Synergy 鼠标和键盘共享软件
  5. Qt的IDE开发环境(KDevelop,MonKey Studio,QDevlop,Dev-cpp,Cobras,Edyuk)
  6. UVA 11858 Frosh Week 逆序对统计
  7. overflow-x: scroll;横向滑动详细讲解
  8. RHEL6误安装RHEL7的包导致glibc被升级后系统崩溃处理方法
  9. 1; XHTML 基本知识
  10. How to check for null/empty/whitespace values with a single test?
  11. idc市场
  12. 七、eclipse添加离线约束,使不联网也能有一些代码的提示,例如dubbo
  13. Bug01_MyBatis_不允许有匹配 &quot;[xX][mM][lL]&quot; 的处理指令目标。
  14. bzoj3524 [Poi2014]Couriers/2223 [Coci 2009]PATULJCI
  15. 使用django + celery + redis 异步发送邮件
  16. Oracle案例10——HWM(高水位线)性能优化
  17. ci 框架插入时返回插入的id号
  18. 面试题思考: 什么是事务(ACID)?
  19. Ubuntu 查找文件夹中内容包含关键字的文件,路径为当前文件夹
  20. D - Find a way

热门文章

  1. 实践篇 -- Redis客户端缓存在SpringBoot应用的探究
  2. Docker 常见命令
  3. Java(20)参数传递之类名、抽象类、接口
  4. Javascript深入之作用域与闭包
  5. python实现地理编码
  6. 深度剖析Redis6的持久化机制(大量图片说明,简洁易懂)
  7. python解释器和Pycharm编辑器安装使用完整详细教程
  8. 【UE4 设计模式】适配器模式 Adapter Pattern
  9. 第1次 Beta Scrum Meeting
  10. flink中使用lambda表达式