算法
星河呀
承担呼吸的累赘和心跳的负荷,乐此不疲。
展开
-
校赛题搬砖
/* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<cstring&...原创 2019-05-13 13:19:36 · 231 阅读 · 0 评论 -
POJ 2229 Sumsets(基础DP)
如果i是奇数,那么因为他只比他前一个偶数多一个1,所以他和前一个偶数的分解数目是一样的。如果i是偶数,我们不妨按照1,2,4,8...的顺序来分解i。这样,如果第一个分解的元素为1,那么i就和i-1和分解数目相同。如果第一个分解的元素为2或2的m次方,则第二个(包括2)之后的元素均为偶数,这样各个元素除以2,于是i和i/2的分解数目相同,所以如果i是偶数,那么num[i]=num[i-1]+n...原创 2018-08-21 16:11:25 · 115 阅读 · 0 评论 -
HDU 2853 Assignment(二分图最大权匹配 KM算法)
其实对萌新来说很不友好...写了半天过不了...现在我也不是很懂 只是会匈牙利多练几篇再说吧。不懂的可以移步链接:https://www.cnblogs.com/logosG/p/logos.html#include <iostream>#include <cstdio>#include <algorithm>#include <...原创 2018-08-21 12:32:01 · 231 阅读 · 0 评论 -
HDU 2444 The Accomodation of Students(二分图最大匹配 匈牙利算法)
首先判断是否为一个二分图如果是的话用匈牙利算法来进行二分图最大匹配匈牙利算法也就是一个dfs 递归的东西。如果不懂的请看一篇讲的很详细的博客链接:https://www.cnblogs.com/logosG/p/logos.html /* qq:1239198605 ctgu_yyf */#include<iostream>#include&...原创 2018-08-21 12:29:36 · 120 阅读 · 0 评论 -
ACM算法练习题单: 二分图问题
转载出处:https://blog.csdn.net/ccutyear/article/details/58715941 经过了整整一个寒假我总算是完成图论算法中的一块---二分图问题。在这个寒假即将结束时候写一篇二分图问题的总结。 首先我指的二分图问题包括二分图染色、二分图匹配、一般图匹配。我在二分图染色的中指练习了图中结点的染色。(貌似还有边染色,不过我还没练过)然后,在二分图...转载 2018-08-23 17:52:04 · 630 阅读 · 0 评论 -
POJ1274 The Perfect Stall(二分图单向匹配 匈牙利算法)
嗯 想了很久的原因是因为match数组没懂其实这题特殊的地方在于他是一个单向图所以匹配成功之后不能互相match这里的match数组表示的是牛栏对应匹配的牛用的邻接表存储的对应关系 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include&l...原创 2018-08-23 17:36:26 · 217 阅读 · 0 评论 -
NYOJ 1015 二部图(二分图判断)
我用的bfs简单判断二分图如果它相邻的颜色节点颜色相同的话就返回false否则遍历完返回true用的邻接表存储 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#...原创 2018-08-23 17:32:53 · 558 阅读 · 0 评论 -
HDU 4380 Farmer Greedy(计算几何)
穷举。 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<...原创 2018-08-20 18:00:41 · 253 阅读 · 0 评论 -
POJ 1703 Find them, Catch them(带权并查集)
数组开太小会time error。用cin cout也会time error。 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>...原创 2018-08-17 18:25:10 · 127 阅读 · 0 评论 -
POJ 2377 Bad Cowtractors(最大生成树 kruskal)
注意是求最大生成树需要判定图是否连通。 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack&g...原创 2018-08-17 18:22:58 · 127 阅读 · 0 评论 -
HDU 2176 取(m堆)石子游戏(尼姆博弈)
数组开大一点 换个输入输出就AC了用最后的异或和异或每一位元素 如果小于它本身就知道最大的那位1变成了0,也就是找到了应该变的那一位(奇数项的最高位对应的数字)。异或之后的值就是拿去石子之后剩下的石子。不懂的可以参考博客:https://blog.csdn.net/k_koris/article/details/81743806#include<cstdio>#in...原创 2018-08-16 22:55:51 · 153 阅读 · 0 评论 -
斐波拉契博弈的证明
结论:当n为Fibonacci数时,先手必败。即存在先手的必败态当且仅当石头个数为Fibonacci数。 反之必胜。为什么?网上有些博客情况根本就没考虑全面。网上一些花里胡哨的证明自己又看不懂,花了一个多小时的时间自己证明了一下。 1.我们先来证明如果这个数是斐波拉契数,那么先手就败的情况。我们假设一个数为斐波拉契数,显然,它总可以分成两个连续的斐波拉...原创 2018-08-16 17:05:46 · 392 阅读 · 2 评论 -
尼姆博弈的证明
结论:将所有堆的石子异或起来,如果等于0先手必败,否则先手必胜。为什么? 首先当石子堆数只有2堆时候,它们异或值为0 当且仅当它们完全相等,那么显而易见了,你先取多少个,对手就取多少个,这样先手一定必败。那么石子是3堆,4堆,5堆...呢?我用一个excel表来表示几堆石子的异或值。 我任意放5堆石子 假设是189 91 98 5 80 由图可知...原创 2018-08-16 16:09:40 · 969 阅读 · 2 评论 -
巴什博弈的证明
结论:如果n%(m+1)==0 先手必败 。 n%(m+1)!=0 为先手必胜。 为什么?假设石子数为n个 ,能取的区间为1到m1.如果它能被(m+1)整除,那么假设你先手 取p个,那么对手总能取m+1-p 个(因为1<=p<=m,那么 1<=(m+1-p)<=m 也满足对手所取数量的条件限制),这样不断循环下去,最后...原创 2018-08-16 15:01:38 · 571 阅读 · 0 评论 -
POJ 1286 Necklace of Beads(置换群)
oh my gosh 一直time error的原因是因为定义longlong的n 结果输入%d就一直time error ctmd。置换群首先考虑旋转。 然后再考虑翻转 翻转分为奇偶数来考虑总数。最后除以置换的个数。 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<...原创 2018-08-18 17:30:50 · 126 阅读 · 0 评论 -
POJ 2407 Relatives (欧拉函数)
不懂数论。φ(n)指不大于n与n互素的数的个数 【1,n】。欧拉函数的几个性质:1.如果n为质数 那么φ(n)=n−1。(除了它本身 其它所有数与它互素)2.n=p^k 那么φ(n)=p^k-p^(k-1) (除了p的倍数,其他数都与p互质) 后面两条我并不理解。3.当gcd(n,m)=1时, φ(nm)=φ(n)∗φ(m) 证明: 因为φ(n)是积性函数。...原创 2018-08-13 16:31:08 · 140 阅读 · 0 评论 -
牛客小白月赛6 鹏(简单题)
链接:https://www.nowcoder.com/acm/contest/136/B来源:牛客网 题目描述 化而为鸟,其名为鹏。鹏之背,不知其几千里也。 ——《庄子·逍遥游》 HtBest的小鲲长大变成了大鹏,大鹏在天际翱翔,看到了一片绵延的山脉,每座山都有自己的高度,大鹏想穿过...原创 2018-08-21 17:15:30 · 284 阅读 · 0 评论 -
牛客小白月赛6 挖沟(最小生成树 kruskal)
链接:https://www.nowcoder.com/acm/contest/136/H来源:牛客网 题目描述 胡队长带领HA实验的战士们玩真人CS,真人CS的地图由一些据点组成,现在胡队长已经占领了n个据点,为了方便,将他们编号为1-n,为了隐蔽,胡队长命令战士们在每个据点出挖一个坑,让战士们躲在坑里。由于需要在任意两个点之间传递信息,两个坑之间必须挖出至少一条通路,而挖沟...原创 2018-08-21 17:16:27 · 200 阅读 · 0 评论 -
转载 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?
在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具体问题取一个99999999之类的数(显得很不专业啊!)在网上看别人代码的时候,经常会看到他们把INF设为0x7fffffff,奇怪为什么设一个这么奇怪的十六进制数,一查才知道,因为这是32-bit int的最大值。如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一...转载 2018-09-02 13:35:46 · 172 阅读 · 0 评论 -
2016蓝桥杯B组国赛 机器人塔
/* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<cstring&...原创 2019-05-06 12:31:24 · 175 阅读 · 0 评论 -
2014蓝桥杯B组国赛 生物芯片
X博士正在研究一种生物芯片,其逻辑密集度、容量都远远高于普通的半导体芯片。 博士在芯片中设计了 n个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮。 这些光源的编号从 1 到 n,开始的时候所有光源都是关闭的。博士计划在芯片上执行如下动作: 所有编号为2的倍数的光源操作一次,也就是把 2 4 6 8 … 等序号光源打开所有编号为3的倍数的光源操作一次, 也就是对 3...原创 2019-05-08 16:55:04 · 148 阅读 · 0 评论 -
2014蓝桥杯B组国赛 出栈次序
X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如图【p1.png】所示。X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种? 为了方便起见,假设检...原创 2019-05-08 15:53:21 · 186 阅读 · 0 评论 -
卡特兰数详讲
转载来自https://blog.csdn.net/wookaikaiko/article/details/81105031一、关于卡特兰数 卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 969484...原创 2019-05-08 14:50:29 · 256 阅读 · 0 评论 -
HDU 1455 DFS+剪枝
思路:DFS:首先,将这些树枝从小到大排序,然后从最大的树枝开始搜索,到这些树枝长度总和为止,只要dfs到满足条件的最小拼凑长度就break掉。那么,在dfs里面,x参数表示从哪根树枝搜索,len表示当前的拼凑的树枝长度,hope表示期望拼凑的长度,size表示所用树枝的根数。每用一根树枝都会使size+1,终止条件为所用树枝根数和总根数相等,那么表示可以满足题意。在dfs循环内部...原创 2019-04-29 18:59:33 · 200 阅读 · 0 评论 -
2017蓝桥杯B组国赛 发现环
小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑,你能帮助他吗?输...原创 2019-05-05 13:37:29 · 192 阅读 · 0 评论 -
2017蓝桥杯B组国赛 瓷砖样式
题目:小明家的一面装饰墙原来是 3*10 的小方格。现在手头有一批刚好能盖住2个小方格的长方形瓷砖。瓷砖只有两种颜色:黄色和橙色。小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。(瓷砖不能切割,不能重叠,也不能只铺一部分。另外,只考虑组合图案,请忽略瓷砖的拼缝)显然,对于 2*3 个小格子来说,口算都可以知...原创 2019-05-02 19:16:25 · 308 阅读 · 1 评论 -
2018蓝桥杯B组国赛 调手表
小明买了块高端大气上档次的电子手表,他正准备调时间呢。在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 n - 1,按一次后会变成 0 。作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时...原创 2019-05-02 13:26:32 · 223 阅读 · 0 评论 -
2018蓝桥杯B组国赛 激光样式
x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果? /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#in...原创 2019-05-01 17:56:18 · 360 阅读 · 0 评论 -
2019第十届蓝桥杯省赛C/C++B组题解
作为很久很久没有写过算法题的考研狗 OvO(是这样的,卑微考研),我于今年再次参加了蓝桥杯...大家都说这次蓝桥杯简单,我也是这么觉得的(或者说是我运气好),或者说是考细节吧(虽然我也没怎么考虑细节qwq),反正整个比赛的过程中心情感觉是放飞了自我(超级轻松)....考完最开始在知乎上对了一波答案感觉凉的透彻,想着这次省三能不能拿到qwq,结果当成绩出来的时候是省一...名次貌似也还不错....原创 2019-04-22 20:55:41 · 901 阅读 · 3 评论 -
Google经典烧脑面试题--扔鸡蛋
转载来自:http://www.cnblogs.com/Matrix_Yao/p/4793823.html2 Egg Problem继续我们的推理问题之旅,今天我们要对付的是一个Google的面试题:Two Egg Problem.我们开始吧!No.2 Google Interview Puzzle : 2 Egg Problem* You are given 2 eggs...转载 2019-03-19 15:38:54 · 375 阅读 · 0 评论 -
POJ2524 Ubiquitous Religions(并查集入门)
借着给大二出题的机会更...好久没刷题了我在想我到底适不适合算法并查集新手入门就做这道题 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<...原创 2018-09-17 22:04:20 · 109 阅读 · 0 评论 -
2018 ICPC亚洲区域赛网络赛 南京 E AC Challenge (状压DP)赛后补题
弄了差不多一下午 东查查西找找终于把题目算是弄懂了...也不算懂 算是个半懂吧....多刷几道状压DP题就好了。通过集合枚举每个状态,找到哪个状态是由哪个状态转化而来的(枚举每个状态集合的子集)如果这个子集集合和某个题目的要求的集合相等那么 那么就让这个状态dp【i】和dp【u】(前置状态dp数组)+做对了题目数量*a【j+1】+b【j+1】相比较更新最大值 最后枚举每...原创 2018-09-03 16:48:08 · 273 阅读 · 0 评论 -
集合的二进制整数表示
在程序中表示集合的方法有很多种,当集合中的元素个数较小时候,可以用二进制来表示,每一个二进制转换成十进制的整数可以唯一的表示一个集合。这个技巧也在算法竞赛中经常用到。博客链接:https://www.cnblogs.com/hdwang/p/6234931.html 比如有一个集合{0,1,2…n-1}那么我们可以进行如下操作:空集.........................原创 2018-09-03 15:24:40 · 1097 阅读 · 0 评论 -
POJ 3311 Hie with the Pie(状态压缩DP)
dp[s][v] 表示从v出发 访问剩余还未访问过的集合s。这里的集合s不是一个普通的整数 对于集合s我们可以把每一个元素的选取与否对应到一个二进制位里面 从而把状态压缩成一个整数,大大简化了计算和维护。 /* qq:1239198605 ctgu_yyf */#include <iostream>#include <cstdio>...原创 2018-09-02 15:06:30 · 135 阅读 · 0 评论 -
转载 利用二进制枚举
用二进制的一位表示集合对应某一元素的选取状态,1 表示选取,0 表示未选取;----------------------------------------------------------------------------------------------------------先介绍位运算:位运算是对二进制的每一位进行计算,所以每一位只有 0或 1两种可能三种常用的位运算符:...转载 2018-09-02 14:43:27 · 241 阅读 · 0 评论 -
POJ 2189 Strange Way to Express Integers(扩展CRT)
/* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<cstring&原创 2018-08-13 15:46:45 · 132 阅读 · 0 评论 -
POJ 1704 Georgia and Bob(尼姆博弈)
很简单,这个可以转化成尼姆博弈的模型。因为两两之间的空格就相当于石子(因为它们相对而言,前一个能移动多少步,后一个也能移动相同的个数,所以相对位置是没有变化的 最后改变的还是它们之间差距的大小)注意奇数特判就行了。 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio&g...原创 2018-08-17 23:12:57 · 119 阅读 · 0 评论 -
并查集详解(转载)
网上原来看到的一篇讲的比较生动形象的并查集..并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是...转载 2018-08-05 10:49:47 · 123 阅读 · 0 评论 -
POJ 1182 食物链(带权并查集)
卡时间什么的最烦人了...非得scanf才过的去WOC鲁迅:我还有什么话可说呢... /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue&...原创 2018-08-05 10:41:50 · 116 阅读 · 0 评论 -
POJ 1201(差分约束求最短路)
根据题意得出约束条件:s[bi]-s[ai-1] >= ci变形可得 s[ai-1] -s[bi]<= - ci这是显然的。另外不要忘了对于一个连续的整数集合,它包含隐性条件0<=s[i]-s[i-1] <= 1 综上可得:①s[ai-1]-s[bi] <= -ci②s[i]-s[i-1] <= 1③s[i-1]-s[i] <=...原创 2018-08-04 16:53:19 · 216 阅读 · 0 评论