集合问题

题意:

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

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

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

思路:并查集操作,自己主要是没想到用map去映射1e9-->1e5;

  1. #include <iostream>
  2. #include <cstring>
  3. #include <string>
  4. #include <algorithm>
  5. #include <cstdio>
  6. #include <map>
  7. using namespace std;
  8.  
  9. const int maxn = 1e5+;
  10. int n,A,B,fa[maxn],a[maxn];
  11. map<int,int>mp;
  12. void init(){
  13. for(int i=;i<=n+;i++)
  14. fa[i]=i;
  15. }
  16. int find(int x)
  17. {
  18. if(fa[x]==x)return x;
  19. else return fa[x] = find(fa[x]);
  20. }
  21. void uni(int x,int y)
  22. {
  23. int px = find(x);
  24. int py = find(y);
  25. if(px==py)return;
  26. else fa[px] = py;
  27. }
  28. int main(){
  29. scanf("%d%d%d",&n,&A,&B);
  30. int max1 = ;
  31. for(int i=;i<=n;i++)
  32. {
  33. scanf("%d",&a[i]);
  34. mp[a[i]] = i;
  35. max1 =max(max1,a[i]);
  36. }
  37. if(max1>=max(A,B))
  38. {return printf("NO\n"),;}
  39. else
  40. {
  41. init();
  42. for(int i=;i<=n;i++)
  43. {
  44. if(mp[B-a[i]])
  45. uni(i,mp[B-a[i]]);
  46. else uni(i,);
  47. if(mp[A-a[i]])
  48. uni(i,mp[A-a[i]]);
  49. else uni(i,n+);
  50. }
  51. int af = find();
  52. int bf = find(n+);
  53. if(af==bf)
  54. {
  55. return printf("NO\n"),;
  56. }
  57. else
  58. {
  59. printf("YES\n");
  60. for(int i=;i<=n;i++)
  61. {
  62. if(i!=)printf(" ");
  63. if(af==find(i))printf("");
  64. else printf("");
  65. }
  66. printf("\n");
  67. }
  68. }
  69. return ;
  70. }

牛客-2018多校算法第五场D-集合问题+并查集的更多相关文章

  1. 牛客-2018多校算法第五场C-KMP

    字符串的问题 在原来的字符串中前缀与后缀相同,且原来的中间还含有这个子串: 这里加的num[]数组真是太厉害了,可以直接用来判断中间是否有子串: #include <iostream> # ...

  2. 2019牛客暑期多校训练营(第五场) maximum clique 1

    题意:给出n个不相同的数,问选出尽量多的数且任两个数字二进制下不同位数大于等于2. 解法:能想到大于等于2反向思考的话,不难发现这是一个二分图,那么根据原图的最大团等于补图的最大独立点集,此问题就变成 ...

  3. 牛客2018多校第五场E-room 最小费用最大流

    题意:有n个寝室,每个寝室4个人,现在在搞搬寝室的活动,告诉你每个寝室之前的人员名单,和之后的人员名单,问最少需要几个人要搬寝室. 思路: 转化为最小费用最大流解决的二分图问题,对每个去年的宿舍,向每 ...

  4. 牛客网多校赛第9场 E-Music Game【概率期望】【逆元】

    链接:https://www.nowcoder.com/acm/contest/147/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  5. 牛客网多校赛第七场J--Sudoku Subrectangle

    链接:https://www.nowcoder.com/acm/contest/145/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  6. 牛客网多校赛第七场--C Bit Compression【位运算】【暴力】

    链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524 ...

  7. 牛客网多校赛第七场A--Minimum Cost Perfect Matching【位运算】【规律】

    链接:https://www.nowcoder.com/acm/contest/145/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  8. 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)

    题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9:  对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可.     后者mod=1e9,5才 ...

  9. 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...

随机推荐

  1. 【iOS】Xcode 使用 CocoaPods 导入第三方库后没有提示

    Github 上下载的开源项目,运行后出现的 [iOS]build diff: /../Podfile.lock: No such file or directory 解决后,又出现了这个问题. 解决 ...

  2. Android Studio 'AIDL is missing' 且 不识别R文件

    最近刚开始用Android Studio,出的问题还真不少.昨天不知为何不能新建项目了,这两天重装了几次才搞定. 可又出了这个问题: 原因:Compile Sdk Version和Build Tool ...

  3. go interface衍生的插件化处理

    在设计程序的许多应用场景中我们会遇到大体分为三个阶段的任务流. 第一.入口 一个或多个入口,等待阻塞的.或者主动请求方式的. ============================== 比如任务流需 ...

  4. Go“一个包含nil指针的接口不是nil接口”踩坑

    最近在项目中踩了一个深坑--"Golang中一个包含nil指针的接口不是nil接口",总结下分享出来,如果你不是很理解这句话,那推荐认真看下下面的示例代码,避免以后写代码时踩坑. ...

  5. 8、大型项目的接口自动化实践记录----DB分别获取预期结果、实际结果

    上一篇实现数据分离升级版--从DB获取数据,以及对应的请求实现,作为一个case,还缺少了预期结果与实际结果的获取及对比.因为前面的文章已经说过接口返回值的获取及对比,所以这篇不说这块了,这篇说一下D ...

  6. 佳木斯集训Day8

    本来能AK的啊啊啊啊啊,唯一一天可以AK,却被Champion误导了(好吧实际上是我理解有问题) T1我写了俩小时,就是一道数列题,推公式的,可以二分解,我觉得二分麻烦,就直接想O(1)了 #incl ...

  7. @Value注解 和 @Data注解

    @Value注解 service层代码 @Service public class HelloServiceImpl implements HelloService { @Autowired priv ...

  8. golang 中获取字符串个数

    golang 中获取字符串个数 在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,说明 len 函数是取得包含 byte 的个数 // ...

  9. Cocos Creator经典游戏制作之:信使(The Messenger)

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  10. Amazon S3 分布式存储的 python 接口实现

    Amazon s3 是一种分布式的对象存储.用键值对的方式,来存储数据.其中,存入的所有数据都是一个对象(object),每一个对象都有一个键(key)存在. 具有非常方便的 web 访问接口,以及权 ...