【JZOJ1404】菱形内的计数【并查集】

SAP面试全过程(已拿offer) 周五打电话给我说过了SAP第一轮面试,第二轮要在下周四北京,这几天终于体会到了什么叫做重压下的感觉,越复习越虚,看别人的面经都感觉卧槽这问题也巨难了吧...连去北京可以见妹子这种事情都感觉一点心情都没有。面前准备固然是要有的,但关键是平时就要有料,多想想自己做的项目。当作一个给自己的提醒吧! 阅读详情

题目:

题目链接:https://jzoj.net/senior/#main/show/1404
给出一个菱形,问这个菱形中有多少个内部不含边的平行四边形。


思路:

我们先把这个菱形转换为正方形。例如样例的转换方式如下:
在这里插入图片描述
那么接下来我们就是要求有多少个中间没有边的矩形。
我们可以记录每一个矩形的大小和最右上方 ( x 1 , y 1 ) (x1,y1) (x1,y1)和最左下方的点 ( x 2 , y 2 ) (x2,y2) (x2,y2),这样就可以算出每一个矩形的面积。最后枚举每一个矩形,如果满足 ( x 1 − x 2 ) ( y 1 − y 2 ) = s (x1-x2)(y1-y2)=s (x1−x2)(y1−y2)=s,那么这就是一个矩形。
如何判断矩形中间有没有边?我们只要枚举每一条边,如果这一条边的两边在一个连通块内,那么就将这一个连通块标记一下即可。


代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int N=800010,M=900;
int n,x,y,p1,p2,ans,father[N],MAXx[N],MINx[N],MAXy[N],MINy[N],size[N];
char c,ch[M*2][M*2];
//   \92   /47

int com(int x,int y)
{
	return (x-1)*n+y;
}

int find(int x)
{
	return x==father[x]?x:father[x]=find(father[x]);
}

void merge(int x,int y)
{
	x=find(x),y=find(y);
	if (x==y) return;
	MAXx[x]=max(MAXx[x],MAXx[y]);
	MAXy[x]=max(MAXy[x],MAXy[y]);
	MINx[x]=min(MINx[x],MINx[y]);
	MINy[x]=min(MINy[x],MINy[y]);
	size[x]+=size[y];
	father[y]=x;
}

int main()
{
	scanf("%d\n",&n);
	for (int i=1;i<=n;i++)
		for (int j=1;j<=n;j++)
		{
			int p=com(i,j);
			father[p]=p; size[p]=1;
			MAXx[p]=i+1; MINx[p]=i;
			MAXy[p]=j+1; MINy[p]=j;
		}
	for (int i=1;i<=n*2;i++)
	{
		int j=0;
		while (c=getchar())
		{
			if (c=='\n') break;
			ch[i][++j]=c;
		}
	}
	for (int i=1;i<=n;i++)
		for (int j=2;j<=n;j++)
		{
			x=i+j-1; y=n+1-i+j-1;
			if (ch[x][y]==' ') merge(com(i,j),com(i,j-1));
		}
	for (int i=1;i<=n;i++)
		for (int j=2;j<=n;j++)
		{
			x=i+j-1; y=n+2*i-x;
			if (ch[x][y]==' ') merge(com(j,i),com(j-1,i));
		}
	for (int i=1;i<=n;i++)
		for (int j=2;j<=n;j++)
		{
			x=i+j-1; y=n+1-i+j-1;
			if (ch[x][y]!=' ' && find(com(i,j))==find(com(i,j-1)))
				size[find(com(i,j))]=-233;
		}
	for (int i=1;i<=n;i++)
		for (int j=2;j<=n;j++)
		{
			x=i+j-1; y=n+2*i-x;
			if (ch[x][y]!=' ' && find(com(j,i))==find(com(j-1,i)))
				size[find(com(j,i))]=-233;
		}
	for (int i=1;i<=n*n;i++)
		if (father[i]==i && size[i]==(MAXx[i]-MINx[i])*(MAXy[i]-MINy[i]))
			ans++;
	printf("%d",ans);
	return 0;
}
BOE CHPI协议解析:高速显示驱动的核心技术 本文深入解析了BOE CHPI协议,这是一种为高分辨率、高刷新率显示面板设计的时钟嵌入式高速点对点接口技术。文章详细阐述了其三层架构(物理层、链路层、协议层)、核心机制(如链路训练与BCC通道)以及如何通过高速串行差分传输解决大尺寸屏幕内部数据传输的带宽与干扰难题,是驱动8K、窄边框等高端显示应用的关键核心技术。 阅读详情

相关推荐

(一)利用Python实现数据集读取,Python基本文件操作介绍

机器学习是计算机对大量数据的分析过程,在机器学习的实际项目中,通常都需要准备数据集,数据集通常包含的数据数量是庞大的。例如,在处理计算机视觉领域的项目时,每一张图片都是一个单独的文件,为了提高模型训练的效果,图片数量通常会比较多,因此需要合理且高效的操作将所有的图片数据读取。本篇旨在介绍如何用Python对海量文件进行遍历,也是机器学习实践的第一步。.........

ZZR2631574030的博客 6357

菱形内的计数 jzoj 1404 模拟+递推

题目大意 教主上电视了!这个消息绝对是一个爆炸性的新闻。一经传开,大街上瞬间就没人了(都回家看电视去了),商店打烊,工厂停业。大家都把电视机的音量开到最大,教主的声音回响在大街小巷。   小L给小X慌乱地打开自己家的电视机,发现所有频道都播放的是教主的采访节目(-_-bbb)。只见电视屏幕上的教主笑意吟吟,给大家出了一道难题:   一个边长为n的大菱形被均匀地划分成了n*n个边长为1的小菱形组成

A_loud_name 579

不到200块!手把手教你用ZYNQ7010和AD9363攒一台自己的开源SDR硬件(附BOM清单)

本文详细介绍了如何用不到200元的预算,基于ZYNQ7010 FPGA和AD9363射频芯片打造一台功能完备的开源SDR硬件平台。从核心组件选型、PCB设计到焊接调试,提供全流程实战指南,特别适合预算有限的硬件爱好者和创客群体探索无线通信世界。

weixin_26854829的博客 479

菱形内的计数

Description  教主上电视了!这个消息绝对是一个爆炸性的新闻。一经传开,大街上瞬间就没人了(都回家看电视去了),商店打烊,工厂停业。大家都把电视机的音量开到最大,教主的声音回响在大街小巷。   小L给小X慌乱地打开自己家的电视机,发现所有频道都播放的是教主的采访节目(-_-bbb)。只见电视屏幕上的教主笑意吟吟,给大家出了一道难题:   一个边长为n的大菱形被均匀地划分成了n*n个边长

Jacky35 869

基于Canfestival的对象字典工具objdictedit.py的运行环境配置

本文以菜狗的视角,一步一步地对对象字典的环境进行配置,旨在能给读者一个比较详细的参考,不恰之处,还请指正。

在线求职中... 3708

【AI蛋白预测实战】零门槛在Colab上运行AlphaFold2全流程解析

本文为零基础用户提供了在谷歌Colab平台上运行AlphaFold2进行蛋白质结构预测的完整实战指南。通过ColabFold项目,用户无需本地高性能硬件,即可免费利用云端GPU完成从序列输入到3D结构生成和结果可视化的全流程,大幅降低了AI蛋白预测的技术门槛。

mqtt6iot的博客 912

PTA46题(Java基础练习)

Java作业练习(1) 这学期Java课的第一次作业嗷 (做完再删掉这句话) 我觉得可以 7-1 写一个程序,输出你的姓名、年龄、所在学院、所在专业、所在班级 写一个程序,输出你的姓名、年龄、所在学院、所在专业、所在班级。 输出样例: 姓名:张三 年龄:20 所在学院:计算机学院 所在专业:计算机科学与技术 所在班级:1班 public class Main{ public static...

qq_41260107的博客 9万+

家庭路由器从入门到精通:连接设置、优化排障全指南

路由器作为家庭网络的核心枢纽,其工作原理基于NAT(网络地址转换)和DHCP(动态主机配置协议)两大关键技术。NAT负责将公网IP转换为多个内网IP,实现多设备共享上网;DHCP则自动为接入设备分配IP地址,简化网络配置。这些技术共同构建了稳定、安全的局域网环境,其价值在于为智能家居、在线办公、高清影音和游戏娱乐等场景提供可靠的网络基础。理解路由器的物理连接、后台设置与故障排查逻辑,是优化Wi-Fi信号覆盖、提升网络性能、保障家庭网络安全的关键。本文以路由器配置与排障为核心,详细解析从WAN/LAN口区分、

weixin_33393017的博客 406

jzoj1404-菱形内的计数【模拟】

正题 题目链接:https://jzoj.net/senior/#main/show/1404 题目大意 给出一个菱形中有一些边,求有多少个中间没有边的平行四边形。 解题思路 我们将一个平行四边形拆成两个等腰三角形和一个平行于菱形中间对角线的平行四边形,我们可以判断上面那个等腰三角形在判断下面的。 codecodecode #pragma GCC optimize("O2") #includ...

QuantAsk 351

AutoSar实战营 - 总目录

欢迎大家来学习《AutoSar实战营》专栏,该篇为总目录,方便以后大家直接进入需要学习的文章。 ~正所谓独乐乐不如众乐乐 - - ~1, AutoSar之DaVinci开发环境2,BswM模块之Ecu State Handling1)读写DID功能 《AutoSar实战》读写DID之一:CDD准备 《AutoSar实战》读写DID之二:工具链配置 《AutoSar实战》读写DID之三:代码实现2)功能寻址 《AutoSar实战》禁止功能寻址

weixin_48498880的博客 3633

人工蜂群优化算法(ABC)详解:原理、实现与应用

人工蜂群算法(Artificial Bee Colony, ABC)是Karaboga于2005年提出的一种群体智能优化算法,其灵感来源于蜜蜂群体在自然界中高效的采蜜行为。该算法通过模拟雇佣蜂、观察蜂和侦察蜂三种角色的分工协作来寻找最优解。在ABC算法中,每个潜在的解决方案被视为一个“食物源”,其质量由适应度函数评估。雇佣蜂负责在已知优质食物源附近进行局部开采;观察蜂根据雇佣蜂分享的信息,以一定概率选择并跟进优质食物源;侦察蜂则随机探索新区域,防止种群陷入局部最优。

qq_42212808的博客 393

#模拟#[jzoj 1404] 菱形内的计数

题目 教主上电视了!这个消息绝对是一个爆炸性的新闻。一经传开,大街上瞬间就没人了(都回家看电视去了),商店打烊,工厂停业。大家都把电视机的音量开到最大,教主的声音回响在大街小巷。   小L给小X慌乱地打开自己家的电视机,发现所有频道都播放的是教主的采访节目(-_-bbb)。只见电视屏幕上的教主笑意吟吟,给大家出了一道难题:   一个边长为n的大菱形被均匀地划分成了n*n个边长为1的小菱形组成的网格...

Nowed 262

【RT-DETR涨点改进】小目标检测、特征融合改进篇 | TGRS 2024 | RT-DETR引入CSFM上下文选择融合模块,适合多模态检测、红外小目标检测、小目标检测、遥感目标检测等任务有效涨点

本文提出了一种改进RT-DETR目标检测模型的方法,通过引入上下文选择融合模块(CSFM)显著提升复杂背景下小目标和低对比度目标的检测精度。CSFM模块采用多尺度特征融合和动态特征选择机制,有效增强模型的全局上下文感知能力,同时保留细节特征。该模块通过通道减少机制和空间信息调节,实现从粗到细的特征聚合,减少误报并提高轮廓检测精度。实验表明,改进后的RT-DETR模型在多个基准测试中表现优异,计算效率与检测精度均优于现有方法。文章还详细介绍了模块配置和yaml文件修改方法,为模型部署提供指导。

Ai缝合怪、助力小伙伴高效发论文 1724

JZOJ 1404.菱形内的计数

模拟

Ajwallet 398

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

2019.11.09【NOIP提高组】模拟 B 组

解题报告JZOJ 1402 偷懒的小X题目分析代码JZOJ 1403 渡河代码(开O2AC的SPFA)JZOJ 1404 菱形内的计数题目分析代码JZOJ 1405 电缆建设题目分析代码 JZOJ 1402 偷懒的小X 题目 把一组数据按一定顺序依次插入数组中(即第iii个数为a[i]a[i]a[i]),最后得出来就已经是一个堆,即不需要任何交换操作,若有多种方法,输出字典序最大的一组。满足n=2...

lemondinosaur的博客 474

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

2019.11.09【NOIP提高组】模拟 B 组 总结

题目 #简单分治#[jzoj 2940] 偷懒的小X #kruskal#[jzoj 2940] 电缆建设 比赛时态度还好。 (100+50+0+100)=250(100+50+0+100)=250(100+50+0+100)=250 一开始,看了前三题,觉得题目难度是按顺序来的。 第一道题目一开始打了一个贪心,后来发现必然有锅就暂时放在一边。 然后第二题想了好一会,想暴力,感觉广搜肯定有错,di...

Nowed 339

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【洛谷P4997】不围棋【并查集】【模拟】

题目大意: 题目链接:https://www.luogu.org/problemnew/show/P4997 「不围棋」是一种非常有趣的棋类游戏。 大家都知道,围棋的「气」是指一个棋子所在的联通块相邻的空格。两粒棋如果在棋盘上线段的两端就认为是相邻的,也就是在同一个连通块里。比如在图中,白子为四个独立的连通块,黑子构成一个连通块,绿色点是黑子连通块唯一的「气」: 「提子」是指将没有「气」的棋子提...

stoorz 5083

【洛谷P3631】方格染色

题目 题目链接:https://www.luogu.com.cn/problem/P3631 Sam 和他的妹妹 Sara 有一个包含 n×mn \times mn×m 个方格的表格。他们想要将其中的每个方格都染成红色或蓝色。出于个人喜好,他们想要表格中每个 2×22 \times 22×2 的方形区域都包含奇数个( 111 个或 333 个)红色方格。例如,下面是一个合法的表格染色方案(R 代表红色,B 代表蓝色): B B R B R R B B B B R R B R B 可是昨天晚上,有人已经给表

stoorz 1000

【洛谷P5651】基础最短路练习题【dfs】【并查集】

题目: 给定nnn个点mmm条边的无向简单联通图GGG,边有边权。保证没有重边和自环。 定义一条简单路径的权值为路径上所有边边权的异或和。 保证GGG中不存在简单环使得边权异或和不为0。 QQQ次询问xxx到yyy的最短简单路径。 思路: 题目保证了每一个简单环的异或和均为0。也就是说对于环上的任意两点(x,y)(x,y)(x,y),从x→yx\to yx→y的两条路径的权值相等。 所以对于每一...

stoorz 704

【牛客CSP-S提高组赛前集训营1】C - 小w的魔术扑克【并查集】

题目大意: 题目链接:https://ac.nowcoder.com/acm/contest/1100/C 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准备用它来出老千作弊。小w想要打出一些顺子,我们定义打出一个l到r的顺子需要面值为从l到r的卡牌各一张。...

stoorz 542

【USACO2.4.3】【洛谷P1522】牛的旅行【最短路】【并查集】

题目大意: 题目链接: USACO:http://train.usaco.org/usacoprob2?a=TyEfGmq7aAo&amp;amp;amp;S=cowtour 洛谷:https://www.luogu.org/problemnew/show/P1522 有一个无向图,可以在两个不同的联通块中选择其中两个结点并连接,求此时的新联通块的最远两点之间的距离的最小值。 思路: n≤150n\leq1...

stoorz 475

小X的液体混合【并查集】

题目大意: 题目链接:http://10.156.17.250/JudgeOnline/showproblem?problem_id=2476 (学校内网) - 思路: 我们把每种液体看成一个节点,会发生反应的种液体之间连边。那么就会出现一张不一定连通的图。 例如: 我们现在随便找一个点,把它加入容器中。 那么可以肯定的是,与这个点连边的所有点加入到容器中都可以把危险系数乘222,那么就将这...

stoorz 468

【POJ 1456】Supermarket【并查集】

题目大意: 每个商品都有保质期和价值,每天只能卖出一个商品。求能卖出的最大价值。 思路: 这道题可以用贪心做。因为保质期前都可以卖,所以为了答案最有,就尽量将商品晚卖一些(即最后一天再卖)。就可以保证能卖出的价值最大。证明就不证了,很显而易见。 还可以用并查集做。设father[i]father[i]father[i]表示保质期在第iii天的商品必须在第father[i]father[...

stoorz 455

【洛谷P2700】【JZOJ2936】逐个击破【并查集】

题目大意: 题目链接:https://jzoj.net/senior/#main/show/2936 题目图片: http://wx4.sinaimg.cn/mw690/0060lm7Tly1fwdvsmk40uj30jh0gw0tb.jpg http://wx2.sinaimg.cn/mw690/0060lm7Tly1fwdvsmjlq6j30j20fodfw.jpg 给出一棵树和几个标记点,每...

stoorz 353

【JZOJ5177】TRAVEL【并查集】

题目大意: 题目链接:https://jzoj.net/senior/#main/show/5177 题目图片: http://wx2.sinaimg.cn/mw690/0060lm7Tly1fwlxfazp5aj30g90fz77c.jpg http://wx2.sinaimg.cn/mw690/0060lm7Tly1fwlxf650nfj30f605374v.jpg http://wx3.si...

stoorz 350

【洛谷P1197】星球大战【并查集】

题目大意: 题目链接:https://www.luogu.org/problemnew/show/P1197 给出一张图,每次删除一个点(以及连接它的边),求每次删除后的连通块个数。 思路: 时间倒流应该是很显然的吧。 由于并查集的删除操作并不好搞,所以可以考虑反过来,把“删除”变成“建造”。 首先用vectorvectorvector记录每一个点连接的边。不需要用领接表,因为每条边只需访问1次...

stoorz 346
上一篇: 【JZOJ1402】偷懒的小X【dfs】
下一篇: 【JZOJ1405】电缆建设【最小生成树】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值