算法竞赛
文章平均质量分 53
2017 - 2020 ACM 生涯部分专题记录
KobeDuu
这个作者很懒,什么都没留下…
展开
-
HDU---4135:Co-prime 【容斥原理】
DescriptionGiven a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.Two integers are said to be co-prime or relatively prime if they...原创 2018-08-09 15:51:02 · 406 阅读 · 0 评论 -
斯特林公式与阶乘
想必大家都知道n!很容易爆long long吧,n = 23时(unsigned long long)也束手无策。但很多时候我们又要用到n!斯特灵公式:这个公式的证明用到了高数极限的知识和Wallis公式,这里就不再赘述。再看斯特林公式的更准确的表达:,n越大,n!越准确,实际上n比较小时,斯特林公式也很近似。1) 牛客网:https://www.nowcoder.com/...原创 2018-09-10 00:06:08 · 925 阅读 · 0 评论 -
2018年ACM-ICPC - 南京网络赛J:Sum【欧拉线性筛】
题目:戳这里~~~题意:一个数的square-free是它的所有因子中不包含有平方数因子分解的个数(1除外),例如:12可以分解为 4 * 3,但4是平方数,所以f(12) 中就不包括3和4,题意要求。题解:对于一个数n,我们可以先分解它的质因子,然后考虑将所有质因子分成两组,考察有多少种不同的分组方式,比如:30 有2,3,5的质因子各一个,那么可以分成(1,30),(2,...原创 2018-09-12 00:36:22 · 142 阅读 · 0 评论 -
费马大定理和勾股数
前言:大家都知道:若a^2 + b^2 = c^2,则(a,b,c)为一组勾股数,如(3,4,5);如果只给你一个数,你会怎么找到一组勾股数呢?一.寻找勾股数:若需要一組最小數為奇數的勾股數,可任意選取一個 3 或以上的奇數,將該數自乘為平方數,除以 2,答案加減 0.5 可得到 兩個新的數字,這兩個數字連同一開始選取的奇數,三者必定形成一組勾股數。但卻不一定是以這個選取數字為起首勾...原创 2018-08-28 21:00:50 · 1177 阅读 · 0 评论 -
Wannafly挑战赛25:因子【阶乘分解素因子】
链接:https://www.nowcoder.com/acm/contest/197/A来源:牛客网题目:令 X = n!, 给定一大于1的正整数p 求一个k使得 p ^k | X 并且 p ^(k + 1) 不是X的因子。题意:求一个K值使得p^k 是 n! 的因子,而p^(k+1)不是 n! 的因子。即求n!里最多有多少个p。题解:根据质因子唯一分解定理:p =...原创 2018-10-02 15:48:51 · 300 阅读 · 0 评论 -
Codeforces Round #515 (Div. 3)(全部题解)
A. Vova and Train题意:找1~L之间 v 的倍数的个数,在区间[l,r]之间的不能算。题解:简单的公式题。代码:#include<algorithm>#include<iostream>#include<cstdio>#include<cmath>using namespace std;typede...原创 2018-10-13 11:30:59 · 411 阅读 · 0 评论 -
POJ---1020:Dessert【爆搜】
FJ has a new rule about the cows lining up for dinner. Not only must the N (3 <= N <= 15) cows line up for dinner in order, but they must place a napkin between each pair of cows with a "+", ...原创 2018-07-05 00:10:35 · 401 阅读 · 5 评论 -
POJ---1562:Oil Deposits【搜索】
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides th...原创 2018-07-05 13:35:08 · 650 阅读 · 0 评论 -
ZOJ---2412:Farm Irrigation【油田问题】
Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a lot of samll squares. Water pipes are placed in these squares. Different square has a different type of ...原创 2018-07-04 23:15:39 · 318 阅读 · 1 评论 -
三分算法 — 解决凸凹函数的最值
转载:https://blog.csdn.net/pi9nc/article/details/9666627概念:在二分查找的基础上,在右区间(或左区间)再进行一次二分,这样的查找算法称为三分查找,也就是三分法。二分查找所面向的搜索序列的要求是:具有单调性(不一定严格单调);没有单调性的序列不是使用二分查找。与二分查找不同的是,三分法所面向的搜索序列的要求是:序列为一个凸凹性函数。...原创 2018-10-07 11:12:51 · 2548 阅读 · 0 评论 -
皮克定理和任意多边形的面积公式
1. 叉乘:若 :,,则:而:则:为三角形面积,建议百度叉乘的几何意义2.皮克公式:即:多边形面积 S = 多边形内整数点的个数 n + 多边形边上整数点的个数 / 2 -1注:多边形的顶点坐标必须是整数3. 线段上整数点的个数:gcd(线段在x轴的投影长,线段在y轴的投影长) + 1注:线段的两端点坐标都必须是整数简...原创 2018-11-09 19:19:19 · 10369 阅读 · 0 评论 -
Code[vs]---4768:跳石头【二分答案】
跳石头Description一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步...原创 2018-11-11 22:18:43 · 171 阅读 · 0 评论 -
Wannafly挑战赛26:七彩线段 【状压dp】
链接:https://www.nowcoder.com/acm/contest/212/C来源:牛客网题目:听说彩虹有七种颜色?一维坐标轴上n条线段,每条线段左端点l,右端点r,颜色为c,从中选m种颜色的互不接触的线段,每种颜色可选多条,所选线段的总长度最长为多少?题解:按右端点排序后,每次二分查找左端点,dp[i][j] 表示前i条线断状态为j时的最大长度,j的二进制有多...原创 2018-10-17 19:43:11 · 260 阅读 · 0 评论 -
数论基本定理和欧拉广义降幂公式
一. 威尔逊定理当p为素数时,(p-1)!= -1(mod p)其逆定理也成立,移项得:(p-1)! + 1整除 p二. 费马小定理当gcd(a,p)= 1且p为素数时,a ^(p-1)= 1(mod p)而a ^ 0 = 1(mod p),因此存在长度为p-1的循环节,费马降幂:a ^ b mod p = a ^(b mod p-1)mod p三. 欧拉定理...原创 2018-10-28 15:26:07 · 1913 阅读 · 0 评论 -
hihoCoder---1898:探索迷宫
描述:小Ho身处的迷宫一共有N个房间,编号1~N。房间之间一共有M条通道相连,其中第i条通道连接的2个房间编号是Ai和Bi。不过有些通道一开始是封闭的,必须从其他房间拿到钥匙才能通过。小Ho一开始处于1号房间,请你计算他最多能到达迷宫中的多少个房间。分析:搜到一条边时,如果钥匙没有拿到,保存该钥匙能到达的点,下次走到钥匙点,再来走钥匙能到达的点代码:#include ...原创 2018-12-25 21:19:04 · 214 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) (前五题)
题目传送门~A. Frog Jumping题意:青蛙先向右跳一次,再向左跳一次,又向右跳一次,再向左......,向右一次a个单位,向左一次b个单位,问跳k次后青蛙所在的位置,初始位置为0题解: 一次右,一次左后位置为a-b,计算有多少个a-b,然后判个奇偶代码: #include <iostream>using namespace std;int ...原创 2018-11-17 01:55:38 · 147 阅读 · 0 评论 -
线性基 — 化繁为简
一. 异或的性质1. A xorA = 02. A xor0 = A3. 若 A xor B = C,则 A xor C = B,B xor C = A二. 应用1. 根据性质1,2,可以实现a,b交换void swap(){ a = a ^ b; b = a ^ b; a = a ^ b;}2. 给定2n+1 个数,只有一个数只出现...原创 2018-10-22 00:23:42 · 351 阅读 · 0 评论 -
PTA---L2:家庭房产【并查集】
题目描述:给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数AC代码:#include <queue>#include <cstdio>#include <iostream>using namespace std;const int N = 1e5+55;int pre[N],vis[N],tig[...原创 2018-12-24 09:13:19 · 370 阅读 · 0 评论 -
Codeforces Beta Round #17:Notepad 【欧拉广义降幂】
题目:Nick is attracted by everything unconventional. He doesn't like decimal number system any more, and he decided to study other number systems. A number system with basebcaught his attention. Bef...原创 2018-11-02 12:47:33 · 243 阅读 · 0 评论 -
牛客小白月赛7:CSL分苹果【01背包】
链接:https://ac.nowcoder.com/acm/contest/190/G来源:牛客网题目描述CSL手上有n个苹果,第i个苹果的质量是wi,现在他想把这些苹果分给他的好朋友wavator和tokitsukaze。但是CSL为了不让他们打架,根据质量决定尽量地均分成两堆分给他们。现在CSL想知道到底给每个人分多少质量的苹果。注意:苹果不能劈开来,并且如果不能正好均分,t...原创 2018-11-07 20:16:59 · 365 阅读 · 0 评论 -
Code[vs]---1138:聪明的质监员 【二分答案+前缀和】
题目链接题意:有n个矿石,每个矿石有重量和价值两个参数,质检员可以调节一个最低重量w,每个区间的检查值为该区间内重量>=w的矿石价值和 *(重量>=w的个数),求m个区间的检查值之和 与 标准值s之差的绝对值的最小值题解:检查值之和 只和 w 有关,不难发现,若检查值之和 > s,则小于w的一定会使绝对值更大,检查值之和 < s,大于w的也一定会使绝对值更...原创 2018-11-13 09:40:46 · 661 阅读 · 0 评论 -
hihoCoder---1894:跳数游戏【二分map】
描述给定一个长度为N的数组A1, A2, ... AN,请你判断其中有几个元素Ai按如下跳跃规则能跳到最后一个元素AN。 假设你当前位于Ai,跳跃的规则是:如果这一步是第奇数次跳跃(从1开始计数),可以跳到Ai之后(Ai+1.. AN)比Ai大的最小的元素;如果这一步是第偶数次跳跃,可以跳到Ai之后(Ai+1.. AN)比Ai小的最大的元素;如果有多个满足条件的元素,则跳...原创 2018-12-10 13:53:47 · 214 阅读 · 0 评论 -
二分答案总结
一. 前言二分查找是最基础的算法,其效率较高且应用广泛,但它要求表中元素按关键字单调有序排列,同样二分答案:应用前提:二分答案要求满足条件的答案单调否则你就不能确定下一次查找答案所在的区间基本思想:在答案可能的范围内[L,R]二分查找答案,检查当前答案是否满足题目的条件要求,根据判断结果更新查找区间不难发现,二分查找就是在二分答案,答案所在区间为有序线性表的第...原创 2018-11-14 22:48:21 · 11377 阅读 · 7 评论 -
尺取法总结
尺取法:是一种高效的枚举区间的方法,一般用于求满足限制条件的最短区间或区间个数问题一般步骤:取两个指针(一般为数组下标) l,r,即区间的左右端点,不满足条件时,移动右端点(r++),满足条件时,记录答案,移动左端点(l++),直到右端点到达边界(1)POJ 3061题意:求最小子区间,使得区间的和大于等于一个数S分析:如果【l,r】的和 >= S,移...原创 2018-12-25 18:13:42 · 258 阅读 · 0 评论 -
西北大新生赛:星球大战【切割线定理】
1. 切割线定理:若PT 与 圆相切,则 PT^2 = PB*PA证明:连接AT, BT∵ ∠PTB=∠PAT(弦切角定理);∠APT=∠TPB(公共角);∴ △PBT∽△PTA(两角对应相等,两三角形相似);∴PB:PT=PT:AP;即:PT²=PB·PA2. 割线长定理:AP·BP=CP·DP证明:∵∠A和∠C都对弧BD∴由圆周角定理,得...原创 2018-12-24 08:51:03 · 572 阅读 · 0 评论 -
HDU---1506:Largest Rectangle in a Histogram【单调栈】
Description:A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have different heights. For example, the figure on t...原创 2018-12-03 19:55:00 · 177 阅读 · 0 评论 -
Code[vs]---1217:借教室【二分答案+差分】
NOIP2012 借教室题解:因为答案具有单调性——答案之前的肯定都能借到。所以我们来二分答案判断第 mid 个订单能否满足要求,如果满足,则答案肯定在 (mid,r] 内,如果不满足,答案肯定在 [1,mid] 内如何判断 mid 是否满足呢,因为要区间修改,单点查询,可以用 差分+前缀和 来计算前 mid 个订单 每天的教室需求代码:/***************...原创 2018-11-11 22:31:43 · 491 阅读 · 0 评论 -
POJ---1509:Glass Beads【最小/最大表示法】
(一)最小表示法:求环状字符串的最小字典序首先定义两个指针分别指向字符串的位置0和位置1,依次比较从这两个位置开始的字符串的字典序的大小*p = s[0],*q = s[1](1)*(p+k) == *(q+k) 比较下一位(k++)(2)*(p+k) > *(q+k) 那么*p 开始的字符串就舍弃,移动p指针,*p = *(p+k+1)...原创 2018-12-04 17:42:51 · 305 阅读 · 0 评论 -
牛客练习题21302: 被3整除的子序列
链接:https://ac.nowcoder.com/acm/problem/21302来源:牛客网题目:给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除答案对1e9+7取模输入:输入一个字符串,由数字构成,长度小于等于50输出:输出一个整数分析:对一个数字字符串取余有:123456789 % m =(((1 * 10 +2) %...原创 2019-01-19 18:52:32 · 1343 阅读 · 2 评论 -
HDU---4734: F(x) 【数位dp】
题意:给定F(x)的计算公式,求【0,b】范围内F(x) < F(a)的x的个数分析:笔者看完此题不假思索就开始写了,交上去就TLE,原因在于组数t很大,而dp数组记忆的是等于F(a)的个数,每次都要初始化dp数组,考虑记忆F(a)与F(x)的差,这个状态与a是没有关系的,好比F(x)==2,F(a)==5 与 F(x)==4,F(a)==7的个数是一样的代码:#inc...原创 2019-02-21 23:04:08 · 163 阅读 · 0 评论 -
HDU---2196:Computer【树形dp】
题意:给你一棵树,求距离每个节点最远的节点之间的长度分析:由于每个点都要求一次,所以BFS和最短路算法都会超时;在求树的直径中,我们可以轻松得到每个节点在其子树中的最长距离,再考虑每个节点经过其父节点的最长距离,二者取最大值,就得到整棵树中的该节点的最远距离考虑dp[x][3],dp[x][0]表示在x的子树中x的最长距离,dp[x][1]表示在x的子树中次最长距离,dp[x][2...原创 2019-02-18 15:10:43 · 134 阅读 · 0 评论 -
UVA---11916:Emoogle Grid 【BSGS】
题意:给 m* n的矩阵涂色,要求上下相邻的格子不能涂一样的颜色,其中有 b 个格子不能涂色,给出涂色的方案数 r 和 列数 n,求这个矩阵的行数 m分析:不难发现,每一列被不能涂色的格子分成了几块,那么就有几个格子能涂 k 种颜色,剩余的只能涂 k-1 种颜色,设 m = max(不能涂色的 x ),m 和 m+1以后的情况是不一样的,因为 m+1 后有的列会多出一块,特判一下,...原创 2019-01-15 16:34:18 · 408 阅读 · 0 评论 -
HDU---3534:Tree【树的直径】
题意:求一棵树中最长路径的长度及其数量分析:树的最长路径无非是树的直径,记录每个节点的子树中经过该节点的最长路径及其数量,更新树的直径时,同时更新直径的数量代码:#include <bits/stdc++.h>const int MAXN = 1e5+55;using namespace std;struct edge{ int v,w,next;...原创 2019-02-18 14:25:54 · 585 阅读 · 0 评论 -
HDU---3294:Girls' research【最长回文串--Manacher】
题意:求一个字符串的最长回文串,并输出回文串分析:先根据规则处理原串:s[i] = (s[i] - 'a' - (c - 'a')+ 26) % 26 +'a'跑manacher时,记录最长半径的中心点pos,根据转换规律找到最长回文串在原串的【l,r】代码:#include <cstdio>#include <cstring>#includ...原创 2019-01-09 17:32:55 · 152 阅读 · 0 评论 -
Codeforces Round #529 (Div. 3)(全部题解)
A. Repeating Cipher题意:将一个字符串S的第一个字符写一次,第二个写两次,第三个写三次......得到字符串t,给你t,求S分析:根据规则,t的第一个,第二个,第四个,第七个,第十一个......便是S的组成代码:#include <cstdio>#include <iostream>#include <algorith...原创 2018-12-28 10:14:44 · 259 阅读 · 0 评论 -
hihoCoder---1656 : 前缀后缀查询【字典树】
描述给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi。 现在小Hi要进行M次查询,每次查询包含一个前缀字符串Pi和一个后缀字符串Si。他希望知道同时以Pi为前缀并且以Si为后缀的单词中,权值最大的单词的权值是多少?假设字典包含"hihocoder"、"hijacker"和"hiker",权值依次是30、20和10。 那么...原创 2019-01-07 22:26:26 · 523 阅读 · 0 评论 -
POJ---1655:Balancing Act【树的重心】
题意:定义一个节点的"平衡值"为:将这个点拆去后,形成的子树中节点数的最大值,求一棵树的最小平衡值及对应的节点分析:也就是求一颗树的重心,通过DFS回溯记录下每个节点子树的节点数,取最大值为该点的平衡值,再对每个节点的平衡值取最小值,考虑dp[x]表示以x为根的子树的节点数代码:#include <vector>#include <iostream>...原创 2019-01-26 23:32:39 · 268 阅读 · 0 评论 -
POJ---2417:Discrete Logging【BSGS算法】
题意:p为素数且a,p互质,求最小的 x 满足上述同余方程分析:BSGS算法:当 p为素数且a,p互质,有费马小定理:,而,所以在模p下有长度为P-1的循环节若原方程有解,则最小的 x 必然在【0,p -1】内令 ,,,,则:i,j的范围很小,于是枚举j,将 n*a^j 存入hash表,hash[n*a^j ] = j,枚举 i ,若a^i*m 的值在...原创 2019-01-05 07:16:10 · 200 阅读 · 0 评论 -
牛客练习赛37:筱玛的迷阵探险【折半搜索+01字典树】
链接:https://ac.nowcoder.com/acm/contest/342/C来源:牛客网题目:筱玛是个快乐的男孩子。寒假终于到了,筱玛决定请他的朋友们一起来玩迷阵探险。迷阵可以看做一个n×n的矩阵A,每个格子上有一个数Ai,j。入口在左上角的(1,1)处,出口在右下角的(n,n)处。每一步都只能向下或向右移动一格。最后能获得的经验值为初始经验e与路径上经过的所有数的权值...原创 2019-01-14 00:41:27 · 426 阅读 · 0 评论 -
HDU---4990:Reading comprehension【矩阵快速幂】
题意:不难得出以下递推式:分析:由于 n很大,递推上去肯定超时,考虑矩阵加速,但递推式分情况讨论,不容易构造矩阵,先分类讨论:(1)n为奇数: Fn = 2 * Fn-1 + 1,n为奇数,n - 1必为偶数,Fn-1 = 2 * Fn-2(2)n 为偶数: Fn = 2 * Fn-1,n为偶数,n - 1必为奇数,Fn-1 = 2 * Fn-2 + 1...原创 2019-01-19 17:08:54 · 180 阅读 · 0 评论