首页 > 其他分享 >7.14 小计

7.14 小计

时间:2024-07-14 22:08:07浏览次数:16  
标签:7.14 系数 int res ll 小计 define

Set

给出 \(m\) 个集合,每个集合 \(n\) 位,定义 \(f(T)\) 表示 \(\sum\limits_{i=1}^m[|T \cap S_i|\ge k]\),对于 \(1\) 到 \(n\),求满足 \(f(T)\ge i\) 的最小的 \(|T|\)。

神秘题,想到容斥但是不知道系数,学到了 dp 算系数的操作。

具体的,对于每个数 \(x\) 求出它的超集和 \(g(x)\),然后乘上算出的系数得到 \(x\) 位数的贡献,保证每个数贡献一次后,再求一次子集和便得到了 \(f(T)\)。最后随便求个后缀最小值就是答案。

#include<bits/stdc++.h>
#define ll long long
#define N 25
#define M 300005
using namespace std;
ll C[N][N];
int n,m,k;
ll cf[N];
char t[N];
ll a[(1<<N)+5];
int count(int x){int cur=0;while(x){cur+=x&1;x>>=1;}return cur;}
int res[M];
int main()
{
	scanf("%d%d%d",&n,&m,&k);
	for(int i=0;i<=n;i++)
	{
		C[i][0]=1;
		for(int j=1;j<=i;j++)
			C[i][j]=C[i-1][j]+C[i-1][j-1];
	}
	for(int i=k;i<=n;i++) //the length of the 1
	{
		ll cur=0;
		for(int j=k;j<i;j++) // the contribution of each length 
			cur+=C[i][j]*cf[j];
		cf[i]=1-cur;
	}
	for(int i=1;i<=m;i++)
	{
		scanf("%s",t+1);
		int cur=0;
		for(int j=1;j<=n;j++)
			cur+=(t[j]=='1')*(1<<n-j);
		a[cur]++;
	}
	for(int i=1;i<=n;i++)
		for(int mask=0;mask<(1<<n);mask++)
			if(!(mask&(1<<i-1))) a[mask]+=a[mask^(1<<i-1)];
	for(int mask=0;mask<(1<<n);mask++) a[mask]*=cf[count(mask)];
	for(int i=1;i<=n;i++)
		for(int mask=0;mask<(1<<n);mask++)
			if((mask&(1<<i-1))) a[mask]+=a[mask^(1<<i-1)];
	memset(res,127/3,sizeof res);
	for(int mask=0;mask<(1<<n);mask++) res[a[mask]]=min(res[a[mask]],count(mask));
	for(int i=m-1;i>=1;i--) res[i]=min(res[i],res[i+1]);
	for(int i=1;i<=m;i++) printf("%d\n",res[i]);
	return 0;
}

标签:7.14,系数,int,res,ll,小计,define
From: https://www.cnblogs.com/g1ove/p/18302102

相关文章

  • SMU 2024 ptlks的周报Week 8(7.8-7.14)
    这周主要学习了线段树,基本能用线段树解决一些简单的题目。D-FlatSubsequence题意:单点修改+区间查询代码#include<bits/stdc++.h>#defineintlonglong#definemod998244353#definePIIpair<int,int>#definePIIIpair<int,PII>#definedoublelongdouble#define......
  • 2024.07.14模拟赛总结
    前言:又上头了T1赛时做法:首先,假设对答案做出贡献的是点x,y,设y的祖先且为x的儿子的点为z,那么显然,把除了z以外的所有都归入集合是最优的,因为这不会影响对y的统计且尽量满足了限制于是就枚举点x但这时,我不会了,我知道启发式合并可以做,但我不会(忘了),于是我想线段树合并,事实证明,还是有......
  • 进程异常退出分析小计
    一、内存泄漏内存泄漏是进程运行一段时间后退出,并且看到内存特别大,基本上大几百M或者超过1G,dump异常堆栈都是在申请内存的时候崩溃,下面看下如何定位分析泄漏原因1.1使用!heap-s看下总体内存大小1.2使用!heap-stat-h命令查看具体堆使用情况1.3......
  • [多项式] FFT小计
    引入给出两个多项式\(A,B\),计算它们相乘的结果。我们能轻易写出code:for(inti=0;i<=n;i++) for(intj=0;j<=n;j++) C[i+j]+=A[i]*B[j];然后超时了。FFT是一种将多项式乘法优化成\(O(n\logn)\)的神仙算法。分析上面的式子没有任何优化空间。什么意思呢?就是怎......
  • 莫队小计
    莫队考虑一个经典的问题。对一个数列进行\(m\)次区间求和。暴力需要\(O(nm)\),但是莫队可以优化到\(O(n\sqrtm)\)。思想具有启发式思维。假如我们知道\([l,r]\)的和为\(k\)。在此基础上\([l-1,r],[l,r+1]\)都可以很快得到。莫队是对上一个问题解决这个问题。要给对问题......
  • Oracle 小计-汇总处理
    假设我们有一个名为employees的表,它包含部门(department)、员工姓名(employee)和工资(salary)CREATETABLEemployees(departmentVARCHAR2(50),employeeVARCHAR2(50),salaryNUMBER(10,2));初始化数据INSERTINTOemployees(department,employee,salary)VAL......
  • Cisco Catalyst 9800 Wireless Controller, IOS XE Software Release IOSXE-17.14.01
    CiscoCatalyst9800WirelessController,IOSXESoftwareReleaseIOSXE-17.14.01EDCatalyst9800系列无线控制器软件请访问原文链接:CiscoCatalyst9800WirelessController,IOSXESoftwareReleaseIOSXE-17.14.01ED,查看最新版。原创作品,转载请保留出处。作者主页:sy......
  • Cisco Catalyst 9800-CL Wireless Controller for Cloud, Release IOSXE-17.14.01 ED
    CiscoCatalyst9800-CLWirelessControllerforCloud,ReleaseIOSXE-17.14.01ED面向云的思科Catalyst9800-CL无线控制器,专为基于意图的网络全新打造请访问原文链接:CiscoCatalyst9800-CLWirelessControllerforCloud,ReleaseIOSXE-17.14.01ED,查看最新版。原创作......
  • CF1957E 做题小计 : 威尔逊定理
    被数论虐爆了(悲)威尔逊定理\(\forallp\inprime,(p-1)!\equiv-1(\bmodp)\)为什么啊?对于\(2\)很显然。对于\(p\),我们知道\(inv(p-1)=p-1=-1\),然后\(inv(1)=1\)然后因为\(p\inprime\),所以对于任意\(a\in[2,p-2]\),都有\(inv(a)\)与它唯一对应。因为\(......
  • arc166D 做题小计
    线段树做法,拿下你谷最劣解。题意翻译很形象,就不说了。思路最大化最小值,我们很容易想到二分答案。很容易发现,答案具有单调性。我们二分一个答案\(x\),强制每次使用的区间长度都不小于\(x\),然后判断可行性。现在问题转化为怎么判断一个答案\(x\)是否可行。我们发现,如果枚......