雷神领域(并查集真是个好东西)并查集+流氓dp
考场上,整整看了半个小时以上的题目!!!
化简题意:
给定一个全0矩阵,一些坐标点(x,y)为1,当三个点可以构成一个直角三角形时(直角边长为整数)拓展为一个矩形,之后从(0,0)出发,求最多的占用行数或占用列数
反正就是很麻烦的题就对了。。。
考场历程:
1、没看懂题,就去看下一题了
2、第三题可做性极差(tpsort+dp或网络流)
3、n^2拓展完了新点,发现样例就是个弟弟!(拓展完变成全1矩阵)
4、最小最大,想着二分来着,但是秒pass
5、想强行建边,跑最短路
6、dp根本想不出来....(行和列)
7、考完之后发现这题就是在侮辱智商
solution:
首先,n^2拓展点很容易,枚举点如何暴力即可。
先来讲dp怎么写吧.....
这个dp就是流氓.....
怎么说呢,考场上一直在想:跑一个行最优,列最优,比最小值,就成了最长不下降子序列之类的东西...
但是路径不一定是一个嘢....
于是考场就暴毙了
其实,dp方程式....
- 二维,f[i][j]表示从(0,0)拓展到当前点的最大值
- 如果当前点是1点,+1
- 如果不是,就更新,从左边和上边找一个最大值续上
- 我管你是行最大还是列最大,都给我最大然后+1再说
这就是这个dp欠的地方(还是我太弱了)
dp的事解决了,加上之前的n^2拓展点,理论上5000*5000应该是能过去的,但是25000000,加上3~4的常数,确实是会T掉1~2个点。
于是,这里有一个结论(我考场上也发现了呃呃呃)如果是对应坐标的三个点可以拓展另外一个点,那么,这三个点的坐标一定对应了四个数(两个数对)
两个数对自由组合,就成了4个点,而我们已知了三个点,只需要在查询的时候查询一下是否出现过四个数就行了。
有点难以理解....借图
给出的三个点的坐标为(1,5001)(1,5002),(2,5002),我们把横坐标放在一个集合,纵坐标放在一个集合{1,2}{5001,5002},自由组合,就能够快速地判断是否存在这个点了。
因为是两个集合,所以并查集数组要开两倍
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int n;
int fa[maxn*+];
inline int find(int x)
{return fa[x]==x?x:fa[x]=find(fa[x]);}
int f[maxn+][maxn+]; int main()
{
scanf("%d",&n);
for(int i=;i<=;i++)
fa[i]=i;
for(int i=;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
fa[find(x)]=find(y+maxn);
}
for(int i=;i<=maxn;i++)
{
for(int j=;j<=maxn;j++)
{
if(find(i)==find(j+maxn))
{
f[i][j]=f[i-][j-]+;
}
else
f[i][j]=max(f[i][j-],f[i-][j]);
}
}
printf("%d",f[maxn][maxn]);
return ;
}
(完)
雷神领域(并查集真是个好东西)并查集+流氓dp的更多相关文章
- 并查集——poj1703(带权并查集入门)
传送门:Find them, Catch them 题意:警察抓获N个罪犯,这些罪犯只可能属于两个团伙中的一个,现在给出M个条件(D a b表示a和b不在同一团伙),对于每一个询问(A a b)确定a ...
- 问题 A: 雷神领域
传送门 题目描述 L君,S大陆首屈一指的天才魔法师,创造了一个新魔法:雷神领域. 这个魔法会首先在地面上形成正方网格魔法阵列,然后在某些位置召唤雷电轴标.注意:一个位置只能有一个雷电轴标存在. 雷电 ...
- 收到西门子发来的UG告知函怎么办?Solidworks盗版被查如何防范?厂商是怎么样查到公司在用盗版,有什么方法可以核实真假?……
收到西门子发来的UG告知函怎么办?Solidworks盗版被查如何防范?厂商是怎么样查到公司在用盗版,有什么方法可以核实真假?--很多企业信息化管理leader或者老板都希望能够通过一些取巧的办法来防 ...
- windows+mysql集群搭建-三分钟搞定集群
注:本文来源: 陈晓婵 < windows+mysql集群搭建-三分钟搞定集群 > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...
- 搭建高可用mongodb集群(三)—— 深入副本集内部机制
在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...
- Apache shiro集群实现 (八) web集群时session同步的3种方法
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Apache shiro集群实现 (七)分布式集群系统下---cache共享
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Mongodb集群搭建之 Sharding+ Replica Sets集群架构(2)
参考http://blog.51cto.com/kaliarch/2047358 一.概述 1.1 背景 为解决mongodb在replica set每个从节点上面的数据库均是对数据库的全量拷贝,从节 ...
随机推荐
- js常用正则整理
个人博客: http://mcchen.club //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.ex ...
- MySQL学习(四)深入理解乐观锁与悲观锁
转载自:http://www.hollischuang.com/archives/934 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据 ...
- 致远OA_0day批量植Cknife马一步到位
最近各位师傅都在刷这个嘛,原本的exp是上传一个test123456.jsp的命令执行的马子,不过我在试的时候发现替换成C刀一句话出错,原因未知,并且test123456.jsp如果存在的话用原来ex ...
- Kali桥接模式DHCP自动获取IP失败(VMware)
Kali桥接模式DHCP自动获取IP失败笔者用的是VMware运行Kali Linux,突然发现桥接模式无法上网,只能使用NAT模式.身为有一点点强迫症的人来说,这就很不爽了.于是马上切换为桥接模式, ...
- spring-boot-dependencies、spring-boot-starter-parent、io.spring.platform详解
上一篇文章介绍了springboot依赖版本号管理的几种方式,现在来详细分析一下spring-boot-dependencies.spring-boot-starter-parent.io.sprin ...
- Pathon中numpy模块
目录 numpy模块 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 fromstring/fromfunctions 矩阵的运算 常用矩阵运函数 矩阵的点乘 矩阵的逆 矩阵的其他操作 nump ...
- SpringBoot 配置提示功能
目的 配置自动提示的辅助功能可以让配置写起来更快,准确率大大提高. springboot jar 包含提供所有支持的配置属性细节的元数据文件.文件的目的是为了让 IDE 开发者在用户使用 applic ...
- 判断是否存在UI被触摸
) || (Input.touchCount > && Input.GetTouch().phase == TouchPhase.Began)) { #if UNITY_ANDR ...
- 我发现了Unity3D的2D Light Renderer, 随后就把它抄了过来
. 前几个月,偶然在群里看到有人讨论Unity3D光照,于是我又萌生了一个新的目标----把它抄过来! . 众所周知,3D渲染的整个流水线都跟光照密不可分,相关的技术更是数不甚数,而2D游戏的光照通常 ...
- 设计模式C++描述----03.工厂(Factory)模式
工厂模式属于创建型模式,大致可以分为三类,简单工厂模式.工厂方法模式.抽象工厂模式. 一. 简单工厂模式 简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品.当增加新的产品时,就需要 ...