ACM
星河呀
承担呼吸的累赘和心跳的负荷,乐此不疲。
展开
-
卡特兰数详讲
转载来自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 · 283 阅读 · 0 评论 -
斐波拉契博弈的证明
结论:当n为Fibonacci数时,先手必败。即存在先手的必败态当且仅当石头个数为Fibonacci数。 反之必胜。为什么?网上有些博客情况根本就没考虑全面。网上一些花里胡哨的证明自己又看不懂,花了一个多小时的时间自己证明了一下。 1.我们先来证明如果这个数是斐波拉契数,那么先手就败的情况。我们假设一个数为斐波拉契数,显然,它总可以分成两个连续的斐波拉...原创 2018-08-16 17:05:46 · 423 阅读 · 2 评论 -
尼姆博弈的证明
结论:将所有堆的石子异或起来,如果等于0先手必败,否则先手必胜。为什么? 首先当石子堆数只有2堆时候,它们异或值为0 当且仅当它们完全相等,那么显而易见了,你先取多少个,对手就取多少个,这样先手一定必败。那么石子是3堆,4堆,5堆...呢?我用一个excel表来表示几堆石子的异或值。 我任意放5堆石子 假设是189 91 98 5 80 由图可知...原创 2018-08-16 16:09:40 · 1001 阅读 · 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 · 590 阅读 · 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 · 134 阅读 · 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 · 149 阅读 · 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 · 157 阅读 · 0 评论 -
NYOJ 1016 德莱联盟(计算几何 线段相交判定)
判断两条线段是否相交。在判断两条线段是否相交时,我们常用快速排斥实验跟跨立实验这两种方法,快速排斥实验能很快的排除掉线段不相交的情况,但并没法成为线段相交的充要条件,在快速排斥实验之后接上跨立实验就能完全的判断两线段是否相交,但其实只用跨立实验这一种办法也能作为判断线段相交的充要条件。这里引用一篇大佬的博客里面的内容博客链接:https://www.cnblogs.com/TangMo...原创 2018-08-15 21:28:24 · 159 阅读 · 0 评论 -
POJ 1704 Georgia and Bob(尼姆博弈)
很简单,这个可以转化成尼姆博弈的模型。因为两两之间的空格就相当于石子(因为它们相对而言,前一个能移动多少步,后一个也能移动相同的个数,所以相对位置是没有变化的 最后改变的还是它们之间差距的大小)注意奇数特判就行了。 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio&g...原创 2018-08-17 23:12:57 · 132 阅读 · 0 评论 -
POJ 2395 Out of Hay(最小生成树 kruskal)
现在看到最小生成树 并查集水题二话不说 10分钟AC 真的舒服。这题把最小生成树构建出来 构建的时候取个最大边就行了 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>...原创 2018-08-17 21:56:20 · 218 阅读 · 0 评论 -
POJ 2115 C Looooops (拓展欧几里德及证明)
大前提你要知道 拓展欧几里得的算法函数首先 一定存在整数对满足方程 ax+by=gcd(a,b) 这里gcd(a,b)是最大公约数同gcd一样我们可以用递归定义exgcd 假设已经求得 bx’+(a%b)y’=gcd(a,b) 已知a%b=a-(a/b)*b (为什么会这样 因为a/b取整) ...原创 2018-08-12 11:16:47 · 193 阅读 · 0 评论 -
POJ 1258 Agri-Net (最小生成树 kruskal)
/* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<cstring&原创 2018-08-12 10:35:12 · 280 阅读 · 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 · 181 阅读 · 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 · 135 阅读 · 0 评论 -
POJ2524 Ubiquitous Religions(并查集入门)
借着给大二出题的机会更...好久没刷题了我在想我到底适不适合算法并查集新手入门就做这道题 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<...原创 2018-09-17 22:04:20 · 117 阅读 · 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 · 305 阅读 · 0 评论 -
集合的二进制整数表示
在程序中表示集合的方法有很多种,当集合中的元素个数较小时候,可以用二进制来表示,每一个二进制转换成十进制的整数可以唯一的表示一个集合。这个技巧也在算法竞赛中经常用到。博客链接:https://www.cnblogs.com/hdwang/p/6234931.html 比如有一个集合{0,1,2…n-1}那么我们可以进行如下操作:空集.........................原创 2018-09-03 15:24:40 · 1132 阅读 · 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 · 146 阅读 · 0 评论 -
转载 利用二进制枚举
用二进制的一位表示集合对应某一元素的选取状态,1 表示选取,0 表示未选取;----------------------------------------------------------------------------------------------------------先介绍位运算:位运算是对二进制的每一位进行计算,所以每一位只有 0或 1两种可能三种常用的位运算符:...转载 2018-09-02 14:43:27 · 263 阅读 · 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 · 121 阅读 · 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 · 262 阅读 · 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 · 127 阅读 · 0 评论 -
POJ1274 The Perfect Stall(二分图单向匹配 匈牙利算法)
嗯 想了很久的原因是因为match数组没懂其实这题特殊的地方在于他是一个单向图所以匹配成功之后不能互相match这里的match数组表示的是牛栏对应匹配的牛用的邻接表存储的对应关系 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include&l...原创 2018-08-23 17:36:26 · 228 阅读 · 0 评论 -
NYOJ 1015 二部图(二分图判断)
我用的bfs简单判断二分图如果它相邻的颜色节点颜色相同的话就返回false否则遍历完返回true用的邻接表存储 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#...原创 2018-08-23 17:32:53 · 585 阅读 · 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 · 266 阅读 · 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 · 136 阅读 · 0 评论 -
HDU 1166 敌兵布阵(线段树)
Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。...原创 2018-08-14 22:16:14 · 106 阅读 · 0 评论 -
牛客网 道路建设(prime+kruskal 算法)两种方法实现
什么prime算法 不就是迪杰特斯拉么....牛客网上面无论考虑图是否连通都可以过还有城市序号从1开始,我也踩了....踩雷王就是我 我是酷炫的小菜鸡题目链接:https://www.nowcoder.com/acm/contest/76/B这是prime算法(考虑了图是否连通) /* qq:1239198605 ctgu_yyf */#inclu...原创 2018-08-07 12:17:55 · 693 阅读 · 2 评论 -
HDU 1874 畅通工程续(迪杰斯特拉)
板子题 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<cst...原创 2018-08-07 11:24:12 · 167 阅读 · 0 评论 -
并查集详解(转载)
网上原来看到的一篇讲的比较生动形象的并查集..并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是...转载 2018-08-05 10:49:47 · 132 阅读 · 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 · 125 阅读 · 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 · 226 阅读 · 0 评论 -
NYOJ 183-赚钱啦 (bellman-ford)
/* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<cstring&原创 2018-08-04 15:59:16 · 122 阅读 · 0 评论 -
HDU 2066(最短路径 迪杰斯特拉)
/* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stack>#include<cstring&原创 2018-08-04 10:06:37 · 206 阅读 · 0 评论 -
NYOJ 237-游戏高手的烦恼(二分图匹配)
匈牙利算法...与NYOJ239一模一样的板子题 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<stac...原创 2018-06-06 18:55:50 · 145 阅读 · 0 评论 -
NYOJ 239-月老的难题(二分图匹配)
解的是标准的匈牙利算法的模板,网络流还没看,这题好像也可以用网络流解匈牙利算法不懂的参考博客: http://blog.csdn.net/niushuai666/article/details/7023101 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>...原创 2018-06-06 17:01:13 · 166 阅读 · 0 评论 -
NYOJ 214-最长单调递增子序列(二)(DP+二分)
数据太大普通DP是过不去的 要用二分把O(n^2)时间复杂度优化成O(nlogn)lower_bound(a,a+n,k)是c++STL自带的一个二分查找的函数,这个函数从已经排好的序列中利用二分查找找出指向满足ai>k的ai的最小的指针。因为开数据的问题wa了两发woc /* qq:1239198605 ctgu_yyf 81 9 10 5 10 11 2 13...原创 2018-06-11 21:04:15 · 198 阅读 · 0 评论 -
NYOJ 17-单调递增最长子序列(DP)
儿时做过的经典的导弹拦截题目,经典的LIS题了,喵喵喵 /* qq:1239198605 ctgu_yyf */#include<iostream>#include<cstdio>#include<string>#include<vector>#include<queue>#include<s...原创 2018-06-11 20:58:27 · 210 阅读 · 0 评论 -
alice and boooooooob_几何博弈
写了几篇博客感觉 ...都是代码比较简单的..其实吧,现在数据结构都还不是很熟正在死磕,看到一道几何博弈的题,感觉..有点意思题目大意是 Alice和boooob(反正我说他叫boooob他就是booob),上天安排的,最大。他们在玩一个游戏,有个三角形,点由你来给出,然后alice找出一个点(她很聪明的那种),然后bob过这个点画出一条线,然后他取最大的那块面积,求如何画这条线他取得的面积才最大...原创 2018-04-20 21:44:07 · 226 阅读 · 0 评论 -
循环序列_最大子段和变种
第一次写博客....一道icpc选拔赛的水题..题目大意:给你一个整数的循环序列,也就是头尾相接的序列,要求找出最大的一段子段和(循环意义下的)也就是常求的最大子段和问题,只不过这次数组头尾相接了而已 思路1:通常的方法就是复制这个整数数组接到原数组的后面,这样就变成了求有上下限的最大子段和问题,解题方法自己去查阅相关资料。思路2:我们可以换另外一种方式来想,求最大字段和,可以先通过ans-最小子...原创 2018-04-18 08:32:59 · 559 阅读 · 0 评论