自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

转载 NCPC2016

题目链接:https://vjudge.net/contest/259564#overviewA题:离线并查集。先把所有的线条全部画上去,然后我们dfs跑一遍,把所有的连通块求出来。然后从后往前一步一步的去掉每一笔,我们判断是否会出现两个连通块合并到一起,或者多出一个联通块。这个我们通过并查集就可以实现。 1 #include<iostream> 2 ...

2018-10-31 21:17:00 164

转载 2016 ACM-ICPC CHINA-Final

题目链接:https://vjudge.net/contest/259560#overviewA题:签到,略B题:C题:D题:二分+贪心,主要是check函数怎么写的问题。我们采用贪心的策略,我们假设现在二分的值是mid,就是说能组成mid个tower,那么,我们先选择mid个最小的 balls,这个是最优的。因为如果我放着小的 ball 不选而去选大的,那么下一层所要求...

2018-10-14 18:36:00 233

转载 2016沈阳区域赛题解

题目链接:https://vjudge.net/contest/178453#overviewA题:签到,略B题:签到,略C题:矩阵快速幂。推出一个 7*7 的矩阵即可。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 typedef long long LL; 5 cons...

2018-10-09 14:18:00 118

转载 NAIPC2016部分题解

A题:空B题:空C题:状压dp,我们设 dp[i][S] 表示用 i 个信封装集合 S 封信,转移就是 dp[i][S] = min(dp[i][S], dp[i-1][S1] + val[S^S1]),其中 S1是S的子集。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 type...

2018-10-04 10:29:00 160

转载 Gym - 101612L Little Difference(二分)

题目链接:https://vjudge.net/problem/Gym-101612L题目大意:给出一个n,1 <= n <= 10^18,生成所有满足条件的数列,这些数列需要满足数列内的所有项相乘等于n,数列内的任意两项只差必须小于等于1。若这样的数列是有限个,全部输出,否则输出-1。首先这题特别坑,光题意就看了好久好久好久……看到自闭,最后终于看懂,然后想了一会发...

2018-09-18 22:54:00 129

转载 数论之莫比乌斯反演

莫比乌斯反演Tips:本篇blog实际上是一篇听课笔记,记录的马宗民老师在初等数论的视频中所讲的积性函数章节的大部分知识,本篇blog涉及的所有公式在马宗民老师的视频中都有详细的证明求解。由于本blog篇幅有限,只给出了Dirichlet积这一节之后的所有公式的证明,在此之前的公式都只给出了定义,若想深入了解公式的证明过程可以观看马宗民老师的视频,在优酷搜索关键字:初等数论即可找到视频...

2018-08-15 08:22:00 288

转载 2018 多校 HDU - 6395 矩阵快速幂

这题就是一个矩阵快速幂,但是后面还有一项,重点在对这个项的处理上面,关于这个项的处理,可以看另一篇blog(https://www.cnblogs.com/DynastySun/p/9462847.html),这上面有关于那个项的一些特点。我们可以观察多,这个项的变化规律,P/n(向下取整),当n越小的时候,这个值变化的越频繁,当n越大,这个值变化的越小。这就好办了,对于变化频...

2018-08-13 20:27:00 136

转载 LightOJ - 1245 Harmonic Number (II) (找规律)

题目大意:给出一个n(1 <= n < 2^31)求出H(n)的结果,H(n)的定义为下:分析:对于一个n,设 t = n / i:  满足 t >= 1的有多少个呢?  有 n / 1 个。  满足 t >= 2的有多少个呢?  有 n / 2 个。  ……  满足 t >= k的有多少个呢?  有 n / k 个。以上结论不难...

2018-08-12 13:51:00 142

转载 LightOJ - 1282 Leading and Trailing

题目链接:https://vjudge.net/problem/LightOJ-1282求后三位我们可以用快速幂取模算出来,但是前三位怎么办呢?对于任意一个数y,都可以表示为10^x,这实际上就是一个以10为底的指数函数,y = 10^x,所以x = log10(y),这个x就分为整数部分和小数部分。n^k就可以表示为10^xk,我们假设这个 xk 为 a.b ,那么n = 10...

2018-08-09 21:19:00 137

转载 LightOJ - 1336 Sigma function (找规律)

题目中说明对于一个数字n,有如下定义:唯一分解定理:σ 函数的定义如下:现在给出一个n ( 1 <= n <= 10^12 ),问在1到n中有多少个整数k使得 σ(k) 为偶数 ?我们先观察上述式子,发现要想让σ(n)为偶数,那么只要其中有一项(1 <= i <= k )为偶数即可,我们可以将这个式子变型一下,分子部分可以变为:,约去...

2018-08-09 19:01:00 164

转载 费马小定理及其应用

费马小定理:若一个数p是素数,a为整数,且gcd(a,p) == 1,则简单点说就是:假设a为整数,p为素数,且gcd(a,p)==1,那么a的(p-1)次方除以p的余数一定是 1注意:费马小定理只是素数判定的一个必要条件,素数一定满足费马小定理,满足费马小定理的数,却不一定是素数,例如Carmichael数(Carmichael数都是符合费马小定理的,但是他们都是合数)。...

2018-08-07 17:17:00 1179

转载 HDU - 1010 (DFS回溯法 + 奇偶剪枝)

题目大意:给出一个N*M的迷宫,迷宫中有一扇门D,只有在T时刻会打开,现在你0时刻位于S,你需要在正好在T时刻到达D,你只能上下左右移动,每次移动耗费1时刻,且同一个位置不能进入两次,问是否能在T时刻刚好到达D处。范围 1 < N,M < 7, 1 < T < 50,这个范围有点大,直接DFS回溯搜会TLE,我们要加上一个剪枝,这个剪枝十分重要,我们求出起点到...

2018-08-07 13:24:00 157

转载 再谈素数筛

关于素数筛我们介绍常用的两种素数筛:普通筛法求素数:复杂度为O(nloglogn)1 const int maxn = 100000;2 bool vis[maxn];3 memset(vis, false, sizeof(vis));4 vis[1] = true;5 for(int i = 2; i < maxn; ++i) if(!vis[i]){...

2018-08-06 19:10:00 147

转载 HDU - 2588 GCD (欧拉函数)

这题实际上就是一个求欧拉函数的题目,我们知道欧拉函数是表示:小于等于正整数N,且与N互质的正整数的个数,记为phi(N)。关于欧拉函数具体可以看看这篇bolg:https://www.cnblogs.com/DynastySun/p/9364673.html题目中给出N和M要求满足GCD(X, N) >= M, (1 <= X <= N)的X的个数,一看数据范围 1...

2018-08-05 21:08:00 124

转载 2015 NCPC Problem G-Goblin Garden Guards

题目大意:给你n个哥布林的坐标,和m个圆,问有多少哥布林不在圆内?标解就是:扫描线我们可以将一个圆划分成 2*r + 1部分,然后我们对每一部分求出其上界和下界的左边,并分别打上 上界和下界的标记,然后我们将其加入哥布林那个集合,并按照 x从小到大,y从小到大 进行排序,这样我们就可以在O(n)内确定哪些哥布林在圆中(在上界和下界之间的哥布林就是在圆中的),哪些不在圆中。下面就是...

2018-07-29 11:17:00 231

转载 二分答案

二分答案在比赛中很常用,这个算法看起来很简单,实际上在实现的时候回比较绕。二分答案的经典问题就是求:最大值最小、最小值最大。二分答案的主体算法就是下面这样: 1 int l = MIN, r = MAX, ans; 2 while(l <= r) { 3 int mid = (l+r)/2; 4 if(check(mid)) { 5 ...

2018-07-26 16:48:00 168

转载 多校 HDU-6312 Game (博弈)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312Alice和Bob做一个博弈游戏,一个集合中的数为1 到 n,一个人每轮可以从中移走一个数,同时将该数的所有因数也全部移除。双方一直轮流这样进行下去,直到一方移除剩余的全部数就获胜。Alice先手,给出一个n,问双方都采取对自己最优策略时,谁能获胜?这个题比赛的时候...

2018-07-25 21:14:00 148

转载 唯一分解定理

唯一分解定理:任何大于1的自然数都可以唯一分解成有限个质数的乘积这里的 n > 1;定理就是这样,我们来看一个题目: https://vjudge.net/problem/UVA-10892首先我们可以将a、b进行分解 a = (p1^a1)*(p2^a2)......(pn^an),b = (p1^b1)*(p2^b2)......(pn^an)它们的最小公...

2018-07-25 20:50:00 157

转载 欧拉函数

欧拉函数定义:对于正整数N,小于或等于N 且 与N互质的正整数的个数,记为phi(N);phi(N) = N * (1-1/p1) * (1-1/p2) * (1-1/p3) * ...... * (1-1/pk)这里的p1、p2 ...... pk 是 N 所有的质因数。欧拉函数性质(推导):  1、phi(1) = 1;  2、若N为素数,则phi(N) = N-...

2018-07-25 10:48:00 261

转载 扩展欧几里得

扩展欧几里得算法:对方程 ax + by = gcd(a, b) ,该算法可以找出这个方程的一对整数解 (x, y) ,这里的 x 和 y 不一定是正数,也可能是负数或零。算法代码如下:1 //d就是gcd(a,b), (x,y)就是式子 ax+by=gcd(a,b) 的一个解2 void exgcd(int a, int b, int& d, int& x,...

2018-07-25 09:32:00 87

转载 逆元

在比赛中我们会遇到形如 (A/B)%MOD 的式子(比如说组合数学中求组合数),但是由于取模对除法没有分配律,所以我们只能乖乖的先算 A/B 再对结果进行取模吗?当A、B较小的时候还行,当A、B很大的时候就不适用了,因为A/B会丢失精度。我们可以将上述式子改写一下 (A/B)%MOD 改为 (A * inv(B)) %MOD 这样一来除法就变为乘法了,这样一来精度就有保证了,上式再进一步...

2018-07-24 20:47:00 122

转载 POJ 3660 Cow Contest——flody求传递闭包

题目大意:有n头牛,两头牛之间可以进行比赛,给出m场比赛的结果,问,有几头牛的战力排名可以确定?典型的flody求传递闭包问题,之前没仔细想,各种花式拓扑排序,没弄出来。后来才想起是flody若一场比赛,牛a战胜了牛b,则我们建立一条从a到b的有向边。把每场比赛我们都这么统计一下,就能得到一张有向图。我们分析一下,若a战胜b,b战胜c,则就相当于a战胜了c。所以我们可以对这张有向...

2018-07-24 16:36:00 125

转载 最小生成树算法

最小生成树有两种算法:Kruskal算法 和 Prim算法算法一:Kruskal算法基本思想就是:每次选择目前剩余的边中的权值最小的边,若将此边加入图中,不会形成环,则可以加入图中,否则舍弃。判断是否会形成环可以使用并查集算法。以HDU - 1879题为例(题目链接:https://vjudge.net/problem/HDU-1879 ),代码如下: 1 #...

2018-07-24 16:07:00 127

转载 最短路练习

算法一:Floyed算法 O(n^3)1 for(int k = 1; k <= n; ++k) //中转结点!!!!2 for(int i = 1; i <= n; ++i)3 for(int j = 1; j <= n; ++j)4 dis[i][j] = min(dis[i...

2018-07-23 21:20:00 122

转载 UVa 11491 Erasing and Winning

题意:给出一个n位的整数,要求删除其中的d个数字,使得剩下的部分最大化。有简单的做法,我们可以注意到,高位对一个数字的是有绝对的影响力的,所以我们需要保证高位足够大,我们可以这样贪心求解,我们对这n个数字从前往后考虑:若后一个数字比前一个数字大,则前面这个数字肯定需要删除,并且删除之后我们还得和新的前一个数字比较,如果仍然是后一个数字大我们还得将这个新的前一个数字删除并继续...

2018-07-22 09:02:00 109

转载 uva 1610 聚会游戏

一般的做法就是写一堆if,但是由于题目中的限制比较多,所以陷阱也很多,很容易漏掉一些情况这里我们采用暴力的方法去实现 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int n, k, cnt; 5 string s0, s1, s2; 6 7 int main(){ ...

2018-07-04 17:00:00 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除