首页 > 其他分享 >CF1730F Almost Sorted

CF1730F Almost Sorted

时间:2024-02-04 10:11:22浏览次数:26  
标签:5010 Almost pos int && Sorted CF1730F

更好的阅读体验

CF1730F Almost Sorted

挺有意思的一道题。

刚看到可能有好几种思路,按照 \(p\) 的大小填 \(q\),或者按照下标顺序填等等。

试了几次之后 考虑按照 \(i\) 从小到大填入 \(q_i\),设 \(pos\) 为当前填了的最大的 \(p_{q_i}\),由于题目的要求,\(1\sim(pos-m-1)\) 的所有数一定都用过(\(p_{q_j},j<i\))。所以状压记录值域的 \((pos-m)\sim pos\) 位上有哪些数还没填,这里的值域指的仍然是 \(p_{q_i}\),根据 \(i\) 和 \(S\) 可以推出 \(pos\)。

然后求逆序对的话对于值域的最后 \(m+1\) 位暴力计算,对于 \(\leq pos-m\) 的部分,设 \(b_{p_i}=i\) 则可以看成是一个询问 \(i<pos-m\) 且 \(b_i>b_{now}\) 的点的数量,二维前缀和即可,复杂度 \(\mathcal O(n^2+n2^kk^2)\)。

	int n,m,b[5010],f[5010][512],a[5010];
	unsigned short t[5010][5010];
	inline void mian()
	{
		read(n,m),++m;
		for(int i=1;i<=n;++i)read(a[i]),++t[i][a[i]],b[a[i]]=i;
		for(int i=n;i>=1;--i)for(int j=1;j<=n;++j)t[i][j]+=t[i+1][j]+t[i][j-1]-t[i+1][j-1];
		memset(f,127,sizeof(f)),f[0][(1<<m)-1]=0;
		for(int i=1;i<=n;++i)
		{
			for(int j=1,pos;j<(1<<m);j+=2)
			{
				pos=i+m-__builtin_popcount(j)-1;
				if(f[i-1][j]>=inf)continue;
				for(int k=1;k+pos<=n&&k<=m;++k)
				{
					if(!(j>>(m-k)&1))break;
					int x=0;
					for(int l=0;l<m&&pos>l;++l)x+=(j>>l&1)&&b[pos-l]>b[pos+k];
					Mmin(f[i][(j<<k|1)&((1<<m)-1)],f[i-1][j]+x+(pos>m?t[b[pos+k]+1][pos-m]:0));
				}
				for(int k=0;k<m&&k<pos;++k)
				{
					if(j>>k&1)continue;
					int x=0;
					for(int l=0;l<k;++l)x+=(j>>l&1)&&b[pos-l]>b[pos-k];
					for(int l=k+1;l<m&&l<pos;++l)x+=(j>>l&1)&&b[pos-l]>b[pos-k];
					Mmin(f[i][j|1<<k],f[i-1][j]+x+(pos>m?t[b[pos-k]+1][pos-m]:0));
				}
			}
		}
		write(f[n][(1<<m)-1]);
	}

标签:5010,Almost,pos,int,&&,Sorted,CF1730F
From: https://www.cnblogs.com/WrongAnswer90-home/p/18005665

相关文章

  • Redis - Sorted Set Use Cases
         ......
  • CodeForces 1266F Almost Same Distance
    洛谷传送门CF传送门好厉害。特判\(k=1\)。首先经过观察,我们可以按照\(k\)的奇偶性讨论:\(k\)为偶数,有一个中心点挂了若干条长度为\(\frac{k}{2}\)的链。\(k\)为偶数,有两个中心点,两边挂了若干条长度为\(\frac{k}{2}\)的链;\(k\)为奇数,有一个中心点挂了若干条长度......
  • 无涯教程-Redis - Sorted Sets(排序集)
    RedisSortedSets与RedisSets类似,它具有存储在集合中的值的独特功能,不同之处在于,排序集的每个元素都与一个分数相关联,该分数用于从最小到最大分数中获取排序的排序集。SortedSets-示例redis127.0.0.1:6379>ZADDLearnfk1redis(integer)1redis127.0.0.1:6379>ZA......
  • B. Make Almost Equal With Mod
    原题链接题解,看完你对最大公约数,求余一定有更深的认识事实1.当序列中有奇数又有偶数时,2就是那个k事实2.当\(a[i]\mod\b=c,\foralli\in[1,n]\)时$a[i]\mod\2b=c\,if(a[i]//b)==$偶数$a[i]\mod\2b=c+b\,if(a[i]//b)==$奇数事实3.如上,对......
  • [Codeforces] CF1817A Almost Increasing Subsequence
    CF1817AAlmostIncreasingSubsequence题意给定长度为\(n\)一个序列\(a\)以及\(q\)次询问,每次询问给出\(l\)和\(r\),找出序列\(a\)在\([l,r]\)内最长的几乎递增子序列。对于几乎递增的定义:如果一个序列中不存在连续的三个数\(x\),\(y\),\(z\),使得\(x\gey\ge\......
  • [AGC054C] Roughly Sorted 题解
    题意定义一种操作为交换\(a_{i}\)和\(a_{i-1}\)。对于一个长度为\(n\)的排列,你需要操作若干次,使这个序列变合法,一个序列合法指:满足对于每一个\(1\lei\len\),都满足包含\(a_i\)的逆序对的个数不超过\(k\),并且要求最小化操作次数。现在给定一个操作后的序列,询问原序列可......
  • 无涯教程-Java - SortedSet 集合接口函数
    SortedSet接口扩展了Set并声明了按升序排序的集合的行为。除了Set定义的那些方法外,SortedSet接口还声明了下表中概述的方法-如果尝试使用null对象并且集合中不允许使用null,则抛出NullPointerException。Sr.No.Method&Remark1Comparatorcomparator()返回调用排序集的比......
  • Day20.匿名函数的两种调用方式_max用法_min用法_sorted用法_map用法_filter用法_reduc
    1.匿名函数的两种调用方式: 2.匿名函数求最大和求最小:3.sorted用法和map用法:4.filter的用法:5.reduce的用法:......
  • redis基础命令复习(Sring,Hash,List,Set,SortedSet)
    1,Redis数据结构:  https://redis.io/commands  2,Redis命令---Redis通用命令(常见的有,keys,del,exists,expire,ttl)2.1,keys:查看符合模板的所有key,不建议在生产环境设备上使用 打开redis:win+R,输入cmd,打开命令提示符后,输入redis-server;  再另外打开一个命令提示......
  • 【刷题笔记】108. Convert Sorted Array to Binary Search Tree
    题目Givenanarraywhereelementsaresortedinascendingorder,convertittoaheightbalancedBST.Forthisproblem,aheight-balancedbinarytreeisdefinedasabinarytreeinwhichthedepthofthetwosubtreesof every nodeneverdifferbymorethan......