bzoj3820 虫逢
Description
Input
Output
Sample Input
H[P,86(^,<n&7x_sg"ly67m2h$n+5'!vhp5ia.@gm:4-njsqsig!h[p,7x_s86(^>aNQ22'B5'!V<fd!f!6xnjsq>!]dHp5I
Sample Output
4
1
2
explanation
输入文件一共有两行。四个基因组分别是
“H[P,”,“86(^”,“,<n&”,“7x_s”,“g"ly”, “67m2”<br="">
“H$n+”,“5'!V”,“Hp5I”,“A.@G”,“M:4-”,“NJsq”
“siG!”,“H[P,”,“7X_S”,“86(^”,“>aNQ”,“22'B”
“5'!V”,“<fd!”,“f!6x”,“njsq”,“>!]d”,“Hp5I”
明显,1、3是同源的,2、4是同源的。
HINT
#include <bits/stdc++.h>
#define il inline
#define RG register
#define ll long long
#define rhl (2573287)
#define M (5000010)
#define N (40010) using namespace std; struct edge{ int nt,to; }g[M];
struct data{ int x,y,z; }q[N]; int a[N][],mt[N],q1[M],q2[M],vis[M],head[rhl],n,m,l,num,cnt,res,flg;
char ch; il int cmp(const data &a,const data &b){
if (a.x==b.x) return a.y<b.y; return a.x<b.x;
} il int insert(RG int to){
RG int from=to%rhl;
for (RG int i=head[from];i;i=g[i].nt) if (g[i].to==to) return i;
g[++num]=(edge){head[from],to},head[from]=num; return num;
} il int eql(RG int x,RG int y){
++flg; RG int mch=;
for (RG int i=;i<=l;++i) vis[a[x][i]]=flg;
for (RG int i=;i<=l;++i) mch+=vis[a[y][i]]==flg;
return mch==(l>>);
} il int solve(){
random_shuffle(q1+,q1+num+),random_shuffle(q2+,q2+num+),cnt=; RG int mch=;
for (RG int i=;i<=n;++i){
if (mt[i]) continue; ++cnt,q[cnt].x=q1[a[i][]],q[cnt].y=q2[a[i][]],q[cnt].z=i;
for (RG int j=;j<=l;++j) q[cnt].x=min(q[cnt].x,q1[a[i][j]]),q[cnt].y=min(q[cnt].y,q2[a[i][j]]);
}
sort(q+,q+cnt+,cmp);
for (RG int i=,j;i<cnt;++i){
if (mt[q[i].z]) continue;
for (j=i;j<cnt && q[j+].x==q[j].x && q[j+].y==q[j].y;++j);
for (RG int u=i;u<j;++u){
if (mt[q[u].z]) continue;
for (RG int v=u+;v<=j;++v)
if (!mt[q[v].z] && eql(q[u].z,q[v].z)){
mt[q[u].z]=q[v].z,mt[q[v].z]=q[u].z,++mch; break;
}
}
}
return mch;
} int main(){
#ifndef ONLINE_JUDGE
freopen("pairing.in","r",stdin);
freopen("pairing.out","w",stdout);
#endif
srand(),cin>>n>>m>>l,n<<=; while (ch<'!') ch=getchar();
for (RG int i=;i<=n;++i)
for (RG int j=,x=;j<=l;++j,x=){
for (RG int k=;k<=;++k,ch=getchar()) x=(x<<)+(int)ch;
a[i][j]=insert(x);
}
for (RG int i=;i<=num;++i) q1[i]=q2[i]=i;
res=n>>; while (res) res-=solve();
for (RG int i=;i<=n;++i) printf("%d\n",mt[i]); return ;
}
bzoj3820 虫逢的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 捉虫记(四)线程安全导致的HighCpu
一个朋友QQ群里说网站启动后会cpu很高,想要帮忙看一下dump. 1.打开windbg加载dump文件后第一个命令lmf,这个命令显示加载的dll以及路径,这样子可以找个dll来帮忙加载sos,(额 ...
- ZT 螨虫知识2
病情分析:过敏是治不好的,只能做到避免接触.指导意见:螨虫的话就不要跟狗多接触,狗的寄生虫很多,还有草地,尤其是狗经常去的地方,草地就是螨虫的传播介质.你是过敏性体质除了被免过敏性源外,还要增强体质, ...
- ZT 螨虫的话就不要跟狗多接触,狗的寄生虫很多,还有草地,
病情分析:过敏是治不好的,只能做到避免接触.指导意见:螨虫的话就不要跟狗多接触,狗的寄生虫很多,还有草地,尤其是狗经常去的地方,草地就是螨虫的传播介质.你是过敏性体质除了被免 过敏性源外,还要增强体质 ...
- python--爬虫入门(八)体验HTMLParser解析网页,网页抓取解析整合练习
python系列均基于python3.4环境 基本概念 html.parser的核心是HTMLParser类.工作的流程是:当你feed给它一个类似HTML格式的字符串时,它会调用goahead方法 ...
- 洛谷 P1092 虫食算 Label:dfs
题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...
- [书]WALL·E、龙与地下铁、中国美丽的故事、故事新编、四十自述、书虫、人工智能、大话数据结构
下午有时间,逛了逛了书城,看到了一些书.在这里总结一些自己的感受. 一.<龙与地下铁> 这本书是我首先看到的,就在靠前的新书区.是小说,我没看里面的内容,但是被书封皮的宣传文案 ...
- PHP里的“夏令虫”
转自:http://www.2cto.com/kf/201308/235073.html 今儿,我遇到一个大怪物 -- 夏令虫 ╮(╯▽╰)╭,学艺不精,因为他掉进大坑里去了.坑是这样挖的: 以前,我 ...
- 使用PHP搭建书虫网站
年前开始了一个新项目,书虫项目的启动,项目组里面我是负责搭建网站的.以前听说过PHP的大名,就是没怎么看过,只能从一无所知开始了. 来自PHP手册的介绍:PHP, 即“PHP: Hypertext P ...
随机推荐
- PIE SDK栅格RGB渲染
1. 功能简介 RGB色彩模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几乎包 ...
- ubuntu root用图形界面登录
http://blog.csdn.net/weimine/article/details/69055536 http://blog.csdn.net/gongxifacai_believe/artic ...
- 2019.03.26 读书笔记 关于event
event 主要是给委托加了一层保护,不能任意的 class.delegate=null,class.delegate=fun1,不能由调用者去任意支配,而是由class自己去增加或减少,用+=.-= ...
- HDU 4460 Friend Chains
Problem Description For a group of people, there is an idea that everyone is equals to or less than ...
- 读书笔记-NIO的工作方式
读书笔记-NIO的工作方式 1.BIO是阻塞IO,一旦阻塞线程将失去对CPU的使用权,当前的网络IO有一些解决办法:1)一个客户端对应一个处理线程:2)采用线程池.但也会出问题. 2.NIO的关键类C ...
- C# 类型、对象、线程栈和托管堆在运行时的关系
我们将讨论类型.对象.线程栈和托管堆在运行时的相互关系,假定有以下两个类定义: internal class Employee { public int GetYearsEmplo ...
- 获取httpservletrequest所有参数的名称和值
1.方法 private Map showParams(HttpServletRequest request) { Map map = new HashMap(); Enumeration param ...
- node.js服务器端下载、上传文件
使用request 下载文件: 安装依赖: npm i requestsourceUrl下载源,targetUrl保存路径 async function downLoadFile(sourceUrl, ...
- Java 的版本历史与特性
Java SE 8[2014-03-14发行] Lambda表达式 Pipelines和Streams Date和Time API Default方法 Type注解 Nashhorn JavaScri ...
- Mybatis generator 逆向生成代码
Mybatis generator 逆向生成代码 简单介绍 本文介绍用mybatis逆向生成javaben dao接口 1.创建maven项目 创建相应的包 附上项目创建完成的图片 然后在pom.xm ...