HDU

来源:互联网 发布:疲劳检测算法 编辑:程序博客网 时间:2024/06/17 11:36

这是一个简单的匈牙利算法的应用,不是很难理解,套上匈牙利算法的板子很容易,所以说,要的就是匈牙利算法这个板子

以前写过一个匈牙利算法的题,但是没太理解,昨天找了一个题,先凭着自己的理解 写了一遍,虽然过了样例,但是自己就感觉不对,

然后在看 匈牙利算法的板子,觉得理解的很透彻了,,,,then 改这个题,写完以后 蜜汁过不了样例,对着板子看,没错啊,写的还可以啊,,刚刚又看了一遍,原来最开始的时候就开错了 一个数组,,m d z z 。 。 

#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn = 100000 + 7;int m[maxn], v[65], vis[maxn];int T, n, min_, max_;struct node {    int l, r;}b[65];void init() {    memset(m, 0, sizeof m);    memset(v, 0, sizeof v);    scanf("%d", &n);    for(int i = 1; i <= n; ++i)        scanf("%d%d", &b[i].l, &b[i].r);}bool find_(int s) {    for(int j = b[s].l; j <= b[s].r; ++j) {        if(!vis[j]) {            vis[j] = 1;            if(m[j] == 0 || find_(m[j])) {                m[j] = s;                v[s] = j;                return true;            }        }    }    return false;}void solve() {    int cnt = 0;    for(int i = n; i >= 1; --i) {        memset(vis, 0, sizeof vis);        if(find_(i)) cnt++;    }    cout << cnt << endl;    int f = 0;    for(int i = 1; i <= n; ++i) {        if(v[i]) {            if(f) cout << " " << i ;            else { cout << i; f = 1; }        }    }    cout << endl;}int main() {    scanf("%d", &T);    while(T--) {        init();        solve();    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子一年级数学成绩不好怎么办 成绩差的孩子该怎么办 面对成绩差的孩子该怎么办 六年级数学成绩差该怎么办 孩子数学物理成绩差该怎么办 高三成绩很差该怎么办 孩子学习成绩差家长该怎么办 孩子一年级语文成绩不好怎么办 孩子上网成瘾不听父母话怎么办 10岁数学不开窍怎么办 孩子五年级数学不好怎么办 一岁宝宝难断奶怎么办 2岁宝宝断不了奶怎么办 快2岁宝宝不听话怎么办 2岁半的宝宝不听话怎么办 3岁宝宝哭闹不止怎么办 2岁宝宝爱打人怎么办 两周岁宝宝吃东西就吐怎么办 两周岁宝宝不爱吃饭怎么办 两周岁宝宝反复发烧怎么办 两周岁宝宝咳嗽厉害怎么办 2岁宝宝体内有火怎么办 4岁宝宝数都不会怎么办 两岁宝宝太撅怎么办 儿童晚上发烧白天不发烧怎么办 宝宝晚上睡觉认人怎么办 两岁宝宝尿裤子怎么办 分手了想和好怎么办说 2岁半宝宝胆小怎么办 1岁半宝宝胆小怎么办 分手了还是想他怎么办 两岁宝宝夜惊怎么办 孩子误吃了牙膏怎么办 孩子跳舞脸上的妆卸不掉怎么办 4周岁还不会说话怎么办 宝贝2岁多还不会说话怎么办 孩子20个月离婚怎么办 两个月宝宝闹夜怎么办 两个月宝宝闹瞌睡怎么办 2岁宝宝话特别多怎么办 宝宝3岁还不会说话怎么办