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打开GDB、Dwg数据
1. 功能简介 目前不同的GIS软件平台具有自己独特支持的数据格式,如ESRI的File GeoDataBase和Personal GeoDataBase.MapInfo的mif数据.AutoCAD的 ...
- JS 判断节点类型
节点类型的分类 节点类型 说明 值 元素节点 每一个HTML标签都是一个元素节点,如 <div> . <p>.<ul>等 1 属性节点 元素节点(HTML标签)的属 ...
- oracle 笔记---(三)__体系架构
查看控制文件位置 SQL> show parameter control_files; NAME TYPE VALUE ------------------------------------ ...
- oracle 单实例DG(配置篇二)
一,DG搭建实例--主库配置 one : 归档配置 01,查看归档 1 select log_mode,force_logging from v$database; 02,开启归档 关闭数据库重新启 ...
- GreenPlum 大数据平台--运维(一)
.最后分析或真空或创建表或等... Select * from pg_stat_operations where schemaname='SCHEMA NAME ' and actionname in ...
- leetcode 862 shorest subarray with sum at least K
https://leetcode.com/problems/shortest-subarray-with-sum-at-least-k/ 首先回顾一下求max子数组的值的方法是:记录一个前缀min值, ...
- 前端性能优化之优化图片 && 优化显示图片
前端图片优化一直以来都是热门话题,从需求上来看,很多站点往往是图片体积大于代码体积, 图片请求多余代码文件请求, 给前端的性能带来了很大的困扰,那么应该如何解决呢? 零. 认识图片 我们通常使用的图片 ...
- 【ORACLE】sqlplus使用记录
1.设置输出长度 SEGMENT_NAME--------------------------- BYTES----------TZ01_LOGIN_DATA 20971520 TZ02_EP_GAT ...
- 【c#文档】在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别
[c#文档]https://msdn.microsoft.com/zh-cn/library/system.convert.toint32.aspx 转载自:http://www.cnblogs.co ...
- elasticSearch请求流程图