首页 > 其他分享 >[CF1641D] Two Arrays

[CF1641D] Two Arrays

时间:2023-09-04 16:56:49浏览次数:39  
标签:integers le leq Arrays Two int CF1641D ans ldots

题目描述

Sam changed his school and on the first biology lesson he got a very interesting task about genes.

You are given $ n $ arrays, the $ i $ -th of them contains $ m $ different integers — $ a_{i,1}, a_{i,2},\ldots,a_{i,m} $ . Also you are given an array of integers $ w $ of length $ n $ .

Find the minimum value of $ w_i + w_j $ among all pairs of integers $ (i, j) $ ( $ 1 \le i, j \le n $ ), such that the numbers $ a_{i,1}, a_{i,2},\ldots,a_{i,m}, a_{j,1}, a_{j,2},\ldots,a_{j,m} $ are distinct.

输入格式

The first line contains two integers $ n $ , $ m $ ( $ 2 \leq n \leq 10^5 $ , $ 1 \le m \le 5 $ ).

The $ i $ -th of the next $ n $ lines starts with $ m $ distinct integers $ a_{i,1}, a_{i,2}, \ldots, a_{i,m} $ and then $ w_i $ follows ( $ 1\leq a_{i,j} \leq 10^9 $ , $ 1 \leq w_{i} \leq 10^9 $ ).

把所有数按照 \(w\) 排序之后,扫描 \(a_r\),对 \(r\) 去查一个最小的 \(l\) 使得 \(l,r\) 符合条件。

\(r\) 是不断增大的,如果 \(l\) 也跟着变大,答案肯定不如之前算的。所以 \(l\) 是稳定变小的。

我们现在要快速判断 \([1,l]\) 这个区间里是否存在一个和 \(a_r\) 互不相同的数。

互不相同很难计算,考虑容斥,枚举一个集合,统计前 \(l\) 个里面这个集合的出现次数。统计这里可以 map+哈希 统计。然后容斥完判断一下就行了。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,M=5;
int n,m,a[N][M],w[N],id[N],lsh[N*M],k,ans=2.1e9,pw[N*M],p[N];
mt19937 gen(time(0));
vector<int>g[N*M];
unordered_map<int,int>mp;
int cmp(int x,int y)
{
	return w[x]<w[y];
}
int ok(int x)
{
	int ret=0;
	for(int j=1;j<(1<<m);j++)
	{
		int ans=0,c=0;
		for(int k=0;k<m;k++)
			if(j>>k&1)
				ans^=pw[a[x][k]],c^=1;
		ret+=mp[ans];
	}
	return ret;
}
void ins(int x,int op)
{
	for(int j=1;j<(1<<m);j++)
	{
		int ans=0,c=0;
		for(int k=0;k<m;k++)
			if(j>>k&1)
				ans^=pw[a[x][k]],c^=1;
		mp[ans]+=c? op:-op;
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<m;j++)
			scanf("%d",a[i]+j),lsh[++k]=a[i][j];
		scanf("%d",w+i),id[i]=i;
	}
	sort(lsh+1,lsh+k+1);
	k=unique(lsh+1,lsh+k+1)-lsh-1;
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<m;j++)
			a[i][j]=lower_bound(lsh+1,lsh+k+1,a[i][j])-lsh,g[a[i][j]].push_back(i),pw[a[i][j]]=gen()/2;
	}
	sort(id+1,id+n+1,cmp);
	p[0]=n;
	for(int i=1;i<=n;i++)
		ins(i,1);
	for(int i=1;i<=n;i++)
	{
		p[i]=p[i-1];
		if(ok(id[i])==p[i])
			continue;
		while(p[i])
		{
			ins(id[p[i]],-1);
			if(ok(id[i])==p[i]-1)
			{
				ins(id[p[i]],1);
				break;
			}
			else
				--p[i];
		}
		if(p[i])
			ans=min(ans,w[id[p[i]]]+w[id[i]]);
	}
	printf("%d",ans>=2100000000? -1:ans);
}

标签:integers,le,leq,Arrays,Two,int,CF1641D,ans,ldots
From: https://www.cnblogs.com/mekoszc/p/17677522.html

相关文章

  • Position-Enhanced and Time-aware Graph Convolutional Network for Sequential Reco
    Position-EnhancedandTime-awareGraphConvolutionalNetworkforSequentialRecommendations目录Position-EnhancedandTime-awareGraphConvolutionalNetworkforSequentialRecommendations概符号说明PTGCNEmbeddingLayerConvolutionalLayer代码[HuangL.,MaY.,......
  • 力扣——1 [两数之和](https://leetcode.cn/problems/two-sum/)
    给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],tar......
  • maven-resources-production:webapi: java.lang.NegativeArraySizeException
    maven-resources-production:webapi:java.lang.NegativeArraySizeException打开项目启动时,发现报这个错误,基于此,我分析了一下,首先原本好好的项目突然这样子,首先查看代码更新的情况,发现代码并没有作任何变化。分析代码jar包的问题,首先mvnclean和mvninstall直接一起上。代码可......
  • networkX-01-基础
    创建一个图Graph是由一组节点和节点对(边)组成的。#创建一个没有节点和边的空图。importnetworkxasnxG=nx.Graph()01节点图G可由多种方式生成。NetWorkX中包含许多图形生成函数(graphgeneratorfunctions),用于读取和写入多种格式的图形。方式1:一次添加一个节点G.......
  • CF915G Coprime Arrays 题解
    题意给定\(n,k\),对于所有的\(m\in\left[1,k\right]\),求长度为\(n\),值域为\(\left[1,m\right]\)且最大公约数为\(1\)的序列种数,对\(10^9+7\)取模。(\(1\len,k\le2\times10^6\))。题解设\(f(d,m)\)表示长度为\(n\),值域为\(\left[1,m\right]\)且最大......
  • Proj CDeepFuzz Paper Reading: Aries: Efficient Testing of Deep Neural Networks v
    Abstract背景:thedefactostandardtoassessthequalityofDNNsintheindustryistochecktheirperformance(accuracy)onacollectedsetoflabeledtestdatatestselectioncansavelaborandthenbeusedtoassessthemodel前提:themodelshouldhav......
  • 论文阅读 《Pingmesh: A Large-Scale System for Data Center Network Latency Measur
    背景在我们内部产品中,一直有关于网络性能数据监控需求,我们之前是直接使用ping命令收集结果,每台服务器去ping(N-1)台,也就是N^2的复杂度,稳定性和性能都存在一些问题,最近打算对这部分进行重写,在重新调研期间看到了Pingmesh这篇论文,Pingmesh是微软用来监控数据中心网络情况......
  • Data structure and algorithm-Two
    B树                扩容           找出不含重复字符的最长字串的长度 字母异位词分组   优化用一个长度26的整数数组来标识 ArrayKey的构造方法   判断是否存在重复元素 ......
  • 解决:docker 443: connect: network is unreachable
    1、配置镜像加速器您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https://liadaibh.mirror.aliyuncs.com"]}EOFsudosystemctldaemon-......
  • 论文解读(TAMEPT)《A Two-Stage Framework with Self-Supervised Distillation For Cros
     论文信息论文标题:ATwo-StageFrameworkwithSelf-SupervisedDistillationForCross-DomainTextClassification论文作者:YunlongFeng,BohanLi,LiboQin,XiaoXu,WanxiangChe论文来源:2023aRxiv论文地址:download 论文代码:download视屏讲解:click1介绍 动......