一个国王,他拥有一个国家。最近他因为国库里钱太多了,要征集一只部队要保卫国家。他选定了N个女兵和M个男兵,但事实上每征集一个兵他就要花10000RMB,即使国库里钱再多也伤不起啊。他发现,某男兵和某女兵之间有某种关系,这种关系可以使KING少花一些钱就可以征集到兵,不过国王也知道,在征兵的时候,每一个兵只能使用一种关系来少花钱。这时国王向你求助,问他最少要花多少的钱。

读入(conscription.in)

第一行:T,一共T组数据。

接下来T组数据,

第一行包括N,M,R

接下来的R行 包括Xi,Yi,Vi 表示如果招了第Xi个女兵,再招第Yi个男兵能省Vi元(同样表示如果招了第Yi个男兵,再招第Xi个女兵能也省Vi元)

输出(conscription.out)

共T行,表示每组数据的最终花费是多少(因为国库里的钱只有2^31-1,所以保证最终花费在maxlongint范围内)

这题是一道最小生成树的题 其实题目说的有点不太清楚 每个人只能用一种关系来少花钱 如果说一个人”被依赖“或”依赖别人“少花钱后这两人都不能利用关系了 这样的话很容易想到二分图匹配 写了半天最大流发现用二分图做也不会 而且数据太大 但题目的意思其实是每个人用”别人“来少花钱 而对方不受影响 那么一共有n+m个人 我们选n+m-1条边 也就是关系 因为第一个人被征用时没有人在队伍里 他不能利用任何关系 这样一来就是最小生成树 或者说最大生成树了 还要注意联通性问题 如果不连通 那么选不了n+m-1那么多条边 尽量多选就行了

 #include<iostream>
 #include<cstdio>
 #include<vector>
 #include<algorithm>
 #define LL long long
 using namespace std;
 ;
 struct Edge{
     LL from,to,dist;
     bool operator<(const Edge& rhs)const{
         return dist<rhs.dist;
     }
 };
 LL n,m,r,fa[maxn],x,y,z;
 vector<Edge> edges;
 void init(){
     ;i<=n+m;i++) fa[i]=i;
     edges.clear();
 }
 LL find(LL x){
     if(fa[x]==x) return x;
     return fa[x]=find(fa[x]);
 }
 int main(){
     freopen("conscription.in","r",stdin);
     freopen("conscription.out","w",stdout);
     int T;
     scanf("%d",&T);
     while(T--){
         scanf("%lld%lld%lld",&m,&n,&r);
         init();
         ;i<=r;i++){
             scanf("%lld%lld%lld",&x,&y,&z);
             edges.push_back((Edge){m+x+,y+,-z});
         }
         sort(edges.begin(),edges.end());
         LL ans=;
         ;i<edges.size();i++){
             Edge& e=edges[i];
             LL a=find(e.from),b=find(e.to);
             if(a==b) continue;
             ans+=e.dist;
             fa[a]=b;
         }
         printf(*(n+m)+ans);
     }
     fclose(stdin);
     fclose(stdout);
     ;
 }

NOIP模拟赛-征兵的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  3. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  4. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  5. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  6. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  7. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  8. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  9. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. 【WEB前端】CSS常用选择器

    1.1 标签选择器 就是用标签名来当做选择器. 1) 所有标签都能够当做选择器,比如body.h1.dl.ul.span等等 2) 不管这个标签藏的多深,都能够被选择上. 3) 选择的是所有的,而不是 ...

  2. final评价Ⅱ

    1.飞天小女警: 礼物挑选这个项目相比之前的发布功能更完善了些,但是整体界面还是不太美观,用户界面上呈现出的选项字不够清晰,使用起来不是很方便,但是增加了猜你喜欢的功能,可以根据用户的浏览记录猜测用户 ...

  3. 关于vue.js中事件处理器的练习

    html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...

  4. (转)Predictive learning vs. representation learning 预测学习 与 表示学习

    Predictive learning vs. representation learning  预测学习 与 表示学习 When you take a machine learning class, ...

  5. JSBinding+Bridge.NET限制

    限制: 框架代码不可以访问逻辑代码.这是最基本的. 框架里的函数 f 带数组参数时,逻辑代码调用 f 的话,数组只能做为输入,也就是说,如果在框架函数 f 里修改了数组的内容,那么逻辑代码是无法取得新 ...

  6. CentOS 7下源码安装MySQL 5.6

    本文转载,并非原创. 目录 准备工作 运行环境 确认你的安装版本 下载MySQL 安装MySQL 准备安装环境 编译和安装 配置MySQL 单实例配置 单实例配置方法 添加防火墙 启动MySQL 重启 ...

  7. Eclipse中将Java项目转换成Web项目的方法

    前言: 用Eclipse开发项目的时候,把一个Web项目导入到Eclipse里会变成了一个java工程,将无法在Tomcat中进行部署运行. 方法: 1.找到.project文件,找到里面的<n ...

  8. 转载:scala中:: , +:, :+, :::, ++的区别

    原文链接:https://segmentfault.com/a/1190000005083578 初学Scala的人都会被Seq的各种操作符所confuse.下面简单列举一下各个Seq操作符的区别. ...

  9. RDLC An unexpected error occurred while compiling expressions. Native compiler return value: '-1073741511'

    One of my web project, which has a rdlc file using some expressions, was working fine while developi ...

  10. day27_面向对象进阶

    飒飒 : . . . . 六.描述符 1 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协 ...