应hfu要求,近几日整理搜索专题的内容,无意中翻出了一年前死活A不掉的一道不可做题(当时觉得)。看着自己的代码风格变化天翻地覆,无奈感叹时间飞逝。。。算了少矫情管他的先A了再说(ง •̀_•́)ง

先附上一年前WA(8/10)的代码

#include<stdio.h>
int n,divide[15][10],sum[15]={0},t,a[15],num1,ans=0;
int prime(int a,int b)
{if (a==b) return 0;for (int s=2;s<=a/2;s++)if (a%s==0&&b%s==0) return 0;return 1;
}
void f(int p,int q)
{if (ans!=0) return ;if (num1==n) {ans=q;return ;}int i;for (i=1;i<=q;i++){int j;for (j=1;j<=sum[i];j++)if (prime(a[p],divide[i][j])==0) break;if (j==sum[i]+1){divide[i][sum[i]+1]=a[p];sum[i]++;num1++;for (int k=1;k<=q-1;k++)for (int b=1;b<=q-k;b++)if (sum[b]<sum[b+1]){for (int h=1;h<=sum[b+1];h++){t=divide[b][h];divide[b][h]=divide[b+1][h];divide[b+1][h]=t;} t=sum[b];sum[b]=sum[b+1];sum[b+1]=t;}break;} }if (i==q+1){divide[q+1][1]=a[p];sum[q+1]++;num1++;}if (i==q+1) f(p+1,q+1);if (i<q+1) f(p+1,q);
}
int main()
{scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&a[i]);divide[1][1]=a[1];sum[1]=1;num1=1;f(2,1);printf("%d",ans);return 0;
}

再来看看一年后的今天1A的代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int n;
int a[12],cnt=0,mn=12;
int gcd(int a,int b) {return !b?a:gcd(b,a%b);
}
vector<int> G[12];
void dfs(int p) {if (p>n) {mn=min(mn,cnt);return ;}for (int i=1;i<=cnt;++i) {bool f=true;for (int j=0;j<G[i].size();++j)if (gcd(a[p],a[G[i][j]])^1) {f=false;break;}if (f) {G[i].push_back(p);dfs(p+1);G[i].pop_back();}}++cnt;G[cnt].push_back(p);dfs(p+1);G[cnt].pop_back();--cnt;
}
int main() {
//  freopen("OJ 7384.in","r",stdin);scanf("%d",&n);for (int i=1;i<=n;++i) scanf("%d",&a[i]);dfs(1);printf("%d\n",mn);return 0;
}

OpenJudge 7384(分成互质组)相关推荐

  1. 小学奥数 7834 分成互质组 python

    http://noi.openjudge.cn/math/7834/ 参考: 信息学奥赛一本通(1221:分成互质组) https://blog.csdn.net/lvcheng0309/articl ...

  2. 信息学奥赛一本通(1221:分成互质组)

    1221:分成互质组 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 7405     通过数: 3453 [题目描述] 给定n个正整数,将它们分组,使得每组中任意 ...

  3. C++递归算法之分成互质组

    分成互质组 Description 给定n个正整数,将它们分组,使得每组中任意两个数互质.至少要分成多少个组? Input 第一行是一个正整数n.1 <= n <= 10. 第二行是n个不 ...

  4. POJ 7834:分成互质组

    " Ctrl AC!一起 AC!" 原题:忘题戳这 分析:对于一个数,遍历所有的互质组,如果可以进入一个组,并保持组内互质,则总组数不变.否则总组数加一. AC代码: #inclu ...

  5. 分成互质组 (信息学奥赛一本通-T1221)

    [题目描述] 给定n个正整数,将它们分组,使得每组中任意两个数互质.至少要分成多少个组? [输入] 第一行是一个正整数n.1 ≤ n ≤ 10. 第二行是n个不大于10000的正整数. [输出] 一个 ...

  6. 1221:分成互质组

    [题目描述] 给定n个正整数,将它们分组,使得每组中任意两个数互质.至少要分成多少个组? [输入] 第一行是一个正整数n.1 ≤ n ≤ 10. 第二行是n个不大于10000的正整数. [输出] 一个 ...

  7. AcWing 1118. 分成互质组

    题意: 给定 n 个正整数,将它们分组,使得每组中任意两个数互质. 问:至少要分成多少个组? 思路: dfs,对每一个元素,我们有两种操作: ①:放到现有组中的最后一组中(依次枚举最后一组的所有元素, ...

  8. 1118. 分成互质组

    给定 n 个正整数,将它们分组,使得每组中任意两个数互质. 至少要分成多少个组? 输入格式 第一行是一个正整数 n. 第二行是 n 个不大于10000的正整数. 输出格式 一个正整数,即最少需要的组数 ...

  9. 【noi 2.5_7834】分成互质组(dfs)

    有2种dfs的方法: 1.存下每个组的各个数和其质因数,每次对于新的一个数,与各组比对是否互质,再添加或不添加入该组. 2.不存质因数了,直接用gcd,更加快.P.S.然而我不知道为什么RE,若有好心 ...

最新文章

  1. SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
  2. 通过连接实例解读TCP/IP协议
  3. Spring实现热加载MyBatis 的XML配置文件
  4. python中的几种倒序遍历
  5. pyqt5讲解1:窗口,QLabel,QLineEdit,QTextEdit
  6. php编程实现单入口,apache配置php实现单一入口方法
  7. [渝粤教育] 莆田学院 电机与拖动基础(一) 参考 资料
  8. springboot链接数据库的bug
  9. quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm
  10. WebService 的CXF框架 WS方式Spring开发
  11. 微信小程序云开发教程-云函数操作数据库-修改、删除
  12. jquery form提交的2种方式
  13. 王垠面阿里P9,面跪后与P10赵海平互怼:人性最大的愚蠢,是互相为难
  14. 关于打开CMD窗口一闪而退的解决方法
  15. Android Sensor感应器简单使用(1)
  16. Jetson TK1
  17. 查看手机IMEI IMSI
  18. 四川大学2019计算机考研,四川大学考研全攻略篇(各学院2019年考研详解、报考建议...)...
  19. pytesseract 测试获取查策网编码字体
  20. html 萤火虫特效,jquery萤火虫飞舞动画特效插件

热门文章

  1. 魔众积分商城系统 v1.3.0 后台菜单快捷搜索,框架功能升级
  2. 完美版积分商城系统-奇偶商城系统源码
  3. mac版本的eclipse安装springboot开发插件(STS)
  4. mac电脑怎么打开终端
  5. matlab中电流measure模块,三相逆变电源的在Matlab中的仿真设计
  6. BUGKU 啊哒(文件分离)
  7. docker容器---加速器
  8. 怎么把其他格式转换成Word文档?
  9. 图新地球高清地图图源公开绿色下载300+,还能在奥维地图中使用
  10. linux signal历史log,nginx错误signal process started错误error.log日志显示signal process started错误解决方法...