KM(带权二分图匹配)的裸题,就是构图和细节恶心。。

感觉今天一直在搞二分图匹配。。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<map>
using namespace std;
map<string,int>mp;
char ss[10];
void Rose_max()
{int len=strlen(ss);for(int i=0;i<len;i++)if('A'<=ss[i]&&ss[i]<='Z')ss[i]=ss[i]-'A'+'a';
}
struct people
{int x,y;
}p[110];
bool v[110][110];//----------------------int n;
int love[110][110];
int exg[110],exb[110];
bool vg[110],vb[110];
int match[110],need[110];
bool findboy(int x)
{vg[x]=true;for(int i=1;i<=n;i++){if(vb[i]==false){int gap=exg[x]+exb[i]-love[x][i];if(gap==0){vb[i]=true;if(match[i]==0||findboy(match[i])==true){match[i]=x;return true;}}else need[i]=min(need[i],gap);}}return false;
}
void KM()
{memset(match,0,sizeof(match));memset(exb,0,sizeof(exb));for(int i=1;i<=n;i++){exg[i]=0;for(int j=1;j<=n;j++)exg[i]=max(exg[i],love[i][j]);}//initfor(int i=1;i<=n;i++){memset(need,63,sizeof(need));while(1){memset(vg,false,sizeof(vg));memset(vb,false,sizeof(vb));if(findboy(i)==true)break;int d=2147483647;for(int j=1;j<=n;j++)if(vb[j]==false)d=min(d,need[j]);for(int j=1;j<=n;j++){if(vg[j]==true)exg[j]-=d;if(vb[j]==true)exb[j]+=d;else need[j]-=d;}}}int ans=0;for(int i=1;i<=n;i++)ans+=love[match[i]][i];printf("%d\n",ans);
}//-----------KM--------------------------int main()
{freopen("cupid.in","r",stdin);freopen("cupid.out","w",stdout);int K,x,y;scanf("%d%d",&K,&n);for(int i=1;i<=2*n;i++){scanf("%d%d",&p[i].x,&p[i].y);memset(ss,0,sizeof(ss));scanf("%s",ss);Rose_max();mp[ss]=i;}for(int i=1;i<=n;i++)for(int j=n+1;j<=2*n;j++)if((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y)<=K*K){v[i][j]=true;for(int k=1;k<=n*2;k++){if(k!=i&&k!=j){int x1=p[i].x,y1=p[i].y,x2=p[j].x,y2=p[j].y,x3=p[k].x,y3=p[k].y;if(((x1<=x3&&x3<=x2)||(x1>=x3&&x3>=x2))&&((y1<=y3&&y3<=y2)||(y1>=y3&&y3>=y2)))if((y3-y1)*(x3-x2)==(y3-y2)*(x3-x1)){v[i][j]=false;break;}}}}memset(love,-63,sizeof(love));for(int i=1;i<=n;i++)for(int j=n+1;j<=2*n;j++)    if(v[i][j]==true)love[i][j-n]=1;while(1){memset(ss,0,sizeof(ss));scanf("%s",ss);Rose_max();if(ss[0]=='e'&&ss[1]=='n'&&ss[2]=='d'&&strlen(ss)==3)break;int p1=mp[ss];memset(ss,0,sizeof(ss));scanf("%s",ss);Rose_max();int p2=mp[ss];if(p2<=n)swap(p1,p2);scanf("%d",&x);if(v[p1][p2]==true)love[p1][p2-n]=x;}//------init------------
    KM();return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/8630125.html

bzoj2539: [Ctsc2000]丘比特的烦恼相关推荐

  1. cogs 290. [CTSC2000] 丘比特的烦恼

    290. [CTSC2000] 丘比特的烦恼 ★★★   输入文件:cupid.in   输出文件:cupid.out   简单对比 时间限制:1 s   内存限制:128 MB 随着社会的不断发展, ...

  2. 【二分图最佳匹配】丘比特的烦恼

    丘比特的烦恼(Cupid.exe) 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比 ...

  3. 【最大费用流】【最优匹配】丘比特的烦恼 Vijos 1169

    Vijos-P1169丘比特的烦恼 Accepted 描述 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适 ...

  4. P1500 丘比特的烦恼(KMMCMF)

    P1500 丘比特的烦恼(KM) 建图跑KM即可.判断两点是否被挡住,可以枚举,然后判断两距离之和是否等于该距离. 坑点: 名字大小写不敏感 #include<bits/stdc++.h> ...

  5. [BZOJ2539][CTSC2000][KM]丘比特的烦恼

    [Problem Description] 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们 ...

  6. 【BZOJ2539】【codevs1221】丘比特的烦恼,trie树+几何判断+费用流

    传送门1 传送门2 写在前面:写90分不如写10分难 思路:很简单的思路!trie把字符串变成数字编号,邻接矩阵记录点之间的边权,判断是否在射程内或线段上是否有人不用什么斜率!用两点距离!然后直接上费 ...

  7. P1500 丘比特的烦恼

    题目描述 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比特之箭.于是丘比特千里迢迢 ...

  8. 【二分图匹配】【CSTC2000】丘比特的烦恼

    题目描述 随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比特之箭.于是丘比特千里迢迢 ...

  9. wikioi 丘比特的烦恼 (最大权匹配)

    随着社会的不断发展,人与人之间的感情越来越功利化.最近,爱神丘比特发现,爱情也已不再是完全纯洁的了.这使得丘比特很是苦恼,他越来越难找到合适的男女,并向他们射去丘比特之箭.于是丘比特千里迢迢远赴中国, ...

  10. bzoj 乱刷计划 50/50

    前言 话说第一个板刷计划由于种种原因而告一段落了..其实那一版还有很多题想做,那就只能放一放了 附上效果图一张(几乎每一题都在我博客有题解): 打算 可以复习,重做自己做过的题,不局限于没做过的 乱刷 ...

最新文章

  1. TCP的协议特点(对于《Linux高性能服务器编程》的部分摘录以及自己的部分见解)
  2. Git创建本地分支并关联远程分支
  3. 实践lnmpde 的安装
  4. Navicat Premium 11.1.9在Linux系统下的安装
  5. powerdns与nginx结合实现以域名和IP方式访问web服务器80端口时分别跳转到不同页面...
  6. 虚拟环境安装Scrapy框架
  7. CSS之看穿绝对定位
  8. QT5开发及实例学习之九基本对话框(二)
  9. Sqlserver学习研究
  10. Javascript ES6 Promise异步链式读取文件解决回调地狱
  11. 2020年能够实现强AI吗?GPT-3 是强AI吗?
  12. 《JavaScript设计模式》初次笔记——wsdchong
  13. 因子主成分分析,因子载荷矩阵、因子解释度 因子得分-在基金净值和主要金融因子分析上的应用
  14. 外汇EA之马丁格尔EA
  15. python怎么学比较快,怎样快速学会python
  16. 一键拼接微信好友头像
  17. ubuntu 向日葵连接后即断开解决办法
  18. linux修复丢失的分区表
  19. Unity Shader Graph 使用安装步骤缺失材质球,以及场景原本物体材质球丢失问题解决
  20. 摹客经典在线原型例子(可编辑):支付宝APP-支付宝

热门文章

  1. 云计算机室怎么样映射d 盘,云服务器磁盘如何映射到本地磁盘
  2. python中列表的嵌套是指列表的元素是另一个列表_Python实现嵌套列表去重方法示例...
  3. LINUX当前目录下的文件夹大小
  4. LayaAir Geolocation 获取地理位置
  5. Linux CentOS 7.2 安装 Tomcat 8 服务器
  6. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第3节 maven标准目录结构和常用命令_07maven常用命令...
  7. 创建WEBPARTS全过程
  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_1_字符编码和字符集...
  9. 51Nod - 1385 凑数字
  10. django后台集成富文本编辑器Tinymce的使用