2018年暑假第四次周赛-图论部分题解

A。信我啊,这是签到题

这题是签到题

数据出锅,多组后来补的,后来直接删除了一整个文本。纯属意外。

出签到题难啊,本意是一道题教会17一个模型的。说没学过不该出的是没好好看题目的第四行。
你发现当图所有的点和与这个点直接相连(由边直接连接)的点的个数为偶数的时候,你被锤的概率降低了一点点点点点
这句话就是无向图欧拉回路判断定理。不懂百度,解法都丢题目上了。所以只要判断是否所有点的度是偶数,在并查集维护联通即可。

几个定理自觉记一下笔记。图是否联通是欧拉回路必备的坑点。


下面几句话自觉记笔记。

如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。

  1. 无向图存在欧拉回路的充要条件是,所有点的度是偶数(且图联通)。
  2. 有向图存在欧拉回路的充要条件是,所有点的入度等于出度(且图联通)。

回路是一个点出发也要回到那个点,通路不需要回到起点。同样都要经过所有边。

  1. 无向图存在欧拉通路的充要条件是,所有点的度是偶数。允许例外,两个点度为奇数。这两个点分别是起点和终点(且图联通)。
  2. 有向图存在欧拉通路的充要条件是,所有点的入度等于出度。允许例外一个点入度比出度大一,另一个点入度比出度小一(且图联通)。

证明自己百度或者翻《离散数学》

扩展:欧拉回路可以找路径。算法自己找



#include <bits/stdc++.h>using namespace std;
const int MAXN = 1e5 + 10;int n, m, pre[MAXN], deg[MAXN];void init() {for(int i = 1; i <= n; i++ ) {pre[i] = i;}
}int findx(int x) {return pre[x] == x ? x : pre[x] = findx(pre[x]);
}void join(int x, int y) {int fx = findx(x), fy = findx(y);if(fx != fy) {pre[fx] = fy;}
}bool same(int x, int y) {return findx(x) == findx(y);
}int main()
{
//    freopen("2.in", "r", stdin);
//    freopen("2.out", "w", stdout);int u, v;while(~scanf("%d %d", &n, &m)) {init();memset(deg, 0, sizeof(deg));for(int i = 1; i <= m; i++ ) {scanf("%d %d", &u, &v);join(u, v);deg[u]++;deg[v]++;}bool ok = 1;int cnt = 0;for(int i = 1; i <= n; i++) {if(pre[i] == i) {cnt++;}if(deg[i] % 2 != 0) {ok = 0;break;}}if(ok && cnt == 1) {puts("yes");} else {puts("no");}}return 0;
}

E。【C_W_L】的预言

表面数论,其实是图论题。

\[ gcd(a_i,a_j) * gcd(a_i+1, a_j+1)≠1 \]

求一个最大集合满足上式。如果 \(a_i\) , \(a_j\) 符合上式。那么我们连一条边,题意就是要我们就要求该图的最大团。(一个图的点集合任意两个点之间都有边叫团)最大团等于它补图的最大独立集。

如果 \(a_i\), \(a_j\) 符合上式。那么我们连一条边
那么 \(a_i\), \(a_j\) 同奇,同偶的时候必定有边。那么补图一定没边。
所以它的补图是一个二分图。我们求它的最大独立集合即可。

二分图最大独立集,匈牙利,网络流随便来一个。

#include <bits/stdc++.h>using namespace std;
const int MAXN = 555;
typedef long long LL;int n, m, first[MAXN], sign;int links[MAXN], vis[MAXN];LL a[MAXN];struct Edge {int to, w, next;
} edge[MAXN * MAXN];void init() {memset(first, -1, sizeof(first));sign = 0;
}void add_edge(int u, int v, int w) {edge[sign].to = v;edge[sign].w = w;edge[sign].next = first[u];first[u] = sign++;
}int dfs(int x) {for(int i = first[x]; ~i; i = edge[i].next) {int to = edge[i].to;if(!vis[to]) {vis[to] = 1;if(!links[to] || dfs(links[to])) {links[to] = x;return 1;}}}return 0;
}int main()
{while(~scanf("%d", &n)) {init();for(int i = 1; i <= n; i++ ) {scanf("%lld", &a[i]);}for(int i = 1; i <= n; i++ ) {for(int j = 1; j <= n; j++ ) {if(__gcd(a[i], a[j]) == 1 && __gcd(a[i] + 1, a[j] + 1) == 1) {add_edge(i, j, 1);}}}int ans = n;for(int i = 1; i <= n; i++ ) {if(a[i] & 1) {memset(vis, 0, sizeof(vis));ans -= dfs(i);}}printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/Q1143316492/p/9502783.html

2018年暑假第四次周赛-图论部分题解相关推荐

  1. 电子计算机时代 英语,2018年英语专四作文范文:计算机时代

    2018年英语专四作文范文:计算机时代 1.近年来,计算机的应用越来越广泛 2.计算机能做许多有益的事 3.计算机也有许多副作用 范文: In recent years, computers have ...

  2. CSDN 周赛37期题解

    CSDN 周赛37期题解 1.题目名称:幼稚班作业 2.题目名称:异或和 3.题目名称:大整数替换数位 4.题目名称:莫名其妙的键盘 卡个bug 小结 1.题目名称:幼稚班作业 幼稚园终于又有新的作业 ...

  3. 力扣周赛310场题解

    力扣周赛310场题解 前言 6176. 出现最频繁的偶数元素 6177. 子字符串的最优划分 前言 今天参加了力扣的第310场周赛,也是感觉到了这周的题的一个难度,有些题有想法,但是实际上让我去写的时 ...

  4. 今日头条2018校招测试开发方向(第一、二、三、四批)编程题汇总 - 题解

    对于今日头条这家公司来说,测试的题和后端开发的题几乎是一样的,但是由于第一批的后端开发的题没有在牛客网上放出来,因此,猜测后端开发第一批的题应该和后端开发第一批的题一样,同时也想做一个测试方向编程题的 ...

  5. 2018年暑假 纪中培训总结

    感想 这个暑假在纪中过得挺充实的,劳逸结合,与同学们相处的很开心.算法也讲了很多,但是基本上都没听懂.在这里学习环境还是很不错的,纪中的同学也都很友善,在这里基本没遇到什么烦心事,每天都很开心. 来这 ...

  6. 重庆2018年度进出口总值时隔四年重返5000亿元规模

    图为重庆西永综合保税区.重庆海关供图 图为重庆西永综合保税区.重庆海关供图 中新网重庆1月17日电 (韩璐 刘流)重庆海关17日发布2018年重庆市外贸进出口情况.2018年重庆外贸进出口总值5222 ...

  7. matlab培训2018年暑假,2016暑假建模培训Matlab小作业

    2016暑假建模培训Matlab小作业 1.Matlab函数绘图. (1)做出函数y=t+itsin(t)在极坐标和直角坐标下的表示图. (2)绘制z=exp((-0.1+i)t)的复数图形. 2.M ...

  8. 2018年终总结_四年计算机科班学习经验分享+半年工作感悟

    一.写作初衷&简单自我介绍 本科专业为计算机科学与技术,今年六月毕业后入职一家上市游戏公司从事游戏服务器端开发,九月中旬离开游戏行业,目前在一家互联网公司从事图形图像音视频算法岗,偶尔兼顾服务 ...

  9. 2018湖南省第十四届“嘉杰杯”大学生计算机程序设计竞赛总结

    经过三个月的幸苦练习,在省赛这个大舞台上,我们小队收获了一枚铜牌. 从一开始刷南阳oj八十道水题,vj上的二十场校赛,再到多校的场场自闭,CF的熬夜作战.嗯,我确实付出了很多.然而我始终在思考,我这么 ...

最新文章

  1. Eureka服务注册中心
  2. 《LeetCode力扣练习》第31题 下一个排列 Java
  3. 第二章:二分和前缀和 【完结】
  4. ORA-00910: specified length too long for its datatype
  5. Windows服务器安全设置经验详谈
  6. Okhttp3-网络请求流程解析
  7. EVEREST Ultimate Edition 4.50 Build 1330 Final
  8. redo mysql mvcc_Mysql事务中的ACID是怎么实现的
  9. java编程之美(一)
  10. RayTrace1:如何实现Whitted全局光照模型?
  11. 适合新手——MySQL中基于SQL语言增删改查等基础的练习大汇总
  12. Android 如何优化开屏广告?
  13. 条件表达式的学习和使用 实例之闰年的判断
  14. Apple Store教育优惠(161103)
  15. 科学院计算机研究所谢教授,谢维波
  16. 修改串口服务器,串口虚拟化 | 串口服务器Nport 5630 设置
  17. moTzxx-CMS —— [一个基于PHP代码的后台管理系统(ThinkPHP5.1.40)]
  18. PS系列 -- 颜色替换
  19. pytorch的transform中ToTensor接着Normalize
  20. 头的各个部位示意图_上臂肌群图示:肱二头肌、肱三头肌、肱肌部位图解说明...

热门文章

  1. Linux / Ubuntu系统查看磁盘空间及目录容量
  2. 【代码实现接口测试】Requests库
  3. jmeter(三)参数化
  4. python学习-装饰器(decorator)
  5. oracle11gasm,Oracle11gASM之ACFS创建案例
  6. oracle rac ora 12560,rac ORA-12541: TNS:no listener问题 非常急!!
  7. 李炎恢+php+下载,李炎恢thinkphp视频教程
  8. python代码解读软件_5种带你轻松分析Python代码的软件库
  9. python父进程调用子进程_Python2.7下,调用subprocess启动子进程,读取子进程标准输出若干问题...
  10. 计算机为什么检测不到u盘启动项,BIOS设置U盘为第一启动项后检测不到如何解决?...