集合问题(二分)

15167 集合问题 题目描述 给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 若x在集合A中,则a-x必须也在集合A中。 若x在集合B中,则b-x必须也在集合B中。 输入描述: 第一行 三个数 n a b 1<=n<=1e5 1<=a,b<=1e9 第二行 n个数 p1 p2 p3...pn 1<=pi<=1e9 输出描述: 如果可以恰好分开就输出第一行 YES 然后第二行输出 n个数 分别代表pi 是哪个集合的 0 代表是A集合 1代表是. 阅读详情

集合问题

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述 

给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 

若x在集合A中,则a-x必须也在集合A中。 

若x在集合B中,则b-x必须也在集合B中。 

输入描述:

第一行 三个数 n a b  1<=n<=1e5  1<=a,b<=1e9
第二行 n个数 p1 p2 p3...pn 1<=pi<=1e9

输出描述:

如果可以恰好分开就输出第一行 YES
然后第二行输出 n个数 分别代表pi 是哪个集合的  0 代表是A集合 1代表是B 集合
不行就输出NO
放在哪个集合都可以的时候优先放B

示例1

输入

复制

4 5 9
2 3 4 5

输出

复制

YES
0 0 1 1

示例2

输入

复制

3 3 4
1 2 4

输出

复制

NO
const int MAX=100010;
int vis[MAX];
int arr[MAX];
int n;
int a,b;
int main(){
    cin>>n>>a>>b;
    
    for(int i=0;i<n;i++){
        cin>>arr[i];
    }
    sort(arr,arr+n);
    int flag=0;
    mms(vis,0);
    for(int i=0;i<n;i++){
        if(!vis[i]){
            int a1=lower_bound(arr,arr+n,a-arr[i])-arr;
            int b1=lower_bound(arr,arr+n,b-arr[i])-arr;
            if(!vis[b1]&&arr[i]+arr[b1]==b){
                vis[i]=1;
                vis[b1]=1;
            }
            else if(!vis[a1]&&arr[i]+arr[a1]==a){
                vis[i]=2;
                vis[a1]=2;
            }
        }
    }
    for(int i=0;i<n;i++){
        if(vis[i]==0){
            flag=1;
            break;
        }
    }
    if(flag) cout<<"NO"<<endl;
    else {
        cout<<"YES"<<endl;
        for(int i=0;i<n;i++){
            cout<<vis[i]%2<<" ";
        }
    }
}

二分答案与图论建模:从USACO集合点问题看算法思维融合 二分查找(Binary Search)和图论(Graph Theory)是算法竞赛与工程实践中解决最优化和连通性问题的两大核心工具。二分答案通过利用问题的单调性,将求解最值问题转化为一系列可行性判定问题,从而显著降低复杂度。图论则通过节点与边的关系,为信息传播、状态可达性等场景提供了强大的建模能力。两者的结合,能够高效解决诸如“在满足特定约束下寻找最小可行解”这类经典问题,在资源调度、网络通信和路径规划等领域具有重要价值。本文以一道融合了社交网络信息传递与移动约束的集合点问题为例,深入剖析了如何利用二分答案 阅读详情

相关推荐

Holtek BS45F3833芯片深度剖析:如何用高集成MCU重塑超声波雾化市场格局?

本文深度剖析Holtek BS45F3833芯片如何通过高集成MCU技术重塑超声波雾化市场。该芯片集成了PWM直驱、电容检水、触摸控制等核心功能,显著提升雾化精度和效率,同时降低BOM成本和开发难度。文章通过实测数据和实战案例,展示了其在香薰机、车载设备及工业加湿器等场景的创新应用,为开发者提供了一站式解决方案。

weixin_29192211的博客 413

集合划分问题

转载请注明出处 http://blog.youkuaiyun.com/pony_maggie/article/details/18048599 作者:小马 思考下面一个问题, 给定正整数n和m,计算出n个元素的集合可以划分为多少个不同的由m(m   这类题可以叫做集合划分问题。面试题里经常出现。先来考虑一个问题,这个算法有实际的应用吗?可能用在类似资源分配的例子上,比如有n个资源,

lucasma的博客 1万+

【LDLTS解析】从重叠峰到精准参数:拉普拉斯深能级瞬态光谱如何重塑半导体缺陷分析

本文深入解析了拉普拉斯深能级瞬态光谱(LDLTS)技术如何革新半导体缺陷分析。针对传统DLTS难以分辨重叠峰的痛点,LDLTS通过拉普拉斯逆变换对高精度电容瞬态曲线进行数学解卷积,成功分离发射率相近的缺陷信号,实现从模糊宽峰到精准独立峰的转变。该技术不仅大幅提升了缺陷激活能和捕获截面等关键参数的提取精度,更推动分析范式从经验拟合转向第一性原理,为先进半导体工艺开发与良率提升提供了强大的精准诊断工具。

weixin_29224309的博客 273

求集合交集(java)

输入格式:输入有三行: 第一行是A和B的元素个数m和n; 第二行是集合A的m个元素; 第三行是集合A的n个元素。输出格式:输出交集的所有元素(按照在A集合出现的顺序输出,最后一个输出后面没有空格)。输入样例:在这里给出一组输入。例如:3 4 10 9 2 9 10 8 0 输出样例:在这里给出相应的输出。例如:10 9程序代码:import java.util.Scanner;class Card...

qq_35989000的博客 1429

Ubuntu技巧-Ubuntu远程访问之SSH反向代理

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。要把内网的一台的Ubuntu服务器让外面也能访问,总共有三种可行的方案,前面已经介绍了两种方式,今天就来介绍更健壮稳定的方式——ssh反向代理。大概的框架图如下,今天就从服务器购买到设置,手把手的教程,让你花费100块以内,就拥有一个强大的「云服务器」。

可夫小子的频道 1151

Windows环境下Elasticsearch与JDK版本兼容性实战指南

本文详细解析了Windows环境下Elasticsearch与JDK版本的兼容性问题,提供了从版本匹配检查到安装部署的完整实战指南。重点介绍了Elasticsearch 8.x需JDK 17+等关键版本对应关系,并分享多版本JDK共存方案及性能优化技巧,帮助开发者高效避坑。

weixin_29250403的博客 421

7-2 求集合交集

求整数集合A与整数集合B的交集。 输入格式: 输入有三行: 第一行是A和B的元素个数m和n(m,n <=100); 第二行是集合A的m个元素; 第三行是集合B的n个元素。 输出格式: 输出交集的所有元素(按照在A集合出现的顺序输出,最后一个输出后面没有空格)。 若交集为空,输出“NULL”。 输入样例: 在这里给出一组输入。例如: 3 4 10 9 2 9 10 8 0 输出样例: 在这里给出相应的输出。例如: 10 9 #include <iostr.

qq_61351908的博客 2092

STM32F4_LCD显示汉字

LCD显示汉字和显示图片、数字、字符的原理是一样的,都是将汉字、图片、数字以及字符转换点阵,进而通过函数扫描点阵在LCD上显示;

light_2025的博客 1万+

集合问题

链接:https://ac.nowcoder.com/acm/contest/77/D 来源:牛客网   时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 若x在集合A中,则a-x必须也在集合A中。 若x在集...

black_horse2018的博客 412

手把手教你校准垂起固定翼(VTOL)遥控器与电调:从零到飞的完整流程

本文详细介绍了垂起固定翼(VTOL)遥控器与电调的校准流程,从基础认知到飞行前检查,涵盖遥控器通道配置、电调校准、舵机方向调整等关键步骤。通过图文并茂的指导,帮助无人机爱好者安全完成VTOL调试,确保首飞成功。特别强调多旋翼模式、过渡模式和固定翼模式的设置要点,适合新手和进阶用户参考。

jenkins8butler的博客 357

Uniapp返回上一页并刷新:亲测有效的 goBack 实现技巧!

这个技巧在实际开发中非常常用,特别适合表单提交后返回列表刷新这类场景。比起依赖onShow或复杂的vuex状态同步,这种方式更直接、好维护,也不容易出 bug。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1841

【C++二分查找详解】基本二分、左右边界问题集合

一、寻找一个数(基本二分查找) 1、题目描述 给定单调不减有序数组 nums ,寻找 target 是否在数组中,若找到返回其下标,否则返回-1。 2、代码框架 /*基本二分*/ int binarySearch(vector<int>& nums,int target) { int left=0,right=nums.size()-1; int mid; while(left<=right) { mid...

saxon_li的博客 2961

基于Simulink的加速度计振动分析:单自由度质量-弹簧-阻尼系统

摘要:基于Simulink的加速度计单自由度振动分析 本文研究了加速度计的单自由度(SDOF)质量-弹簧-阻尼系统模型,通过MATLAB/Simulink平台建立了完整的振动分析仿真系统。文章详细阐述了理论建模过程,推导了系统运动微分方程和传递函数,并提供了Simulink模型搭建的具体步骤和MATLAB实现代码。研究通过正弦扫频、随机振动和冲击响应三种典型输入信号,分析了系统的幅频特性、相频特性及时域响应,验证了加速度计的工作机理。仿真结果表明,该方法能有效模拟加速度计在不同激励条件下的动态特性,为传感器

AI的内部世界的博客 163

二分图匹配问题 | 问题集合

1.P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外籍飞行员。在众多的飞行员中,每一名外籍飞行员都可以与其他若干名英国飞行员很好地配合。如何选择配对飞行的飞行员才能使一次派出最多的飞机。对于给定的...

283

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

超大背包问题 二分枚举 pair数组应用 位运算表示集合

超大背包问题 二分枚举 pair数组应用 位运算表示集合 关键词 二分枚举 pair数组应用 位运算表示集合 二分搜索 笺释 我觉得这道题真是很好很好,设计到的三个知识点我只对位运算熟悉一点,其他两个的话于我而言都感觉又多明白了一点,算法科学真美啊。 因为开不出来这么大的背包,但是n比较小,于是考虑用枚举,但是枚举的话2^n会超时(顺便一提2^n应该是并不会超内存的,最大用ll开到过n=50的情况...

weixin_34241036的博客 190

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

集合问题-NC15167(并查集+二分法)

集合问题 题解 讨论 查看他人的提交 我的提交 题号:NC15167 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 若x在集合A中,则a-x必须也在集合A中。 若x在集合B中,则b-x必须也在集合B中。 输入描述: 第一行 三个数 n a b 1<=n<=1...

m0_57006708的博客 674

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CodeForces 468B Two Sets 二分匹配

题目链接:点击打开链接 题意:给定n个数,常数a, b 把n个数放到集合A和集合B 使得: 对于某个数x,若x在A集合则 a-x也必须在A集合(若a-x不存在于n个数中,则x不能放在A集合) 放在B集合同理。 输出任意解:每个数放在哪个集合里(允许n个数都放一个集合) 思路: 类似二分匹配的做法。 import java.io.PrintWriter; import ja

九野的博客 2327

二分查找

二分查找 昨天去参加新生赛五道有思路的题,结果有三道因为时间超限没有通过,其中有一道题印象很深刻。要用到二分查找,我才意识到这种方法在课本上有原型,但是平时并不注重课本的知识,等到用的时候才发现自己根本不会用。听了学长的讲解,知道c++里面有特定的二分查找的函数,今天看了一些讲解觉得这一部分有必要了解一下。 不多BB先上题。 题目描述 小Q发现小P和小H各有一个集合,但是小P的集合A和小H的集合B...

Xmx666666的博客 506

牛客网 集合问题

中文题: 链接:https://ac.nowcoder.com/acm/problem/15167 来源:牛客网   题目描述 给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 若x在集合A中,则a-x必须也在集合A中。 若x在集合B中,则b-x必须也在集合B中。 这题我想的很简单。。没去搞并查集。。虽然我是在练习并查集。。。。 如果暴力想法就是一个一个遍历下...

qq_40924940的博客 970

二分算法详解

二分 整数二分 浮点数二分 浮点数二分 在实数域上二分较为简单,确定好所需的精度eps,以 l+eps < r 为循环条件,每次根据在mid上的判定选择 r = mid 或 l = mid 分支之一即可。一般需要保留k位小数时,则取 eps = 10^-(k+2)。 while(l+eps < r){ double mid = (l + r) / 2; if(check(mid)) r = mid; else l = mid; } 例题:剪绳子 来源:今日头条2019,笔试题 有N

qq_45455670的博客 1194

【Hash】【二分查找】17.6.3 集合 题解

#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <map> #include <vector> #define INF 92233720368546LL #define LL long longusing namespace std;const int maxx = 1e5

It's Maverick. 428

二分

一、整数集合上的二分 具体问题具体分析,左右半段哪个是可行区间,以及mid归属哪一半 根据分析结果,选择一个配套形式 \(r=mid,l=mid+1,mid=(l+r)/2\) \(l=mid,r=mid-1,mid=(l+r+1)/2\) 二分终止条件 \(l==r\) 例题: 单调递增序列a找到 >=x 的数中最小的一个(即x或x的后继) while(l<r){ ...

weixin_34364135的博客 148

【CF1605】D. Treelabeling(二分图)

题目链接:https://codeforces.com/contest/1605/problem/D 分析 根据题意,我们需要尽量让两个相连的点之间不能到达,于是想到二分图。 我们发现,两个数若最高位不同,那么必定不能到达,于是可以根据最高位将n个数划分为若干个不同的集合,集合之间的数不能互相到达。(例如n=9时,我们可以划分为4个集合{1},{2,3},{4,5,6,7},{8,9},集合size分别是1,2,4,2) 那么我们只需要根据二分图不同颜色的数量将这些集合组合成两个集合,再将答案填入即可。 根

Sankkl1的博客 790

二分/三分算法

二分、三分算法 二分 二分是在一个单调有序的集合中查找一个解,因为每次查找将舍弃一半的空间,因此效率很高i。 三分 三分算法用于求解单峰函数的极值问题。 例题1 二分 题目:Monthly Expense 地址:POJ3273 思路:答案一定是a[i]中最大的数到a[i]的总和之间的某个数。二分查找符合题意的最小结果即可 查找范围【max(a[i]),sum(a[i])】 符合题意的条件:分为每组不超过t的组数不多与题目要求的组数 Code #include <iostream> using

qq_30445397的博客 559

CFdiv3-Split Into Two Sets-(二分图或并查集)

E题意: 就是给你n个牌,每个牌上有两个不超过n的数组,现在问你是否可以吧n个牌分成两组,每组中的所有数字都不一样。思考: 刚开始看的时候感觉直接暴力就可以,实际上卡死。当然发现每个数如果出现次数>=3肯定也是不行的。然后并查集就是如果a和b在一个卡牌上,那么他们在一个集合里面,看看某个集合里面有多少数,如果是奇数个数字,那么肯定某个数在这里面出现了两次,但是只算了一次,因为一个集合里面必须是偶数个数字。所以最后判断一下就可以了。 对于二分图,刚开始我想二分图的话,是想把每个卡牌看成点,但是这样根本无法建图

m0_52398496的博客 643
上一篇: Big Water Problem(树状数组)
下一篇: 送分啦-QAQ(博弈论-斐波那契博弈模型)
郭晋龙
博客等级 码龄6年 940粉丝 449原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晋龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值