CF1463F Max Correct Set(取小样法+状压 DP)

CF1463F Max Correct Set

要求选出集合 \(U=\{1,2,3,\dots,n\}\) 的一个子集 \(S\),满足:如果 \(a \in S\) 并且 \(b \in S\),那么 \(|a-b| \not ={x}\) 并且 \(|a-b| \not ={y}\)。求集合 \(S\) 大小的最大值。

\(1\le n\le 10^9,1\le x,y\le 22\)

考虑一个简化版本:如果只有一个限制 \(x\),要求集合中任意两个数之差不为 \(x\),求集合最大值。

那么可以将整个 \(1,\dots,n\) 序列分为 \(\frac{n}{2x}\) 段,隔一段全部选择,两边特判一下,求最大值。

这是不是很像 “取小样法” ?将所有数划分为一段又一段,那么每一段后面都是重复出现的。

什么是 “取小样法”

小学奥数常常有比如这样的题:我们称 \(x\equiv a\pmod{c},x\equiv b\pmod{d}\) 的正整数 \(x\) 为“完美数”,求 \(\le n\) 的“完美数”数量,\(n\le 10^9,1\le c,d\le 15\),手算。

这是我们可以取出 \([1,\gcd(c,d)]\) 这么一小段,计算这一段内有多少“完美数”,乘以段数,加上边界上的数量。这样就可以手动快速计算。

其中“小样”的本质是若干不互相影响具有代表性的子集,通过计算子集的答案可以反映整体答案。

但是这里并不是将 \(\gcd(x,y)\) 作为“小样”的长度,将 \(x+y\) 作为“小样”的长度即可。

为什么可以用 \(x+y\) 作为“小样”?

设两个数 \(a,b(a<b)\) 不能够同时存在,那么他们一定有 \(a+x=b\)\(a+y=b\)或者说 \(b-a\equiv \pm x\pmod{x+y}\)

这个同余式说明如果长度为 \(x+y\) 的段内部合法,整个序列就可以用这个段重复多次表示出来且一定合法,满足了不互相影响的特点。

那么需要求出最优的一个“小样”使得答案最大,状压 DP 即可。

#define Maxsta 4194500
ll n,m,x,y,All,p,q,ans;
ll f[Maxsta],g[Maxsta];
int main()
{n=rd(),x=rd(),y=rd();m=x+y,All=1<<max(x,y);p=n/m,q=n%m;for(int i=1;i<=m;i++){memcpy(g,f,sizeof(f)),memset(f,0,sizeof(f));for(int s=0,t;s<All;s++){t=(s<<1)&(All-1);f[t]=max(f[t],g[s]);if(!((s>>(x-1))&1) && !((s>>(y-1))&1))f[t|1]=max(f[t|1],g[s]+p+(i<=q));}}for(int s=0;s<All;s++) ans=max(ans,f[s]);printf("%lld\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

引入用于 Azure IoT Edge 的 Visual Studio 工具

物联网开发人员&#xff1a;工具和经验引入用于 Azure IoT Edge 的 Visual Studio 工具今天&#xff0c;我们很高兴地发布用于 Visual Studio 2017 的 Azure IoT Edge 工具的预览版。Azure IoT Edge 是一个全托管服务&#xff0c;通过直接在跨平台物联网设备上部署并运行人工智…

P4878 [USACO05DEC]Layout G

P4878 [USACO05DEC]Layout G 题意&#xff1a; 题解&#xff1a; 这个题其实是差分约束的裸题&#xff0c;但是有几个坑要注意 1.题目说了&#xff0c;奶牛按照编号1…N排列&#xff0c;对于ML个输入&#xff0c;A< B ,所以关系是B - A < 10,而不是A - B <10,我一开…

【学习笔记】原根 / BSGS / 扩展BSGS证明及模板

文章目录原根BSGS大步小步算法扩展BSGS原根 如果两个整数a,ba,ba,b互质&#xff0c;则有aϕ(b)%b1a^{\phi(b)}\%b1aϕ(b)%b1 定义模bbb意义下的aaa的阶为使ad%b1a^d\%b1ad%b1的最小正整数ddd 显然&#xff0c;模bbb的阶d∣ϕ(b)d|\phi(b)d∣ϕ(b) 如果模bbb意义下aaa的阶为…

Loj#3130-「COCI 2018.12」Praktični【线性基】

正题 题目链接:https://loj.ac/p/3130 题目大意 给出nnn个点mmm条边的一张有权无向图&#xff0c;你每次可以选择一个边集异或上一个值&#xff0c;要求最少次数使得所有简单环异或和都为000。 1≤n,m≤1051\leq n,m\leq 10^51≤n,m≤105 解题思路 先找一棵生成树&#xff0…

洛谷P5664:Emiya 家今天的饭(容斥、dp)

解析 应该是比较入门的容斥了 统计方案用总方案数-某列超过1半的方案数 dp设计的一个trick是只统计差值 代码 #include<bits/stdc.h> using namespace std; #define ll long long const int N2050; const double eps1e-6; const int mod998244353; inline ll read(){l…

[ARC098F] Donation(找性质+点 Kruskal 重构树)

[ARC098F] Donation 给出一个 \(N\) 个点 \(M\) 条边的无向连通图&#xff0c;每个点的标号为 \(1\) 到 \(n\)&#xff0c; 且有两个权值 \(A_i,B_i\)。第 \(i\) 条边连接了点 \(u_i\) 和 \(v_i\)。 最开始时你拥有一定数量的钱&#xff0c;并且可以选择这张图上的任意一个点作…

.Net Core分布式部署中的DataProtection密钥安全性

在.NetCore中默认使用DataProtection来保护数据&#xff0c;例如Cooike等。一般情况下DataProtection生成的密钥会被加密后存储&#xff0c;例如默认的文件存储可以看到使用了Windows DPAPI加密。但是如果更改默认设置例如使用的外部存储如redis则此时密钥默认是不加密的微软说…

P2294 [HNOI2005]狡猾的商人

P2294 [HNOI2005]狡猾的商人 题意&#xff1a; 你需要调查某个商人的账本&#xff0c;给你n个月内&#xff0c;m条账单信息&#xff0c;每条账单信息为x到y月的收入或者支出多少钱&#xff0c;问你根据账单信息判断这个账本是否合理 5 3 1 5 100 3 5 50 1 2 51比如样例&…

洛谷P1852:跳跳棋(LCA,树形结构)

解析 考虑一个三元组(x,y,z)(x,y,z)(x,y,z)&#xff0c;看它能如何跳 要么是yyy往左右跳&#xff0c;左右边界会变大 要么是两边往中间跳&#xff0c;由于最多跨过一个棋子&#xff0c;所以左右边界会变小 当三点等距时&#xff0c;无法往中间跳 于是我们惊喜的发现&#xff1…

scanf(“%s“)真的只开读入字符串大小就可以了吗??

文章目录前言还原过程计算机程序背后的故事总结瞎逼逼前言 艹艹艹艹艹艹&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;老子没想到没想到&#xff0c;靠&#xff01; 本人刚刚在做树链剖分“染色”一题的代码重构&#xff0c;上午打…

P5299-[PKUWC2018]Slay the Spire【dp】

前言 正题 题目链接:https://www.luogu.com.cn/problem/P5299 题目大意 有2n2n2n张牌&#xff0c; nnn张强化牌&#xff0c;每张上有一个正整数x(x>1)x(x>1)x(x>1)&#xff0c;如果使用后之后的每一张攻击牌伤害都会乘上xxx。nnn张攻击牌&#xff0c;每张上有一个正…

CF1152F Neko Rules the Catniverse(状压 DP)

CF1152F Neko Rules the Catniverse 给定参数 \(n,k,m\)&#xff0c;你需要求有多少个大小为 \(k\) 的序列 \(a\) 满足如下三个条件&#xff1a; 任意两个元素其权值不同。对于任意 \(i\) 满足 \(1\le i\le k\) 有 \(1\le a_i\le n\)。对于任意 \(i\) 满足 \(2\le i\le k\) 有 …

asp.net core2.2 多用户验证和授权

asp.net core2.2 用户验证 和授权有很详细和特贴心的介绍&#xff0c;我感兴趣的主要是这两篇&#xff1a;cookie身份验证基于角色的授权我的项目有两类用户&#xff1a;微信公众号用户&#xff0c;用户名为公众号的openid企业微信的用户&#xff0c;用户名为企业微信的userid每…

P1494 [国家集训队]小Z的袜子

P1494 [国家集训队]小Z的袜子 题意&#xff1a; 有一个长度为 n 的序列c[i] 。现在给出 m个询问&#xff0c;每次给出两个数l,r &#xff0c;从编号在 l 到 r 之间的数中随机选出两个不同的数&#xff0c;求两个数相等的概率。 题解&#xff1a; 很明显&#xff0c;莫队算法…

CSP2020洛谷P7076:动物园(位运算)

你知道它很水&#xff0c;但你就是切不掉它 解析 一直卡85&#xff01;&#xff01; 原因&#xff1a;最后判断的循环应该从0到k-1而不是从1到k&#xff01; 啊啊啊一定要小心啊qwq 说实话这个分都算是好的&#xff0c;这种bug爆大分一点招没有 还有一个问题是对于ans64爆unsi…

一文带你快速读懂.NET CLI

dotnet cli 是 .Net Core 功能中最有用的特性之一。在这篇文章里&#xff0c;我们将介绍几个.Net OSS 工具是如何使用 dotnet cli&#xff0c;并介绍如何在日常开发中使用新的 cli 工具。正文关键要点dotnet cli 使得基于. Net 项目的自动化和脚本编写变得非常简单&#xff0c;…

[POJ 3164]Command Network(最小树形图,朱刘算法)

文章目录titlesolutioncodetitle solution 读完翻译后&#xff0c;很明显就是个朱刘算法的板子题 最小树形图&#xff0c;就是给出一个带权有向图 从中指定一个特殊的结点 root 求一棵以 root 为根的有向生成树 T&#xff0c;且使得 T 中所有边权值最小 简单来说&#xff0c…

CF1553H-XOR and Distance【dp】

正题 题目链接:https://www.luogu.com.cn/problem/CF1553H 题目大意 给出nnn个在[0,2n)[0,2^n)[0,2n)范围内的数字序列aaa。 对于每个x∈[0,2n)x\in[0,2^n)x∈[0,2n)求 min⁡i≠j∣aixorx−ajxorx∣\min_{i\neq j}\ |a_i\ xor\ x-a_j\ xor\ x|i​jmin​ ∣ai​ xor x−aj​…

同余最短路

主要内容 形如&#xff1a; 设问 \(1\) &#xff1a;给定 \(n\) 个整数&#xff0c;求这 \(n\) 个整数在 \(h(h\le2^{63}-1)\) 范围内 能拼凑出多少的其他整数( 个整数可以重复取) 。 设问 \(2\) &#xff1a;给定 \(n\) 个整数&#xff0c;求这 \(n\) 个整数 不能拼凑出的最小…

SP10707 COT2 - Count on a tree II

SP10707 COT2 - Count on a tree II 题意&#xff1a; 给定 n 个结点的树&#xff0c;每个结点有一种颜色。 m 次询问&#xff0c;每次询问给出 u,v&#xff0c;回答 u,v 之间的路径上的结点的不同颜色数。 1< n < 4*10^4 1< m < 10^5 题解&#xff1a; 树上…