ACM
Self-Discipline
在校大学生
展开
-
zoj3870-Team Formation(异或运算+数学规律)
题意:给出n个数,求出所有两个数异或值大于其中任何一个数的所有组合。分析:暴力肯定超时,(冥思苦想了许久,最后看了别人的题解才恍然大悟。)对于一个数n,如果将二进制表示形式下最左端出现0的位置变为1,那么变化之后的数肯定比原数大。思路:首先求出每个数二进制表示形式下最左端1出现的位置,再枚举每个数二进制表示形式下最左端0的位置,从左往右,累加上所有0与配对的情况。下面是原创 2017-08-25 22:25:29 · 609 阅读 · 0 评论 -
A Math Problem (广西邀请赛-重现赛)
A Math ProblemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 318 Accepted Submission(s): 152Problem DescriptionYou are given原创 2017-09-07 10:22:02 · 272 阅读 · 0 评论 -
POJ-1182 食物链
题目链接:http://poj.org/problem?id=1182http://poj.org/problem?id=1182解题思路:这道题是并查集题目中的经典。。。而且比普通并查集提高了一个档次,下面在基础并查集的前提上讲解并查集的真正用法。基础回顾:find()函数找根结点的两种写法如下:第一种递归:[cpp] view转载 2017-09-15 10:41:35 · 169 阅读 · 0 评论 -
HDU - 1272 小希的迷宫(并查集)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1272分析:要符合小希的想法则必须满足两个条件,一是图是连通的,二是不存在环。这样才能是两点之间存在唯一一条通路,说白了就是一无向连通无环图。用并查集判断是否有环,同时统计图的边和点的个数,必须满足num(vertex)+1=num(edge)。注意考虑图为空的情况。(坑啊)代码:#incl原创 2017-09-15 14:14:57 · 219 阅读 · 0 评论 -
hdu 6208 The Dominator of Strings
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6208题意:给出n个字符串,判断某一个字符串是否包含了其他所有字符串。分析:首先这个字符串一定是最长的那个,如果有多个最长的也没关系,任意找一个就行,如果有多个最长的字符串,则他们必须相同。网上看了很多题解发现要用字典树或者AC自动机,蒟蒻的我还没学到,就用了c++里面的find函数。。。代码:原创 2017-09-18 21:20:57 · 438 阅读 · 0 评论 -
poj 3211 Washing Clothes
题目:点击打开链接题意:夫妻两个人一起洗衣服,洗衣速度一样快,衣服有多种颜色,要求只有在完全洗完一种颜色的衣服后才能洗另一种颜色的,问所有的衣服都洗完最少用时是多少?思路:01背包的变式,要求两人洗同一色衣服所用的时间尽量相近(接近总时间的二分之一),然后取用时多的那一个,累加所有颜色的结果就是答案。代码:#include#include#include#include#i原创 2017-09-24 17:34:07 · 222 阅读 · 0 评论 -
HDU 1575 Tr A (矩阵快速幂)
Tr ATime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4432 Accepted Submission(s): 3333Problem DescriptionA为一个方阵,则Tr A表示A的迹(就是主原创 2017-08-30 08:15:01 · 233 阅读 · 0 评论 -
HDU 5135 Little Zu Chongzhi's Triangles
Little Zu Chongzhi's TrianglesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)Total Submission(s): 738 Accepted Submission(s): 397Problem Descriptio原创 2017-08-28 12:05:41 · 241 阅读 · 0 评论 -
HDU 5583 Kingdom of Black and White (暴力)
Kingdom of Black and WhiteTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0Problem DescriptionI原创 2017-08-27 09:41:58 · 319 阅读 · 0 评论 -
HDU 5578 Friendship of Frog(暴力)
Friendship of FrogTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0Problem DescriptionN frogs原创 2017-08-26 11:17:33 · 407 阅读 · 0 评论 -
HDU 5950 Recursive sequence(矩阵快速幂)
Recursive sequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 29 Accepted Submission(s): 19Problem DescriptionFarme原创 2017-08-30 12:10:25 · 329 阅读 · 1 评论 -
无穷大数 INF
#define INF 0x3f3f3f3f0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff(32-bit int的最大值)一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不原创 2017-09-24 22:29:01 · 995 阅读 · 0 评论 -
hdu 6216 A Cubic number and A Cubic Number
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6216题意:给出一个素数p,判断它是不是两个数的立方差。分析:法一:由立方差公式可知a^3-b^3=(a-b)(a^2+ab+b^2),由于p为素数所以只能是p=1*p;容易得a-b=1,a^2+ab+b^2=p;解方程可得a=(3+sqrt(12p-3))/6;只需判断sqrt(12p-3)、原创 2017-09-18 12:58:53 · 382 阅读 · 0 评论 -
hdu 6213 Chinese zodiac(map)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6213题意:一个人的妻子比她的丈夫大,现给出他们的生肖,问他们的年龄至少相差多少。分析:签到题,用map。代码:#include#include#includeusing namespace std;map mp;int main(){ mp["rat"]=1; m原创 2017-09-18 14:19:31 · 461 阅读 · 0 评论 -
博弈知识汇总
博弈知识汇总有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜转载 2017-09-10 20:13:29 · 194 阅读 · 0 评论 -
c++find函数
头文件#include 函数实现templateclass InputIterator, class T>InputIterator find (InputIterator first, InputIterator last, const T& val){ while (first!=last) { if (*first==val) return转载 2017-09-18 21:33:17 · 1664 阅读 · 0 评论 -
hdu 1443 Joseph (约瑟夫环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1443题意:给出k,2*k个人围成一个环,前k个人是好人,后k个人是坏人,现在我们需要每隔m个人把坏人挑出来,但是条件是最后一个坏人挑出来前不能有好人被挑出来。。问最小的m是多少。(从第一个开始数)分析:约瑟夫问题的变形,暴力枚举+打表,先暴力求出所有情况的结果,用数组保存起来打表,否则会tl,原创 2017-09-12 10:03:28 · 438 阅读 · 0 评论 -
hdu 1251 统计难题
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1251分析:字典树模板题,也可以用STL中的map(映射)。。。代码:///STL map#include#include#include#includeusing namespace std;map mp;int main(){ char str[12]; whi原创 2017-09-20 22:14:41 · 143 阅读 · 0 评论 -
hdu 1251 统计难题
题目:点击打开链接分析:一道裸的字典树模板题。。。代码:///#include#include#include#includeusing namespace std;const int maxn = 1e5;struct tre{ int next[26]; int val;}tree[5*maxn];int cnt=1;int init(){///原创 2017-09-21 22:14:46 · 157 阅读 · 0 评论 -
LightOJ - 1282 Leading and Trailing (数论)
题目链接:https://vjudge.net/contest/70017#problem/E题意:求n^k的前三位和后三位。分析:后三位数很好求,快速幂取模就行了,关键是前三位该怎么求,直接作为正整数n^k来取很难,因为这个数会很大并且无法舍去后面的数字来计算。自己没想出来,看了题解才发现就是一个数学公式,即科学计数法。首先,任何数都可以用科学计数法表示,n^k也不例外,即n^k=a*1原创 2017-10-20 13:54:33 · 213 阅读 · 0 评论 -
Light OJ 1341 Aladdin and the Flying Carpet(算数基本定理)
题目:https://vjudge.net/contest/70017#problem/C题意:给出a,b求所有(c,d)满足c*d=a,且c>=b,d>=b的二元组个数。思路:这题一开始肯定会想到最朴素的求解因子个数的算法,但是a较大,会超时,于是想到算数基本定理,预先用素数筛法求出一百万以内的所有素数,原创 2017-10-10 20:45:22 · 247 阅读 · 0 评论 -
UVA 10200 Prime Time
题目链接:https://vjudge.net/contest/196700#problem/W题意:原创 2017-11-06 22:20:14 · 183 阅读 · 0 评论 -
埃拉托斯特尼筛法算法复杂度(n*lnlnn)的证明([欧拉数学]素数倒数之和)
上一篇文章我通过欧拉数学的方式简单地讲了数论中的“黎曼ζ函数”和“金钥匙”。事实上,这把“金钥匙”与很多问题之间的联系已经被建立了起来,换句话说,“金钥匙”已经插入到了相应的“锁孔”中,数学家的工作就是要把这个金钥匙“拧动”,继而打开数学之门!接下来我们看看如何证明所有素数的倒数之和发散的。在入正题之前,我们得需要看一个引理:无限数列an的每一项都大于0,那么∑n=1∞an与∏n=转载 2017-11-07 19:36:56 · 5048 阅读 · 6 评论 -
UVA 11752 The Super Powers
题目链接:https://vjudge.net/contest/196700#problem/Y题意:输出所有满足是任意两个数两个或以上的次方的数字num(1分析:容易发现,这个数各种形式的最大幂指数一定是合数,因为只有合数才可以拆分为两个数之积(除了1和本身之外),而且小于64,可以预先把所有的小于64的合数存起来,(一开始没想明白,只想到了偶数),然后依次枚举筛选满足条件的情况(最小为原创 2017-11-07 18:03:34 · 232 阅读 · 0 评论 -
LightOJ - 1259Goldbach`s Conjecture
题目链接:https://vjudge.net/contest/70017#problem/F题意:求一个整数n能用多少对素数之和表示。(哥德巴赫猜想)分析:先用素数筛法打表,再循环遍历判断一遍并计数。有两个需要注意的地方,一是素数筛法标记的时候用bool类型的数组,用int型会超内存;二是判断的时候不能再采用普通的枚举算法,会超时,直接判断素数部分和n减去这个数之后的数是不是素数就行了。原创 2017-10-22 12:54:17 · 218 阅读 · 0 评论 -
关于在oj上出现Runtime error 的情况
越栈了,比如数组开的不够大PS:今天刷poj上的2635题,费了很长的时间。老是有各种小毛病,最后试了一组大数据,测试通过。提交的时候却出现runtime error,检查数组,发现没有越界。后来搜索发现问题出在局部函数main中的数组过大,导致栈溢出。定义为全局变量ac。问题:堆栈溢出的原因是因为在main里定义的局部变量 a[1000][1000]有将近 4MB的空间,由于转载 2017-10-22 13:26:32 · 13112 阅读 · 0 评论 -
LightOJ - 1234 Harmonic Number
题目链接:https://vjudge.net/contest/70017#problem/I题意:求1/1一直加到1/n的和。分析:发现这是一个高等数学里面的调和级数,它是发散的,即当n趋近于无穷大时,和也趋近于无穷大。由于n比较大,直接暴力求和会超时,事先保存结果会超内存。此题一共两种思路,一是直接应用公式,H(n)≈ln(n)+C+1/(2*n);C为欧拉常数,C≈0.57721原创 2017-10-23 10:07:50 · 220 阅读 · 0 评论 -
!=EOF的含义和原理
在ACM中经常遇见过这种情况,今天就来详细总结一下。(以while (scanf("%d", &a) != EOF)为例)1.EOF是一个宏,许多函数(包括scanf)在读文件读到末尾时,会返回EOF。2.OJ评判的原理:输入:通过管道命令,将一个包含若干测试用例的文件作为【标准输入流】,所以需要while(scanf() != EOF)来判断测试文件是否读完。输出:通原创 2017-10-23 22:07:08 · 12712 阅读 · 2 评论 -
%.lf(四舍五入)
C语言程序中浮点数类型(%.2lf)编译器默认四舍五入,如果不需要四舍五入,则要自行处理(编写函数)。(已经写过测试代码进行了验证!!!)。原创 2017-10-22 21:53:22 · 11837 阅读 · 0 评论 -
LightOJ - 1236 Pairs Forming LCM
题目链接:https://vjudge.net/contest/70017#problem/H题意:原创 2017-10-23 13:22:55 · 217 阅读 · 0 评论 -
poj 1002 487-3279(map)
题意: 输入一组电话号码,有的用数字表示,有的用字母表示,有的既有数字也有大写字母,有的有“-”。那么我们的工作就是利用你的火眼金睛,找出每个电话号码出现的次数,并对出现次数超过1次的电话号码,以字典升序的方式输出。 例如310-1010,总共出现了两次3-10-10-10-10和F10101010。分析:利用c++的map,map插入时已经按索引(key)排好序了。代码:#inclu原创 2017-12-30 20:37:37 · 192 阅读 · 0 评论 -
c++对map进行排序
最近在PAT刷题,其中一道题月饼 (25)需要用到对价格进行排序,但是排序后要用到价格对应的总售价。因而可以考虑用关联容器进行求解,map是比较合适这题的数据结构。 map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value。关于map的详细定义及用法可以见C++STL之map学习。假如存储学生和其成绩,我们用map来进行存储就是个不错的选择。转载 2017-12-30 20:43:02 · 4103 阅读 · 0 评论 -
欧几里得算法和扩展欧几里得算法
二元一次不定方程的一般形式为ax+by=c。其中 a,b,c 是整数,ab ≠ 0。此方程有整数解的充分必要条件是a、b的最大公约数整除c欧几里得算法的证明:a可以表示成a=kb+r(a,b,k,r皆为正整数;且a>b) 则r=amodb 假设d是a,b的一个公约数,为了方便,我们记d=(a,b) 则d|a,d|b,即a和b都可以被d整除。 而r=a−kb原创 2018-01-01 21:08:23 · 314 阅读 · 0 评论 -
POJ1061 青蛙的约会
POJ1061 青蛙的约会人生第二道ACM题,我都不知道该说神马了,中文题真不是好惹的,前几天一道递归和数组的中文题就花了我三天,这一题又花了我一个晚上的时间了!一开始不会做,上网看了解题报告说是数论题。然后就学啊学啊学啊,写完后发现只有21行代码,但花了我一个晚上的时间啊!是题太难还是我太水了?55555~~~要做此题,先要明白几个定理,为保严谨性我按顺序一一证明出来(心病,不证转载 2018-01-01 21:54:12 · 243 阅读 · 0 评论 -
bzoj2818 Gcd
Description给定整数N,求1数对(x,y)有多少对.Input一个整数NOutput如题Sample Input4Sample Output4HINThint对于样例(2,2),(2,4),(3,3),(4,2)1题解先求出1-n所有原创 2017-12-29 08:14:48 · 258 阅读 · 0 评论 -
hdu 1269 迷宫城堡(求强连通分量)
迷宫城堡Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8196 Accepted Submission(s): 3664Problem Description为了训练小希的方向感,Gardon建立原创 2018-01-13 16:16:58 · 170 阅读 · 0 评论 -
tarjan求强连通分量+缩点+割点以及一些证明
“tarjan陪伴强联通分量生成树完成后思路才闪光欧拉跑过的七桥古塘让你 心驰神往”----《膜你抄》 自从听完这首歌,我就对tarjan开始心驰神往了,不过由于之前水平不足,一直没有时间学习。这两天好不容易学会了,写篇博客,也算记录一下。 一、tarjan求强连通分量1、什么是强连通分量?引用来自度娘的一句话:“有向转载 2018-01-13 19:24:15 · 1579 阅读 · 0 评论 -
逆元的求法
数论倒数,又称逆元(因为我说习惯逆元了,下面我都说逆元)数论中的倒数是有特别的意义滴你以为a的倒数在数论中还是1/a吗(・∀・)哼哼~天真 先来引入求余概念 (a + b) % p = (a%p + b%p) %p (对)(a - b) % p = (a%p - b%p) %p (对)(a * b) % p转载 2018-01-22 10:30:43 · 8839 阅读 · 1 评论 -
POJ 2186 Popular Cows(强连通分量缩点)
Popular CowsTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 36225 Accepted: 14759DescriptionEvery cow's dream is to become the most popular cow in the h原创 2018-01-13 20:55:16 · 346 阅读 · 0 评论 -
hdu1827Summer Holiday(强连通分量-最小权点基)
Summer HolidayTime Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4111 Accepted Submission(s): 1853Problem DescriptionTo see a W原创 2018-01-14 10:26:30 · 239 阅读 · 0 评论