OpenJudge 7384(分成互质组)
应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(分成互质组)相关推荐
- 小学奥数 7834 分成互质组 python
http://noi.openjudge.cn/math/7834/ 参考: 信息学奥赛一本通(1221:分成互质组) https://blog.csdn.net/lvcheng0309/articl ...
- 信息学奥赛一本通(1221:分成互质组)
1221:分成互质组 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7405 通过数: 3453 [题目描述] 给定n个正整数,将它们分组,使得每组中任意 ...
- C++递归算法之分成互质组
分成互质组 Description 给定n个正整数,将它们分组,使得每组中任意两个数互质.至少要分成多少个组? Input 第一行是一个正整数n.1 <= n <= 10. 第二行是n个不 ...
- POJ 7834:分成互质组
" Ctrl AC!一起 AC!" 原题:忘题戳这 分析:对于一个数,遍历所有的互质组,如果可以进入一个组,并保持组内互质,则总组数不变.否则总组数加一. AC代码: #inclu ...
- 分成互质组 (信息学奥赛一本通-T1221)
[题目描述] 给定n个正整数,将它们分组,使得每组中任意两个数互质.至少要分成多少个组? [输入] 第一行是一个正整数n.1 ≤ n ≤ 10. 第二行是n个不大于10000的正整数. [输出] 一个 ...
- 1221:分成互质组
[题目描述] 给定n个正整数,将它们分组,使得每组中任意两个数互质.至少要分成多少个组? [输入] 第一行是一个正整数n.1 ≤ n ≤ 10. 第二行是n个不大于10000的正整数. [输出] 一个 ...
- AcWing 1118. 分成互质组
题意: 给定 n 个正整数,将它们分组,使得每组中任意两个数互质. 问:至少要分成多少个组? 思路: dfs,对每一个元素,我们有两种操作: ①:放到现有组中的最后一组中(依次枚举最后一组的所有元素, ...
- 1118. 分成互质组
给定 n 个正整数,将它们分组,使得每组中任意两个数互质. 至少要分成多少个组? 输入格式 第一行是一个正整数 n. 第二行是 n 个不大于10000的正整数. 输出格式 一个正整数,即最少需要的组数 ...
- 【noi 2.5_7834】分成互质组(dfs)
有2种dfs的方法: 1.存下每个组的各个数和其质因数,每次对于新的一个数,与各组比对是否互质,再添加或不添加入该组. 2.不存质因数了,直接用gcd,更加快.P.S.然而我不知道为什么RE,若有好心 ...
最新文章
- SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景
- 通过连接实例解读TCP/IP协议
- Spring实现热加载MyBatis 的XML配置文件
- python中的几种倒序遍历
- pyqt5讲解1:窗口,QLabel,QLineEdit,QTextEdit
- php编程实现单入口,apache配置php实现单一入口方法
- [渝粤教育] 莆田学院 电机与拖动基础(一) 参考 资料
- springboot链接数据库的bug
- quartus生成qdb文件_(原创)详解Quartus导出网表文件:.qxp和.vqm
- WebService 的CXF框架 WS方式Spring开发
- 微信小程序云开发教程-云函数操作数据库-修改、删除
- jquery form提交的2种方式
- 王垠面阿里P9,面跪后与P10赵海平互怼:人性最大的愚蠢,是互相为难
- 关于打开CMD窗口一闪而退的解决方法
- Android Sensor感应器简单使用(1)
- Jetson TK1
- 查看手机IMEI IMSI
- 四川大学2019计算机考研,四川大学考研全攻略篇(各学院2019年考研详解、报考建议...)...
- pytesseract 测试获取查策网编码字体
- html 萤火虫特效,jquery萤火虫飞舞动画特效插件
热门文章
- 魔众积分商城系统 v1.3.0 后台菜单快捷搜索,框架功能升级
- 完美版积分商城系统-奇偶商城系统源码
- mac版本的eclipse安装springboot开发插件(STS)
- mac电脑怎么打开终端
- matlab中电流measure模块,三相逆变电源的在Matlab中的仿真设计
- BUGKU 啊哒(文件分离)
- docker容器---加速器
- 怎么把其他格式转换成Word文档?
- 图新地球高清地图图源公开绿色下载300+,还能在奥维地图中使用
- linux signal历史log,nginx错误signal process started错误error.log日志显示signal process started错误解决方法...