CF626F. Bear and Fair Set

Solution

单走一个网络流。
先对余数0..40..40..4分别建一个点,从S−>0..4S->0..4S−>0..4分别连容量n/5n/5n/5的边。

对于每一个限制,相当于把[0,b][0,b][0,b]分成了若干个小区间,并且可以求得每个小区间中数的个数,然后由0..40..40..4的点ttt分别向每个小区间[l,r][l,r][l,r],连一条容量为∑l≤i≤r[imod5=t]\sum_{l\leq i\leq r}[i\;mod\;5=t]∑l≤i≤r​[imod5=t],即区间内模555余数为ttt的数的个数。

最后从每个区间向TTT连一条容量为区间长度的边。

跑网络流判断是否满流即可。

Code

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se secondusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-11;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=1e9+7;
const int MAXN=300005;
const int INF=0x3f3f3f3f;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
PR a[MAXN];
queue<int> que;
struct enode{int nxt,v,c; } e[MAXN];
int dist[MAXN],start[MAXN],head[MAXN],nodenum=1,n,R,m,S,T,N;
int get(int l,int r,int k)
{int ans=0;for (int i=l;i<=r;i++) ans+=(i%5==k);return ans;
}
void add(int u,int v,int c)
{//  cout<<u<<" "<<v<<" "<<c<<endl;if (!c) return;e[++nodenum]=(enode){head[u],v,c},head[u]=nodenum;e[++nodenum]=(enode){head[v],u,0},head[v]=nodenum;
}
int bfs()
{for (int i=0;i<=N;i++) start[i]=head[i],dist[i]=INF;dist[S]=1,que.push(S);while (!que.empty()){int q=que.front(); que.pop();for (int i=head[q];i;i=e[i].nxt) {enode p=e[i];if (p.c<=0||dist[p.v]!=INF) continue;dist[p.v]=dist[q]+1;que.push(p.v);}}return dist[T]!=INF;
}
int dfs(int x,int T,int f)
{if (x==T) return f;int ans=0;for (int &i=start[x];i;i=e[i].nxt){if (e[i].c<=0||dist[e[i].v]!=dist[x]+1) continue;int t=dfs(e[i].v,T,min(f,e[i].c));e[i].c-=t,e[i^1].c+=t,f-=t,ans+=t;}return ans;
}
int dinic()
{int ans=0;while (bfs()) ans+=dfs(S,T,INF);return ans;
}
signed main()
{n=read(),R=read(),m=read(),S=1,T=2;for (int i=1;i<=5;i++) add(S,i+2,n/5);for (int i=1;i<=m;i++) a[i].fi=read(),a[i].se=read();a[++m]=MP(0,0),a[++m]=MP(R,n);sort(a+1,a+m+1);for (int j=2;j<=m;j++) {if (a[j].se<a[j-1].se) { puts("unfair"); return 0; }add(j+6,T,a[j].se-a[j-1].se);}for (int i=0;i<=4;i++) for (int j=2;j<=m;j++)add(i+3,j+6,get(a[j-1].fi+1,a[j].fi,i));N=m+6;if (dinic()==n) puts("fair");else puts("unfair");return 0;
}

CF626F. Bear and Fair Set相关推荐

  1. 2016区域赛前冲刺训练

    UPD 2016.10.23 shift-and (2题) Codeforces 训练 现在已经完成了: 191 [Codeforces Round #377] (6/6) Div 2 A Buy a ...

  2. Code Forces Bear and Forgotten Tree 3 639B

    B. Bear and Forgotten Tree 3 time limit per test2 seconds memory limit per test256 megabytes inputst ...

  3. CVPR 2022 | ConvNeXt - FAIR再探纯卷积结构的极限(优于Transformer)

    作者| cocoon 编辑| 3D视觉开发者社区 前言 FAIR又出新作了!一篇<2020年代的卷积网络>的横空出世,让国内外CV圈的眼光都聚焦于此,不少大牛都纷纷下场参与讨论.研究团队以 ...

  4. 比MAE更强,FAIR新方法MaskFeat用HOG刷新多个SOTA

    来源:机器之心 本文约1700字,建议阅读5分钟 mask-and-predict 的方法可能会成为计算机视觉领域的新流派. 自监督预训练在自然语言处理方面取得了惊人的成功,其基本思路中包含着掩码预测 ...

  5. FAIR 训练 AI 玩拳击,效果堪比真人比赛,试探+周旋+爆头

    来源:AI科技评论本文约2300字,建议阅读5分钟 两个人工智能体学会了拳击. AI 拳击可以有多好玩? 小红红,吃我一拳. 嘿,我挡. 前期先试探周旋几次,再找机会吧. 没错,就是这个空隙,爆头. ...

  6. 谁是全球最顶级AI实验室?DeepMind、OpenAI和FAIR霸榜前三

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 转载自:新智元 [导读]如果问研究人员,世界上最强的AI实验室有哪些?大家肯定是「萝卜白菜,各 ...

  7. FAIR发布两大更新:PyTorch1.8和一个10亿参数自监督模型,自监督也学GPT-3套路?

    2021-03-05 19:38:58 作者 | 青暮 今天,FAIR发布了两项重要更新,分别是PyTorch 1.8以及10亿参数自监督模型SEER. 根据官方推特,此次更新重点包括:编译器更新.代 ...

  8. 使用Fair kripke来判断kripke的可达性和可避免性

    可达性 画个图看看上面是什么意思. 假设我们要判断AA={C}的可达性,从而构造如下fair kripke. 这个时候,存在公平计算,AC(t)wAC(t)^wAC(t)w,从而fair kripke ...

  9. MIT与FAIR提出「mixup」,利用数据和标签的随机线性插值提高神经网络的健壮性

    来源: 雷克世界 摘要:麻省理工学院(MIT)与Facebook人工智能研究院(FAIR)提出了一种能够构建虚拟训练样本的方法--mixup,提高了神经网络的健壮性. 近日,麻省理工学院(MIT)与F ...

最新文章

  1. 让你的VB6.0支持滚轮操作
  2. Documentum中关于日期时间类型字段的特殊处理
  3. 013_CSS兄弟选择器
  4. oracle中to_char的用法
  5. JVM、JRE和JDK的概念
  6. 求职:网站编辑或网页美工(北京)
  7. 字符串不替代_TI-Nspire 系列的字符串操作
  8. 央视消息 | 没考驾照的人可能要恭喜了!
  9. 美国热搜 “1个字形容2020年”:IBM 的代码回复太太太亮了!
  10. Maven: Could not transfer artifact xxx from/to xxx
  11. 【数据结构的魅力】003.算法归并与随机快排
  12. Sqlserver 2008:sp_msforeachdb 坑爹的错误陷阱
  13. pinpoint 磁盘不足的坑
  14. Spring MVC基础环境搭建
  15. Window mobile 实现CLIST始终选中最新添加数据
  16. php 获取农历,PHP获取农历、阳历转阴历
  17. 高电平和低电平之间的电平芯片会识别成什么
  18. 移动磁盘显示盘符但无法打开,提示格式化
  19. 芯片漫游指南(1)-- UVM世界观
  20. Qt中正确设置子窗口关闭方式

热门文章

  1. 豆瓣评分9.4!这部大片你不应该错过,每一秒都是不敢看的残忍!
  2. 这场戏里,到底是谁脏了?
  3. 史上最惨锦鲤即将来袭!奖品堪比5年高考3年模拟!
  4. 10分钟让你快速掌握Excel的16项重要技巧
  5. linux cp 强制yes,linux cp实现强制覆盖
  6. as本地仓库更改_将gitee仓库连接GitHub Desktop。新建更改仓库并上传至gitee。
  7. python中闭包不是立刻执行_一道神奇的Python面试题,你会吗?
  8. apk源码查看工具_如何查看Linux命令工具的源码?
  9. mysql卸载时弹框,win10卸载mysql5安装mysql8
  10. relation does not exist报错是什么意思_为什么Zookeeper天生就是一副分布式锁的胚子?...