[蓝桥杯2017决赛]分考场、OpenJudge:分成互质数

分考场传送门
分成互质数传送门
题目描述
n个人参加某项特殊考试。
为了公平,要求任何两个认识的人不能分在同一个考场。
求最少需要分几个考场才能满足条件。
输入
第一行,一个整数n(1<n<100),表示参加考试的人数。
第二行,一个整数m,表示接下来有m行数据
以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识(编号从1开始)。
输出
一行一个整数,表示最少分几个考场。
样例输入
5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
样例输出
4

大意就是要让互相认识的人不要在同一个考场,然后求最小考场数,这里可以用涂色法来确认两人在不在同意考场,具体代码如下。

#include<iostream>
#include<csttring>
#include<algorithm>
const int N=110;
int a[N][N],rl[N],rp[N][N],n,ans=N;//a数组是涂色数组,rl,roomlenth.是房间的当前人数,rp,roompeople.是当前房间的人。
using namespace std;
bool judge(int pos,int room) {for(int i=1;i<=rl[room];i++)//当前房子有没有认识的人,if(a[pos][rp[room][i]])//互相涂色的表示认识,返回false。return false;return true;//前面没有找到互相认识的人,然会true。
}
void dfs(int pos,int total) {//pos是当前寻找的人,total是当前答案。if(total>=ans)	return ;//当前答案大于最优解剪枝。if(pos==n+1) { ans=min(ans,total); return ; }//最优答案。for(int i=1;i<=total;i++) {//遍历之前已近放置的房子,看看有没有符合要求的,if(judge(pos,i)) {/第pos个人在第i个房子是否合理,rp[i][++rl[i]]=pos;dfs(pos+1,total);rl[i]--;//回溯。}}rp[total+1][++rl[total+1]]=pos;//前面的房子全部不满住。重新开一个房子。dfs(pos+1,total+1);rl[total+1]--;回溯。
}
int main() {int x,y,m;cin>>n>>m;for(int i=0;i<m;i++) {//读入加涂色。cin>>x>>y;a[x][y]=1;a[y][x]=1;}dfs(1,0);从第一个人开始搜索,cout<<ans<<endl;return 0;
}


7834:分成互质组
总时间限制: 1000ms 内存限制: 65536kB
描述
给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?

输入
第一行是一个正整数n。1 <= n <= 10。
第二行是n个不大于10000的正整数。
输出
一个正整数,即最少需要的组数。
样例输入
6
14 20 33 117 143 175
样例输出
3
其实这两道题目都是差不都的方法,上面的分考场是判断认识不认识,这里的是判断他们两个的最大公因数是不是 1 ,做法都大致相同,只要把上面的判断数组改成gcd函数就行,直接给出代码吧。

#include<iostream>
#include<cstring>
#include<algorithm>
int n,a[20],rl[20],rp[20][20],ans;
using namespace std;
int gcd(int h,int j) {if(j==0)	return h;return gcd(j,h%j);
}
bool judge(int c,int j) {for(int i=1;i<=rl[j];i++)if(gcd(c,rp[j][i])!=1)	return false;return true;
}
void dfs(int pos,int total) {if(total>=ans)	return ;if(pos==n) {ans=min(ans,total);return ;}for(int i=1;i<=total;i++) {if(judge(a[pos],i)) {rp[i][++rl[i]]=a[pos];dfs(pos+1,total);rl[i]--;}}rp[total+1][++rl[total+1]]=a[pos];dfs(pos+1,total+1);rl[total+1]--;
}
int main() {cin>>n;for(int i=0;i<n;i++)cin>>a[i];ans=1<<30;memset(rl,0,sizeof(rl));dfs(0,0);cout<<ans<<endl;return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core Web Api之JWT VS Session VS Cookie(二)

本文我们来探讨下JWT VS Session的问题&#xff0c;我们可直接抛出问题&#xff1a;使用客户端存储的JWT比服务端维持Session更好吗&#xff1f; 既然要比较JWT VS Session&#xff0c;那我们就得知道为何需要JWT和Session&#xff0c;它们共同是为了解决什么问题呢&#xff1f…

P4721 【模板】分治 FFT

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 写一下式子&#xff0c;发现每个fif_ifi​只有左边的fff对他有影响&#xff0c;所以考虑分治FFTFFTFFT来解决这个问题。 先递归左边&#xff0c;让后计算对右边贡献&#xff0c;再递归右边…

对称迷宫

描述 wlxsq有一个N*NN∗N的网格迷宫&#xff0c;每一个网格都有一个字母编号。 他要从左上角(1,1)(1,1)出发&#xff0c;走到右下角(n,n)(n,n)&#xff0c;由于wlxsq很懒&#xff0c;所以他每次只会往右或者往下走一格。 由于最后到终点的路径方案太多太多了&#xff0c;所以…

程序员生活之路--来自程序员爸爸的一封信

亲爱的孩子&#xff1a;当你看到爸爸这封信的时候&#xff0c;说明你已经长大了或者已经会玩微信公众号了&#xff0c;当然爸爸还是希望你长大了&#xff0c;并不希望你那么小就天天抱着手机刷微信。我写这个文章的时候正直盛夏&#xff0c;现在外边正是37度的高温&#xff0c;…

C#上位机与欧姆龙PLC的通信05---- HostLink协议

1、介绍 Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令&#xff0c;可以对PLC进行I/O读写、可以对PLC进行I/O读写、改变操作模式、强制置位/复位等操作。由于是公开协议&#xff0c;即便是非欧姆龙的上位设备&#xff08;软件&#xff09;&…

Codeforces Round #737 (Div. 2) D. Ezzat and Grid 线段树动态开点

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 比较套路的一个题&#xff0c;我们维护一个dp[i]dp[i]dp[i]表示到了第iii行能保留的区间最多是多少。 转移比较明显&#xff1a;dp[i]max(dp[j])dp[i]max(dp[j])dp[i]max(dp[j]) 其中jjj能…

从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

标题&#xff1a;从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者&#xff1a;Lamond Lu地址&#xff1a;https://www.cnblogs.com/lwqlun/p/11260750.html源代码&#xff1a;https://github.com/lamondlu/DynamicPlugins前情回顾•从零开始实现ASP…

笔记,Vector类模板的基本功能

有基本的查找&#xff0c;排序&#xff0c;插入&#xff0c;删除区间&#xff0c;扩容&#xff0c;减容等 放在博客上主要是为了以后学习方便查找一些&#xff0c;实际上并没有上面参考价值&#xff0c;许多STL模板中有的东西我这并没有。 #include <bits/stdc.h> using…

SP1043 GSS1 - Can you answer these queries I 猫树

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 猫树是一种可以O(nlogn)O(nlogn)O(nlogn)预处理&#xff0c;O(1)O(1)O(1)查询的数据结构。预处理的信息应该满足可合并的性质&#xff0c;与线段树pushuppushuppushup的原理相同&#xff0…

.NET Core 3.0之深入源码理解HttpClientFactory(二)

写在前面上一篇文章讨论了通过在ConfigureServices中调用services.AddHttpClient()方法&#xff0c;并基于此进一步探讨了DefaultHttpClientFactory是如何创建HttpClient实例和HttpMessageHandler实例的&#xff0c;并了解了DefaultHttpClientFactory内部维护者一个定时器和两个…

链表的顺序存储

链表的顺序存储无非就是在一个结构体数组里面集成了许多函数的操作&#xff0c;使之算法变得更加简单。 #include<stdio.h> #include<windows.h> #define maxsize 100 typedef int datatype; typedef struct {datatype a[maxsize];int size; }sequence_list;void …

2021牛客暑期多校训练营6 Hopping Rabbit 扫描线 + 矩形 + 细节

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你nnn个矩形&#xff0c;以及一个距离ddd&#xff0c;让你找一个点(x0.5,y0.5)(x0.5,y0.5)(x0.5,y0.5)&#xff0c;这个点一次能向四个方向跳ddd的距离&#xff0c;这个点不管怎么跳都跳不到矩形内。输出(…

动手造轮子:基于 Redis 实现 EventBus

动手造轮子&#xff1a;基于 Redis 实现 EventBusIntro上次我们造了一个简单的基于内存的 EventBus&#xff0c;但是如果要跨系统的话就不合适了&#xff0c;所以有了这篇基于 Redis 的 EventBus 探索。本文的实现是基于 StackExchange.Redis 来实现。RedisEventStore 实现既然…

最小生成树KrusKal算法(并查集)

洛谷p1111链接 克鲁斯卡尔算法的思路就是由森林变成树的过程&#xff0c;其中最主要的就是贪心和并查集的应用。 我们知道链接n个点需要n-1条边&#xff0c;这就满足的最后生成的是一颗树&#xff0c;而不是一个环。在这n-1条边的选择上我们又要尽可能的让边的权重小&#xff0…

#6278. 数列分块 2 分块 + 块内二分

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 真 调一晚上血压上来了。 考虑第一个操作&#xff0c;块内打个标记&#xff0c;其他的暴力查询即可。 考虑第二个操作&#xff0c;讲块内元素排序之后&#xff0c;直接二分查询。 注意修改…

使用腾讯云提供的针对Nuget包管理器的缓存加速服务

继阿里巴巴开源镜像站&#xff08;https://opsx.alibaba.com/&#xff09;、华为云镜像站点&#xff08;https://mirrors.huaweicloud.com/ &#xff09;之后&#xff0c;腾讯也已于近日上线了类似的服务&#xff0c;官方名称为腾讯云软件源&#xff08;Tencent Open Source Mi…

最小生成树Prime算法

洛谷p1546链接 Prime算法的核心也是贪心&#xff0c;但是不同的就是&#xff0c;它是一直维护一颗树&#xff0c; 直到变成一颗最小生成树&#xff0c; #include<bits/stdc.h> using namespace std; const int maxn 110; const int inf 0x3f3f3f3f; int maze[maxn][m…

#6284. 数列分块 8 分块

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 乍一看貌似没有什么东西能维护块内同一个数的个数&#xff0c;但是通过第六感可以发现每次操作后区间都会被推成一个数&#xff0c;那么我们分个块&#xff0c;让后块内打个标记&#xff0…

最短路弗洛伊德(Floyd)算法加保存路径

弗洛伊德算法大致有点像dp的推导 dp[i][j] min(dp[i][k] dp[k][j], dp[i][j]), 其中 i 是起始点&#xff0c;j 是终止点。k是它们经过的中途点。 通过这个公式不断地更新dp[i][j],得到最短路径长。 我们先定义两个矩阵&#xff0c;minpath[i][j],表示的是从 i 到 j 当前得到的…

云考古 | Azure 自建 RDS 让 iPad 跑 Office 97

导语苹果一直在尝试把iPad做成电脑&#xff0c;但效果始终不如真正的PC理想。如果能在iPad上运行PC软件&#xff0c;如完整版的Office&#xff0c;那一定是一种非常理想的方式。我小时候电脑启蒙使用的第一个软件就是Office 97里的Word&#xff0c;这也是第一款引入Office助手&…