显然是个二分图,直接求最大独立就行了。

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define pb push_back
  4. using namespace std;
  5. const int maxn=505;
  6. vector<int> g[maxn];
  7. struct lines{
  8. int to,flow,cap;
  9. }l[maxn*maxn];
  10. int t=-1,S,T,d[maxn],cur[maxn];
  11. bool v[maxn];
  12.  
  13. inline void add(int from,int to,int cap){
  14. l[++t]=(lines){to,0,cap},g[from].pb(t);
  15. l[++t]=(lines){from,0,0},g[to].pb(t);
  16. }
  17.  
  18. inline bool BFS(){
  19. queue<int> q;
  20. memset(v,0,sizeof(v));
  21. q.push(S),v[S]=1,d[S]=0;
  22. int x; lines e;
  23.  
  24. while(!q.empty()){
  25. x=q.front(),q.pop();
  26. for(int i=g[x].size()-1;i>=0;i--){
  27. e=l[g[x][i]];
  28. if(e.flow<e.cap&&!v[e.to]){
  29. v[e.to]=1,d[e.to]=d[x]+1;
  30. q.push(e.to);
  31. }
  32. }
  33. }
  34. return v[T];
  35. }
  36.  
  37. int dfs(int x,int A){
  38. if(x==T||!A) return A;
  39. int flow=0,f,sz=g[x].size();
  40. for(int &i=cur[x];i<sz;i++){
  41. lines &e=l[g[x][i]];
  42. if(d[x]==d[e.to]-1&&(f=dfs(e.to,min(e.cap-e.flow,A)))){
  43. A-=f,flow+=f;
  44. e.flow+=f,l[g[x][i]^1].flow-=f;
  45. if(!A) break;
  46. }
  47. }
  48. return flow;
  49. }
  50.  
  51. inline int max_flow(){
  52. int an=0;
  53. while(BFS()){
  54. memset(cur,0,sizeof(cur));
  55. an+=dfs(S,1<<30);
  56. }
  57. return an;
  58. }
  59.  
  60. ll gcd(ll x,ll y){ return y?gcd(y,x%y):x;}
  61. ll a[505];
  62. int n;
  63.  
  64. inline void build(){
  65. for(int i=1;i<=n;i++) if(a[i]&1) add(S,i,1); else add(i,T,1);
  66. for(int i=1;i<=n;i++) if(a[i]&1)
  67. for(int j=1;j<=n;j++) if(!(a[j]&1))
  68. if(gcd(a[i],a[j])==1&&gcd(a[i]+1,a[j]+1)==1) add(i,j,1);
  69. }
  70.  
  71. int main(){
  72. scanf("%d",&n);
  73. for(int i=1;i<=n;i++) scanf("%lld",a+i);
  74. S=0,T=n+1,build();
  75. printf("%d\n",n-max_flow());
  76. return 0;
  77. }

  

[LibreOJ β Round #4] 子集的更多相关文章

  1. [LOJ#526]「LibreOJ β Round #4」子集

    [LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两 ...

  2. LibreOJ #526. 「LibreOJ β Round #4」子集

    二次联通门 : LibreOJ #526. 「LibreOJ β Round #4」子集 /* LibreOJ #526. 「LibreOJ β Round #4」子集 考虑一下,若两个数奇偶性相同 ...

  3. LibreOJ β Round #2 题解

    LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq ...

  4. loj #547. 「LibreOJ β Round #7」匹配字符串

    #547. 「LibreOJ β Round #7」匹配字符串   题目描述 对于一个 01 串(即由字符 0 和 1 组成的字符串)sss,我们称 sss 合法,当且仅当串 sss 的任意一个长度为 ...

  5. [LOJ#531]「LibreOJ β Round #5」游戏

    [LOJ#531]「LibreOJ β Round #5」游戏 试题描述 LCR 三分钟就解决了问题,她自信地输入了结果-- > -- 正在检查程序 -- > -- 检查通过,正在评估智商 ...

  6. [LOJ#530]「LibreOJ β Round #5」最小倍数

    [LOJ#530]「LibreOJ β Round #5」最小倍数 试题描述 第二天,LCR 终于启动了备份存储器,准备上传数据时,却没有找到熟悉的文件资源,取而代之的是而屏幕上显示的一段话: 您的文 ...

  7. [LOJ#516]「LibreOJ β Round #2」DP 一般看规律

    [LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...

  8. [LOJ#515]「LibreOJ β Round #2」贪心只能过样例

    [LOJ#515]「LibreOJ β Round #2」贪心只能过样例 试题描述 一共有 \(n\) 个数,第 \(i\) 个数 \(x_i\) 可以取 \([a_i , b_i]\) 中任意值. ...

  9. [LOJ#525]「LibreOJ β Round #4」多项式

    [LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) ...

随机推荐

  1. 在ArchLinux、manjaro中安装MySql(mariaDB)

    安装MySql数据库.但是在MySql被Oracle收购之后,很多开源支持者就转而使用MariaDb了.不过MariaDb也和MySql兼容的,所以基本不用有什么担心.由于ArchLinux只带了Ma ...

  2. SolrCloud下DIH实践

    创建Collection 在/usr/local/solrcloud/solr/server/solr文件夹下创建coreTest文件夹 将/usr/local/solrcloud/solr/serv ...

  3. FSMC原理通俗解释

    所以不用GPIO口直接驱动液晶,是因为这种方法速度太慢,而FSMC是用来外接各种存储芯片的,所以其数据通信速度是比普通GPIO口要快得多的.TFT-LCD 驱动芯片的读写时序和SRAM的差不多,所以就 ...

  4. HDU:2586-How far away

    How far away Time limit1000 ms Memory limit32768 kB Problem Description There are n houses in the vi ...

  5. Python之code对象与pyc文件(一)

    Python程序的执行过程 我们都知道,C语言在执行之前需要将源代码编译成可执行的二进制文件,也就是将源代码翻译成机器代码,这种二进制文件一旦生成,即可用于执行.但是,Python是否一样呢?或许很多 ...

  6. python基础学习笔记——字典

    字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 { ...

  7. Selenium WebDriver-操作键盘事件

    # 注意: !!!操作操作系统的按键,需要先装pywin32,然后通过交互模式import win32api和import win32con判断是否安装成功,需要重启下cmd进入交互模式# 下载链接: ...

  8. curl保存图片

    $url = 'http://p1.qhimg.com/t013dfc89f8a039122c.jpg?size=690x460'; function http_get_data($url) { $c ...

  9. 【Luogu】P1411树(树形高精DP)

    题目链接 我貌似又做了一道高精题呢(笑) 这题的DP方程很好想,设f[i][j]表示i为根的子树,i所在联通块大小为j的最大值,然后乱搞 但是要高精,那么搞是得要高精除的 所以考虑f[i][j]是除以 ...

  10. POJ——1321棋盘问题(DFS+回溯)

    棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33272 Accepted: 16456 Description 在一 ...