PowerOJ2512: 小红灌溉【染色】

2023-11-11

题目链接


  划重点!!!每个有菜的点只能浇一次且恰好一次,所以意思就是,譬如某个菜的位置是(x, y),那么,行x、列y的浇水方案只能使用其中的一个。

  以此类推,我们给每个有蔬菜的位置的(x, y)的x点与y点链接一条无向边,代表x和y只能选择其中的一个,那么这个问题不就转化成了0、1染色问题了嘛?然后选择权值最少的0、1块就可以了。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
#include <unordered_map>
#include <unordered_set>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define pii pair<int, int>
#define MP(a, b) make_pair(a, b)
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxN = 1e2 + 7;
const int maxP = maxN << 1, maxM = (maxN * maxN) << 1;
int N, M, mp[maxN][maxN], node, c[maxP];
namespace Graph
{
    int head[maxP], cnt;
    struct Eddge
    {
        int nex, to;
        Eddge(int a=-1, int b=0):nex(a), to(b) {}
    } edge[maxM];
    inline void addEddge(int u, int v)
    {
        edge[cnt] = Eddge(head[u], v);
        head[u] = cnt++;
    }
    inline void _add(int u, int v) { addEddge(u, v); addEddge(v, u); }
    inline void init()
    {
        cnt = 0;
        for(int i=1; i<=node; i++) head[i] = -1;
    }
};
using namespace Graph;
int col[maxP], sum[2], que[maxP], top, tail;;
void bfs(int S)
{
    memset(sum, 0, sizeof(sum));
    top = tail = 0;
    col[S] = 0; sum[0] += c[S];
    que[tail++] = S;
    while(top < tail)
    {
        int u = que[top++];
        for(int i=head[u], v; ~i; i=edge[i].nex)
        {
            v = edge[i].to;
            if(~col[v]) continue;
            col[v] = col[u] ^ 1;
            sum[col[v]] += c[v];
            que[tail++] = v;
        }
    }
}
int main()
{
    int T; scanf("%d", &T);
    for(int Cas=1; Cas <= T; Cas++)
    {
        scanf("%d%d", &N, &M);
        node = N + M; for(int i=1; i<=node; i++) col[i] = -1;
        init();
        for(int i=1; i<=N; i++) for(int j=1; j<=M; j++)
        {
            scanf("%d", &mp[i][j]);
            if(mp[i][j]) _add(i, N + j);
        }
        for(int i=1; i<=node; i++) scanf("%d", &c[i]);
        int ans = 0;
        for(int i=1; i<=node; i++)
        {
            if(~col[i]) continue;
            bfs(i);
            ans += min(sum[0], sum[1]);
        }
        printf("Case #%d: %d\n", Cas, ans);
    }
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerOJ2512: 小红灌溉【染色】 的相关文章

  • DFS与BFS总结

    总结 bfs多用于在一次选择中可以有多种情况的选择 而dfs是确定唯一性如唯一路径 xff0c 也就是深度 当问题是全盘式的搜索 xff0c 不在乎形式或者具体情况呈现还是详细过程的 xff0c 使用bfs 当问题是要求具体过程 xff0c
  • 洛谷 P1825 [USACO11OPEN]Corn Maze S(bfs)

    题目传送 1 这仅仅是一道加了传送门的bfs 2 仅仅加了一个传送门 xff0c 就卡了我一下午 3 门存在不成对的情况 span class token macro property span class token directive
  • bfs之走地图(迷宫)

    题目 xff1a 东东找妹纸 东东手里有一张神奇的地图 xff0c 通过地图可以找到妹子 xff01 地图显示 xff0c 0表示可以走 xff0c 1表示不可以走 xff0c 左上角是入口 xff0c 右下角是妹纸 xff0c 这两个位置
  • leetcode 1345. Jump Game IV | 1345. 跳跃游戏 IV(BFS)

    题目 https leetcode com problems jump game iv 题解 好久没做 hard 了 xff0c 今天时间多 xff0c 挑战一下 用 lqy 同学的话说 xff0c 这题叫做 苦难题 xff0c 哈哈哈 暴
  • C语言DFS和BFS解决迷宫问题

    C语言DFS与BFS 迷宫问题 题目描述 给定一个 N times MN M 方格的迷宫 xff0c 迷宫里有 TT 处障碍 xff0c 障碍处不可通过 在迷宫中移动有上下左右四种方式 xff0c 每次只能移动一个方格 数据保证起点上没有障
  • 176. 装满的油箱(bfs)

    题目链接 xff1a https www acwing com problem content description 178 有N个城市 xff08 编号0 1 N 1 xff09 和M条道路 xff0c 构成一张无向图 在每个城市里边都
  • c++:DFS与BFS详解

    DFS xff08 深度优先搜索 xff09 xff1a 从某个状态开始 xff0c 不断转移状态到无法转移为止 xff0c 然后退回到前一步 xff0c 继续转移到其他状态 xff0c 不断重复 xff0c 直至找到最终的解 总是从最开始
  • 拓扑排序(广度优先搜索实现)

    有向无环图可以用来表示各种事物的顺序 比如工作顺序 一些事情必须在另一些事情完成之后才能开始进行 那么 为了获得正确的工作顺序 一件事情开始之前 必须保证它的前置条件全部满足 就需要用到拓扑排序 拓扑排序其实就是在有向无环图中 只要存在边
  • 算法和数据结构项目练习7-广度优先搜索(BFS)

    Breadth First Search 项目介绍 代码实现 项目介绍 本项目实现广度优先搜索算法 读取txt文件中第一行表示图中顶点数的单个整数N 读取txt文件中第二行开始是一对对的整数 每一对表示图中某条边两端的两个顶点 图是无向的
  • Olya and Energy Drinks【Codeforces 877D】【BFS+思维+剪枝】

    Codeforces Round 442 Div 2 D 这天给学弟学妹们出了这道题 没想到背锅了 感觉要0A了 QAQ 确实 今天我再次写的时候也WA了好几发 哎 这锅背了 看到有些的代码code 访问过的点都标记为mp x y 但是这样
  • Sum It Up HDU - 1258【DFS】

    Given a specified total t and a list of n integers find all distinct sums using numbers from the list that add up to t F
  • Oil Deposits(BFS)

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits GeoSurvComp works with one
  • Instrusive 【HDU - 5040】【2014 北京 BFS】

    题目链接 一道有着很多需要细节的地方需要注意的题 挺不错的 这题的数据也是给的很好 然后讲一下题意吧 题意 有一个N N的网格 有起点M和终点T 我们从起点需要走到终点 每一步需要花费的时间是单位一 但是呢 我们不能被摄影机拍摄到 摄影机是
  • 境界的彼方_lduoj_bfs宽搜

    Description wyy是一个著名动画 境界的彼方 的男主 此时他非常的慌张 因为女主栗山未来进入了境界的彼方内部 并且花费了大量的血量去拯救wyy wyy此时也进入了境界的彼方 他妈给了他一张地图去寻找境界的彼方的核心去拯救女主 现
  • 搜索学习心得

    在学习了众多搜索的方式后 不由感慨 啊 太巨了 今天huayucaiji我就给大家讲一讲C 搜索的心得吧 深度优先搜索 广度优先搜索 迭代加深搜索 一个一个讲吧 深度优先搜索 深度优先搜索 下简称 深搜 简称DFS 是简洁明了的搜索方式 以
  • 图论 笔记

    关于存图 如果是有权值的边 可以用pair define pii pair
  • LeetCode_BinaryTree_1129. Shortest Path with Alternating Colors 颜色交替的最短路径【BFS求最短路径】【java】【中等】

    一 题目描述 英文描述 You are given an integer n the number of nodes in a directed graph where the nodes are labeled from 0 to n 1
  • 【算法学习笔记】19:拓扑排序

    1 简述 计算拓扑序列的一个方式是 用BFS来尝试访问所有的节点 但是有一个约束就是只有入度为 0 0 0的节点才能被加入到扩展队列里 每次从队列里取出一个节点 也就同时在图中将这个节点拆除 所以它的所有后继的节点都减少 1 1 1 如果已
  • How far away ? 【HDU - 2586】【DFS+链式前向星优化】

    题目链接 其实这道题可以不用链式前向星优化换做vector lt gt 也是可以跑的 只是会许会慢些而已 来换个中文题意好读些 勇气小镇是一个有着n个房屋的小镇 为什么把它叫做勇气小镇呢 这个故事就要从勇气小镇成立的那天说起了 修建小镇的时
  • 数据结构--树存储结构 & 深度优先遍历 & 广度优先遍历 通俗易懂

    树的概念 首先 树是一种常用的非线性数据结构 是以边 Edge 相连的节点 Node 的集合 每个节点存储对应的值 当存在子节点时与之相连 根节点 是树的首个节点 边 所有节点都由边相连 用于标识节点间的关系 叶子结点 树的末端节点 它们没

随机推荐

  • 图信号处理基础------Foundations in Graph Signal Processing

    本篇博文意在用例子的形式解释图信号处理基础 目的是记录总结自己的学习过程 有兴趣的读者也可也一起交流 前言 图是一种包含多种数据属性的不规则结构 然而 传统的图论处理方法都注重分析底层的图结构而不是图上的信号 随着多传感器测量技术的快速发展
  • 字节跳动后端实习一面(凉)

    问啥啥不会的一面 基础知识 进程和线程的区别 进程和线程死掉会不会影响其它进程线程 线程共享的方式 物理地址和虚拟地址 当输入一个URL之后发生了什么 每一个网址都会查浏览器中的缓存么 三次握手中的参数是什么 socket 为什么要有TIM
  • JDK源码剖析之PriorityQueue优先级队列

    写在前面 版本信息 JDK1 8 PriorityQueue介绍 在数据结构中 队列分为FIFO LIFO 两种模型 分别为先进先出 后进后出 先进后出 后进先出 栈 而一切数据结构都是基于数组或者是链表实现 在Java中 定义了Queue
  • linux系统图形界面突然打不开解决方法之一

    有很多朋友都会遇到这样的情况 上次用的linux的图形界面还是好好的 现在就突然不能进入了 造成这样的原因 有2种可能 就我个人而言 a 你的设备突然断电造成linux系统某些数据被破坏 b 你的 分区已经满了 考研通过df 命令查看 b的
  • lv4 嵌入式开发-4 标准IO的读写(二进制方式)

    目录 1 标准I O 按对象读写 2 标准I O 小结 3 标准I O 思考和练习 文本文件和二进制的区别 存储的格式不同 文本文件只能存储文本 除了文本都是二进制文件 补充计算机内码概念 文本符号在计算机内部的编码 计算机内部只能存储数字
  • SpringCloud搭建分布式服务架构(通俗易懂,步骤清晰)(转载)

    问题引入 什么是SpringCloud 在了解这个之前需要有微服务的概念 基于springBoot的一套实现微服务的框架 提供了微服务所需的配置管理 基于Http协议的restful风格 返回异步数据 SpringCould组件架构图 在这
  • python如何安装sklearn库_1.sklearn库的安装

    sklearn库 sklearn是scikit learn的简称 是一个基于Python的第三方模块 sklearn库集成了一些常用的机器学习方法 在进行机器学习任务时 并不需要实现算法 只需要简单的调用sklearn库中提供的模块就能完成
  • 微信小程序:canvas生成图片分享

    背景 小程序通常会开发生成图片 分享到朋友圈的功能 如图所示该图片由 背景图 用户上传图片 用户昵称 小程序码构成 首先 在小程序里进行绘图操作需要用到
  • java 方法引用无效_java – 方法引用 – 无效的方法引用 – 不能从静态上下文引用...

    因为StringJoiner length占用零个参数 所以方法引用总是需要一个StringJoiner 任意实例 并返回一个整数 换句话说 第一个分配的方法ref等效于 Function lengthFunc new Function O
  • Ubuntu12.0.4 安装xmpp 服务器ejabberd

    http www cnblogs com dyingbleed archive 2013 04 04 2999885 html
  • 计算机图形学常用算法实现3 多边形扫描转换算法-扫描线算法

    运行环境 vs2015 winform 其他环境只需要替换对应的画点画线算法即可 这个算法其实很复杂的 实现起来需要有耐心 一步一步按照算法思路来写代码 在算法中 我使用的是静态链表 c 没有指针 下面的AET为活性边表 NET存储新边表
  • JS 数组转其他格式

    let arr 1 2 const arr 1 2 const newArr arr map item gt return key item value item console log newArr key 1 value 1 key 2
  • PyTorch学习笔记9

    PyTorch学习笔记9 整理笔记视频来源 问答系统 文本摘要系统 大规模预训练语言模型 一 问答系统 SQuAD数据集 给定一段文字作为context 给定一个问题question 从context中寻找一段连续的文字 text span
  • 毕业三周年,又一个离别季

    今天应该算是一个特别的日子 2011年的6月23日 我正式离校了 当时分别的场景还依稀在眼前展现 虽然我们没有跟别人一样哭的稀里哗啦 但是谁心里都明白 以后见面的日子真的不会太多 今天是2014年6月23日 看着很多人在空间发表大学生涯结束
  • 【超分顶会详解+部署】ESRT:Transformer for Single Image Super-Resolution

    文章目录 ESRT 1 超分基本知识 1 1 SRF 1 2 xxx img 1 3 裁剪 1 4 超分模型评估标准 2 LCB LTB 模块 2 1 序列模型 3 损失函数 4 部署运行 4 1 数据集 4 1 1 训练集 4 1 2 验
  • [专利与论文-19]:江苏省南京市2022年电子信息申报通知(中、高级)

    官网地址 南京人力资源和社会保障学会 官网通知 南京人力资源和社会保障学会 申报时间 2022 6 21到2022 07 29 过时不候 2021年申报地址 网上学习 江苏人社网办大厅 南京人社网上办事大厅 2022年申报地址 江苏省人力资
  • 华为OD机试 - We Are A Team

    题目描述 总共有 n 个人在机房 每个人有一个标号 1 lt 标号 lt n 他们分成了多个团队 需要你根据收到的 m 条消息判定指定的两个人是否在一个团队中 具体的 消息构成为 a b c 整数 a b 分别代表两个人的标号 整数 c 代
  • 计算机日期函数公式大全,常用的Excel日期函数大全

    Excel日期大家都会用 但是你知道Excel中有多少日期和时间函数吗 Excel为我们提供了大约20个日期和时间函数 这些函数对于处理表格中的日期数据都是非常有用的 下面介绍几个常用的Excel日期函数及其实际应用案例 1 处理动态日期
  • 对区块链的分析理解

    概述 狭义来讲 区块链是一种按照时间顺序将数据区块以链条的方式组合成特定数据结构 并以密码学方式保证的不可篡改和不可伪造的去中心化共享总账 Decentralized shared ledger 能够安全存储简单的 有先后关系的 能在系统内
  • PowerOJ2512: 小红灌溉【染色】

    题目链接 划重点 每个有菜的点只能浇一次且恰好一次 所以意思就是 譬如某个菜的位置是 x y 那么 行x 列y的浇水方案只能使用其中的一个 以此类推 我们给每个有蔬菜的位置的 x y 的x点与y点链接一条无向边 代表x和y只能选择其中的一个