BZOJ 4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III

本来想做一道搜索

最后发现是一道并查集的水题

如果两个邻格之间没有路

就把他们合并就行了

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=105;
const int MAXM=20005;
inline int read(){int x=0,f=1,ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int f[MAXM];
inline int find(int x){return f[x]=(f[x]==x)?f[x]:find(f[x]);
}
inline bool same(int x,int y){return find(x)==find(y);
}
inline void add(int x,int y){f[find(x)]=find(y);
}
int a[MAXN][MAXN];
int b[MAXN][MAXN];
int siz[MAXM];
int q[MAXM],tail;
int main(){int n=read(),k=read(),r=read();for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)f[i*n+j]=i*n+j;for(int i=1;i<=r;i++){int r1=read(),c1=read(),r2=read(),c2=read();if(r1==r2+1) a[r2][c1]=1;if(r2==r1+1) a[r1][c1]=1;if(c1==c2+1) b[r1][c2]=1;if(c2==c1+1) b[r1][c1]=1;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(!a[i][j]&&i<n) add(i*n+j,i*n+j+n);if(!b[i][j]&&j<n) add(i*n+j,i*n+j+1);}for(int i=1;i<=k;i++){int r=read(),c=read();if(!siz[find(r*n+c)]) q[++tail]=find(r*n+c);siz[find(r*n+c)]++;}int ans=0;// cout<<tail<<endl;for(int i=1;i<=tail;i++) ans+=siz[q[i]]*(k-siz[q[i]]),k-=siz[q[i]];printf("%d\n",ans);return 0;
}

  

转载于:https://www.cnblogs.com/gcyyzf/p/9850190.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何写dblink?

dblink是什么&#xff1f; 是数据库的链接&#xff0c;就像电话线一样&#xff0c;是一个通道&#xff0c;当我们要跨本地数据库&#xff0c; 访问另外一个数据库表中的数据时&#xff0c;本地数据库中就必须要创建远程数据库的dblink, 通过dblink本地数据库可以像访问本地数…

Building designing UVA - 11039

先取正的和负的绝对值较小者为开头 。然后交替从正负数中取绝对值最小但比上一个大的。 证明&#xff1a; 1.开头选正负数中绝对值较小的&#xff1a;否则能再多放1个。 2.交替选的时候选最小的符合条件的&#xff1a;如果大的符合&#xff0c;换小的仍符合。 #include <ios…

js判断浏览器种类

只区分浏览器&#xff0c;不考虑版本 function myBrowser(){var userAgent navigator.userAgent; //取得浏览器的userAgent字符串if (userAgent.indexOf("Opera") > -1) {return "Opera"}; //判断是否Opera浏览器if (userAgent.indexOf("Firefox…

axios get post下载文件

let url URLParser.submitUrl(/download);return new Promise((resolve, reject) > { axios({ method: get,// post url: url,     data : , responseType: blob }).then((response) > { const blob new Blob([response.data])…

oracle如何创建视图

视图的优点&#xff1a; 1.对数据库的访问&#xff0c;因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性&#xff0c;试图可从多个表检索数据。 4.对于相同的数据可产生不同的视图。 视图分为简单视图和复杂…

docker+selenium grid解决node执行经常卡死

执行用例时出现下图&#xff1a; 可以在启动node节点容器时添加如下红色字体的参数 docker run -d -p 5903:5900 --shm-size512m --link selenium_hub:hub --name chrome_node-5903 -e NODE_MAX_INSTANCES5 -e NODE_MAX_SESSION5 selenium/node-chrome-debug 启动容器后到grid…

oracle授权操作

1、给数据库用户授权&#xff08;对象为用户表&#xff09; GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username} 详解&#xff1a; privilege&#xff1a; select&#xff1a;查询 insert&#xff1a;插入 update&#xff1a;更新 delete&am…

oracle死锁的解决方法

1、 关于死锁 死锁是指两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相等待的进程称为死锁进…

高级软件工程第四次作业:两只小熊队团队作业

一、团队展示 队名&#xff1a;两只小熊队 队员学号 周菲&#xff08;队长&#xff09;学号&#xff1a; 201810812007 孔繁燕&#xff08;队员&#xff09;学号&#xff1a;201810812001 一句话描述拟作的团队项目&#xff1a;充分发挥主动积极性&#xff0c;通过团队提升自我…

关于QueryRunner数据查询以及常用方法

QueryRunner数据查询操作调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r, Object.params)ResultSetHandler r 结果集的处理方式,传递ResultSetHandler接口实现类Object.params SQL语句中的?占位符注意: query方法返回值,返回的是T 泛型, 具体返回值…

js的校验

1、判断是否为数字&#xff08;整数、小数&#xff09; //使用isNaN()函数 //isNaN()的缺点就在于 null、空格以及空串会被按照0来处理 //isNaN: Not a Number function isRealNum(val){// isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除if(val "" || v…

oracle存储过程的写法

create or replace procedure 要创建的存储过程名称(入参a in varchar2, 出参b out varchar2) is变量c varchar2(2000);变量d number(10);异常变量e exception;beginif 入参a is null thenraise 异常e;end if;//跳到异常处理for cc in (select语句) LOOP//执行sqlv_sql:sel…

杂项:WCF

ylbtech-杂项&#xff1a;WCFWindows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架&#xff0c;可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting&#xff0c;WebService&#xff0c;Socket的机制&#xff0c;并融合…

js定时器的写法

js 定时器有以下两个方法&#xff1a; setInterval() &#xff1a;按照指定的周期&#xff08;以毫秒计&#xff09;来调用函数或计算表达式。方法会不停地调用函数&#xff0c;直到 clearInterval() 被调用或窗口被关闭。 setTimeout() &#xff1a;在指定的毫秒数后调用函数…

Oracle特殊恢复原理与实战(DSI系列)

1、深入浅出Oracle(DSI系列Ⅰ) 2、Oracle特殊恢复原理与实战&#xff08;DSI系列Ⅱ&#xff09; 3、Oracle SQL Tuning&#xff08;DSI系列Ⅲ&#xff09;即将开设 4、Oracle DB Performance Diagnostics&#xff08;DSI系列Ⅳ&#xff09;2018年内将开设 5、Oracle DSI核心揭密…

jSignature开发实例

插件描述&#xff1a;jQuery手写签名插件jSignature &#xff0c;实现H5APP、网页 手写签名涂鸦 保存图片 代码实例 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP index.jsp starti…

react todolist代码优化

Todolist.js import React, { Component,Fragment } from react; import TodoItem from ./TodoItem; import ./style.css; class Todolist extends Component {constructor(props) { //最优先执行的函数super(props);this.state{inputValue:,list:[]}this.handleinputChangethi…

json、xml

json&#xff1a;(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。简单地说&#xff0c;JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串&#xff0c;然后就可以在函数之间轻松地传递这个字符串&#xff0c;或者在异步应用程序中将字符串从 …

Math.round(),Math.ceil(),Math.floor()的区别

round() 方法可把一个数字舍入为最接近的整数。 就是基本的四舍五入 document.write(Math.round(0.49)) 结果为&#xff1a;0document.write(Math.round(0.60)) 结果为&#xff1a;1document.write(Math.round(-5.1)) 结果为&#xff1a;-5document.write(Math.round(-5.6)) 结…

modifying的博客

https://www.cnblogs.com/JackLi07/转载于:https://www.cnblogs.com/wyh-blog/p/9882283.html