题意:

  众所周知,老师经常在班级上点名。点名是从名单上叫一个人的名字或者id来判断名单上这个人是否在场。学生们总是有各种各样的理由不来,所以他们需要其他人帮他们答到。但是打到工作不是这么简单,出于各种考虑,他们答道遵循以下原则。

1. 每个来上课的人必须给自己达到;

2. 每个来上课的人,只能帮另外一个人达到;

3. 如果一个人想帮助另外一个人答道,那么他们id的差至少大于等于K。

  现在老师又要点名了,请问是否存在一种情况,使老师相信每个人都到场了。

输入:

  第一行有一个整数T,表示接下来会有T组数据。

  对于每组数据,第一行包含三个整数N, M, K (1<=N<=10^9,2<=M,K<=150),告诉你一共有N个学生,有M个学生到场了,K是id的最小差。第二行有M个整数,表示到场学生的id。

思路:
二分图匹配

代码: 用的增广路算法,还没学MK

 #include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; const int MAXN = ; bool vis[MAXN];
bool present[MAXN];
int id[MAXN];
int matched[MAXN];
int N, M, K; inline int myAbs(int x) {
return x> ? x : -x;
} bool dfs(int v) {
vis[v] = true;
for (int u = ; u <= N; u++) if ((present[u]^present[v]) && (myAbs(u-v)>=K)) {
int w = matched[u];
if (w< || (!vis[w] && dfs(w))) {
matched[v] = u;
matched[u] = v;
return true;
}
}
return false;
} int Match() {
int res = ;
memset(matched, -, sizeof(matched));
for (int v = ; v <= N; v++) {
if (matched[v]<) {
memset(vis, false, sizeof(vis));
if (dfs(v)) {
res++;
}
}
}
return res;
} int main() {
#ifdef Phantom01
freopen("HNU11979.txt", "r", stdin);
#endif // Phantom01 int T;
scanf("%d", &T); while (T--) {
scanf("%d%d%d", &N, &M, &K);
for (int i = ; i < M; i++) {
scanf("%d", &id[i]);
}
if (N>(M<<)) {
puts("N");
continue;
}
memset(present, false, sizeof(present));
for (int i = ; i < M; i++)
present[id[i]] = true;
if ((N-M)==Match()) puts("Y");
else puts("N");
} return ;
}

HNU11979

HNU 11979 Roll call 二分图匹配的更多相关文章

  1. hdu 3829 Cat VS Dog 二分图匹配 最大点独立集

    Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Prob ...

  2. UVA 12549 - 二分图匹配

    题意:给定一个Y行X列的网格,网格种有重要位置和障碍物.要求用最少的机器人看守所有重要的位置,每个机器人放在一个格子里,面朝上下左右四个方向之一发出激光直到射到障碍物为止,沿途都是看守范围.机器人不会 ...

  3. POJ 1274 裸二分图匹配

    题意:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶,告诉每头奶牛愿意产奶的牛棚编号,求出最多能分配到的牛栏的数量. 分析:直接二分图匹配: #include<stdio.h> #includ ...

  4. BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2375  Solved: 1005[Submit][Sta ...

  5. HDU1281-棋盘游戏-二分图匹配

    先跑一个二分图匹配,然后一一删去匹配上的边,看能不能达到最大匹配数,不能这条边就是重要边 /*----------------------------------------------------- ...

  6. HDU 1083 网络流之二分图匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #inc ...

  7. hdu 5727 Necklace dfs+二分图匹配

    Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N mag ...

  8. BZOJ 1059 & 二分图匹配

    题意: 判断一个黑白染色的棋盘能否通过交换行或列使对角线上都是黑色. SOL: 真是有点醉...这种问题要么很神要么很水...第一眼感觉很水但就是不造怎么做...想了10分钟怎么感觉就是判断个数够不够 ...

  9. 【POJ 3020】Antenna Placement(二分图匹配)

    相当于用1*2的板覆盖给定的h*w的格子里的点,求最少的板.可以把格子相邻的分成两个集合,如下图,0为一个集合,1的为一个,也就是(行数+列数)为奇数的是一个集合,为偶数的为另一个集合.1010101 ...

随机推荐

  1. hiho 1590 - 紧张的会议室。区间问题

    题目链接 小Hi的公司最近员工增长迅速,同时大大小小的会议也越来越多:导致公司内的M间会议室非常紧张. 现在小Hi知道公司目前有N个会议,其中第i个会议的时间区间是(Si, Ei). 注意这里时间区间 ...

  2. 监控RMAN操作进度的脚本

    REM ------------------------------- REM Script to monitor rman backup/restore operations REM To run ...

  3. (2016北京集训十四)【xsy1556】股神小D - LCT

    题解: 题解居然是LCT……受教了 把所有区间按照端点排序,动态维护目前有重叠的区间,用LCT维护即可. 代码: #include<algorithm> #include<iostr ...

  4. 素数计数函数$\pi(x)\sim \Theta(\frac{x}{\log{x}})$的一个初等方法——素数定理的估计

    $\DeclareMathOperator{\lcm}{lcm}$ 本文的方法来源于GTM 190:"Problems in Algebraic Number Theory",给出 ...

  5. 【codeforces 128C】Games with Rectangle

    [题目链接]:http://codeforces.com/problemset/problem/128/C [题意] 让你一层一层地在n*m的网格上画k个递进关系的长方形;(要求一个矩形是包含在另外一 ...

  6. Camera Calibration 相机标定:原理简介(三)

    3 绝对圆锥曲线 在进一步了解相机标定前,有必要了解绝对圆锥曲线(Absolute Conic)这一概念. 对于一个3D空间的点x,其投影空间的坐标为:x~=[x1,x2,x3,x4]T.我们定义无穷 ...

  7. Linux 磁盘坏道检测和修复

    今天在实验室碰到一台机器,根分区和/upgrade分区变成了read-only system.当碰到这个问题的时候,我的第一反应很可能硬件出现了故障,我使用了如下的方法来检测和排除故障: 使用dmes ...

  8. ubuntu下不用拔盘就可以重新识别usb设备

    #!/bin/sh # Usage: ./resetusb ARGUMENT(The keyword for your usb device) var1=$ keyword=${var1:=Stora ...

  9. Tomcat连HBase报错: HTTP Status 500 - java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext

    Tomcat中连接HBase数据库,启动的时候报错: HTTP Status 500 - java.lang.AbstractMethodError: javax.servlet.jsp.JspFac ...

  10. Ryu基本操作的REST API调用演示样例

    import urllib2 import json def get_all_switches(): url = "http://127.0.0.1:8080/v1.0/topology/s ...