- 博客(77)
- 收藏
- 关注
原创 LightOJ1197 - Help Hanzo(区间素数筛 + 模板)
题目链接:https://vjudge.net/problem/LightOJ-1197题目大意:给出a,ba,b求[a,b][a,b]内素数个数,保证b−a<100000b - a < 100000,1≤a≤b<2311\le a\le b<2^{31}。解题过程:这题有点可惜,没仔细想就去翻书了,挑战第二版 P121,当初这里看过了,以为只有一个埃氏筛法然后跳过了,有点可惜…题目分析:首先对于任
2017-07-21 18:01:56
948
2
原创 LightOJ1214 - Large Division(高精度取模 + 模板)
题目链接:https://vjudge.net/problem/LightOJ-1214题目大意:两个数−10100<a<100100-10^{100}<a<100^{100}, bb 为 32bit范围内(其实并不是),需要用64位整型才可以。问aa能否被bb整除。解题过程:先用 Java 的大数类水过了,然后感觉应该用到数论的知识,想起来之前好像也有一道高精度取模的题,当初用 Python 水过
2017-07-21 17:46:52
944
原创 LightOJ1236 - Pairs Forming LCM(LCM+唯一分解定理)
题目链接:https://vjudge.net/problem/LightOJ-1236题目大意:给定一个数nn,求满足i≤j<n∧lcm(i,j)=ni \le j < n \wedge lcm(i, j) = n的(i,j)(i, j)对总共有多少个。解题过程:想了一会…不会,看的博客,就当是个结论好了。题目分析:对于每一对(i,j)(i, j),可由唯一分解定理写成如下形式: n=pe11⋅
2017-07-21 17:29:33
515
原创 LightOJ1282 - Leading and Trailing(快速幂+数学)
题目链接:https://vjudge.net/problem/LightOJ-1282题目大意:求nkn^k的前3位数和后三位数。2≤a<231,1≤k≤1072\le a<2^{31} , 1\le k \le 10^7。解题过程:只让求后三位的话我到是会,用快速幂就好了,但是求前三位感一脸懵逼。于是去翻了博客,发现居然还有这种操作!题目分析:后三位直接用快速幂取膜就好了,这里说一下前三位。这里
2017-07-20 17:22:18
454
原创 LightOJ1370 - Bi-shoe and Phi-shoe(欧拉函数+打表)
题目链接:https://vjudge.net/problem/LightOJ-1370题目大意:给出 NN 个数a1,a2…ana_1,a_2\dots a_n,求对每一个 aia_i 找出最小的 kik_i 使得 ϕ(ki)≥ai\phi(k_i) \ge a_i,输出 ∑n1ki\sum_1^n k_i 。解题过程:因为是数论的题,显然题目是要用欧拉函数,于是特意去翻了一下紫书的欧拉函数。想假
2017-07-20 16:51:25
552
原创 POJ1015 - Jury Compromise(DP+计算顺序)
题目链接:http://poj.org/problem?id=1015题目大意:现在两个长度相等的序列,DD和PP,现在要构造一个新的序列A={a1,a2,a3⋯ak}A = \lbrace a_1, a_2, a_3 \cdots a_k\rbrace使得∣∣∑ki=1D[ai]−∑ki=1P[ai]∣∣\big|\sum_{i=1}^kD[a_i]-\sum_{i=1}^kP[a_i]\big|
2017-07-02 10:39:58
349
原创 HDU1024 - Max Sum Plus Plus(DP+降维优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024题目大意:给定一个长度为n的序列,一个数m,求m段不相交的区间和的最大值。解题过程:自己好菜啊,简单的状态转移方程都没推出来,值得以后注意的是,以后定义状态不要太”松“了。比如刚开始定义的状态dp[i][j]dp[i][j]前ii个数构成的jj个区间和的最大值,然后发现不会转移。最后看了博客才发现别
2017-06-30 15:18:52
334
原创 HDU2196 - Computer(树的直径+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196题目大意:给定一个无向连通无环图,求每个节点到达的最远的节点的距离。解题过程:上午看了一下DP进阶之路的PDF,突然想学树型DP。然后找到了这个题,之前做了一个POJ的BFS求树的直径的,这次再来一发DP的。题目分析:由于题目给的是无向连通无环图,这里构造出一颗树来,不妨假设节点11为根。那么对于任
2017-06-28 20:41:19
688
原创 UVA11235 - Frequent values(游程编码+线段树)
题目链接:https://vjudge.net/problem/UVA-11235题目大意:给定一个递增序列,询问一段区间内出现频率最多的数出现的次数。解题过程:之前图灵杯比赛的题,当时照着板子敲A的,现在突发奇想补一下题,感觉还是挺简单的,就是用到了游程编码。题目分析:由于题目是有序的,那么可以很方便的将一段相同的数合为一个区间,data[i]表示第i段区间元素个数,lb[i]记录第i段区间的左边
2017-06-28 16:56:15
375
原创 CodeForces743D - Chloe and pleasant prizes(树型DP)
题目链接:https://vjudge.net/problem/CodeForces-743D题目大意:给定一颗树,每个节点上有一个权值,求找出两颗不相交子树,使两颗子树的权值和最大。解题过程:好久好久好久之前CF比赛的题,当时好像是没读懂题意,虽然说现在也有点读不懂,最后看了下别人的博客才知道题意。看到下面的标签上有DFS和DP,于是往树型DP上想,不过没系统的学过,之前只写过一个求树的重心的,于
2017-06-27 17:10:47
432
原创 CodeForces734E - Anton and Tree(缩点+树的直径)
题目链接:http://codeforces.com/problemset/problem/734/E题目大意:给定一棵无根数,每个节点有黑白两种颜色,现在有一种涂色操作,一次可以将一块连通的同色区域涂为一个颜色,现在求最少操作几次可以将整棵树涂成黑色或白色。解题过程:因为之前做过一个涂板子的题,进行的操作和这个一样,也是先缩点。不过那个数据范围比较小,枚举所有点BFS一次,求最长路即可,但是做过数
2017-06-27 10:17:13
518
原创 HackerRank - pairs-again(暴力+预处理)
题目链接:https://www.hackerrank.com/contests/w26/challenges/pairs-again题目大意:给定一个数n,问有多少对a,ba,b满足xa+by=nxa+by=n至少有一个解,a<ba<b并且0<b,0<y0 < b, 0 < y,且x,yx,y是整数。解题过程:比赛时候的题,当初那场比赛运气还不错,这道题看到一堆人WA了60多发,于是没敢去做,后来
2017-06-26 11:13:17
443
原创 ZOJ3385 - Hanami Party (贪心)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3385题目大意:妖梦要准备一个party,所以需要许多食物,初始化妖梦的烹饪技能为LL,每天妖梦有两种选择,一是选择当天做LL个食物,二是提升自己的烹饪技能为L+1L+1。但是幽幽子非常能吃,每天幽幽子都要吃AiA_i的食物,当没食物吃后幽幽子会非常生气,甚至想把妖梦
2017-06-25 20:48:12
666
原创 HDU5527 - Too Rich(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5527题目大意:现在你有PP元钱,有1010种不同面值的硬币,每种硬币有一定的数量,求用尽量多的硬币凑出P元钱,有可能凑不出。解题过程:当初比赛没看这道题,最近才补,看起来挺简单的,实际知道思路上也不难……题目分析:要用尽量多的硬币凑PP元钱,假设我现在硬币总共的面值和为MM,那么换个思路,我现在要从总共
2017-06-25 18:56:01
569
原创 CodeChef MOU2H - Mountain Holidays 2 (DP)
题目链接:https://www.codechef.com/problems/MOU2H题目大意:理解题意后就是求一个序列中有多少个不同的子序列。解题过程:刚开始看错了题意,样例过不去,后来去翻了博客,才看懂题意,看懂题意后就好做了,就是一个简单的动态规划。题目分析:因为要求不同子序列的个数。定义状态dp[i]dp[i]为前[i]个数中,不同子序列的个数。那么对于dp[i]可以由已下方式转移而来,记
2017-06-25 11:09:44
355
原创 HDU4027 - Can you answer these queries? (线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027题目分析:区间开根号下取整,询问区间和。解题过程:注意,进行更新和询问的操作的时候要注意xx和yy的大小,这里被坑了,差点以为自己清奇的脑洞不对……发现好多人都是转化为单点更新,自己比较耿直,写了好长的区间更新代码,也算是一题多解吧。题目分析:单点更新解法:首先要注意到对于开根号操作,这里的输入数据
2017-06-21 15:57:13
302
原创 HDU1394 - Minimum Inversion Number(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394题目大意:给定一个由00到n−1n-1组成,长度为nn每个元素唯一的序列,可以进行一种操作,把第一个元素放到最后一个位置。求经过若干次操作后的,最小逆序对数。解题过程:这题之前写过一个暴力解法的题解,现在用线段树来解决一下。题目分析:这里用线段树主要是求解初始状态的逆序对数,对于每次的操作有一个结论
2017-06-21 14:49:19
308
原创 线段树小结
前言:实验室要开展每周的算法讲堂活动,大概是每周一个集训队员来给大家将一个知识点,于是我去讲线段树来开头了,但是自己好弱啊,自从寒假集训后就一直没敲过线段树代码了,于是这几天一直在照着金巨巨的博客刷线段树的题(也是抄的金巨巨的模板…)。这里总结一些做到的题,一些线段树的基本思路,也当做理一下总结的思路。用到的一些宏定义:#define lson root<<1#define rson root<<
2017-06-19 12:46:38
428
原创 匹配、覆盖、独立集、二分图与网络流
概念:设图 G={V,E}G = \{V, E\}匹配:在GG中两两没有公共端点的边集合M⊆EM\subseteq E边覆盖:GG中任意顶点都至少是FF中某条边的端点的边集合F⊆EF\subseteq E独立集:在GG中两两互不相连的顶点集合S⊆VS\subseteq V顶点覆盖:GG中的任意边都有至少一个端点属于SS的顶点集合S⊆VS\subseteq V定理:对于不存在独立点的图,|
2017-06-14 17:08:01
520
原创 ZOJ3781 - Paint the Grid Reloaded(缩点+最短路)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3781题目大意:给定一个N×MN\times M的矩阵,每个格子涂着黑色或白色。现在有一种涂色操作,每次涂色可以将一个格子与这个格子连通的格子涂成一个颜色。连通是指上下左右的边相接。求最少的操作次数,将这个矩阵涂成一种颜色。解题过程:很久以前比赛的题,当时看到这个题一
2017-06-13 11:36:07
344
原创 POJ3259 - Wormholes(连通图判断负环)
题目链接;http://poj.org/problem?id=3259题目大意:给出N个图,每个图有两种边,一个是无向的正权边,一种是有向的负权边,保证所给的图为连通图,求是否存在负环。解题过程:刚开始以为给出的图不连通,然后用Floyd超时,后来问了学长,翻了下POJ的讨论,发现大家都是默认为图连通做的……然后敲了下Bellman和SPFA判断负环就A了。题目分析:因为保证图联通,那么可以假设从任
2017-06-13 11:10:17
598
原创 UVA12511 - Virus(DP+最长公共上升子序列)
题目链接:https://vjudge.net/problem/UVA-12511题目大意:给定两个序列,求出两个序列的最长公共上升子序列(严格上升)。解题过程:比赛的时候没有做出来,非常咸鱼的一场比赛,当时是想错了状态。当时想的状态是定义dp[i][j]dp[i][j],意味以第一个串第前i个元素,第二个串前j个元素的最长公共上升子序列长度。但是这样定义状态有后效性,比如当前我知道dp[i][j]
2017-06-11 21:22:09
361
原创 使用OpenMP实现并行归并排序(Report)
归并排序算法:归并排序算法是一种经典的分治算法。分治分治算法分为由三部分组成: 分解:将原问题分解为一系列子问题; 解决:递归的解决各个子问题。若子问题足够小,那么直接求解。 合并:将子问题的结果合并成原问题。归并排序步骤归并排序完全依照了上述模式,直观的操作如下: 分解:将n个元素分成各含n/2个元素的子序列; 解决:用合并排序法对两个子序列递归地排序; 合并:合并两个已经排序的子序列
2017-06-05 16:41:19
5603
原创 HDU3085 - Nightmare Ⅱ(双向BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3085题目大意:在一个N*M的网格里,有两个人 G 和 M,并且有两只鬼。 G每秒可以走一步,G每秒可以走三步,每只鬼可以分裂,分裂到周围的的两格。假设#为鬼分裂后为1,如下图所示。每只分裂后的新鬼可以继续分裂。
2017-05-31 20:50:11
362
原创 常见错误清单(长期更新)
数据太大爆int计算过程中爆int取模姿势不对爆intvis,book等标记数组没初始化bfs队列没有pop类似走迷宫那样的题,下一步要走的地方计算错误(比如ty 本应该是y+dirc[i][0],结果写成x+dirc[i][0])浮点数精度误差,要加eps数组过大每次都要memset初始化,导致超时Case: 和数组之间有个空格,导致pe直接拿输入的数据当下标,因为有负数reD
2017-05-22 17:22:59
810
原创 POJ2135 - Farm Tour(最小费用流 + 模板 + SPFA + Dijstra)
题目链接:http://poj.org/problem?id=2135题目大意:现在有 N 个节点,有M条边,要从 1 走到 N 然后再回到 1 。要求走的边不能重复,求最短路径。解题过程:之前看了最小费用最大流然后一直没有做题,于是找了一个模板题来刷,对着板子敲上去居然一次AC,然后又改了下最短路的算法,AC。题目分析:算是一个隐含的最小费用最大流,设每条边的容量为1,花费为路径长度。那么所求的就
2017-05-22 14:58:32
1229
原创 HDU4725 - The Shortest Path in Nya Graph (Dijstra + 建图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725题目大意:现在有N个节点,编号从1到N。有M条权值为Ci无向边,链接着两个节点。 新加入了一个条件,每个节点在一个层内,假设在 x 层,那么在 x 层内的节点可以直接到达 x + 1 层或 x -1 层的任意节点,花费为 C 。现在求从 1 到 N 的最短路。解题过程:比赛的时候没做出来,现在才
2017-05-22 11:01:32
669
原创 HDU5550 - Game room (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5550题目大意:有一栋楼,有N层,每一层都有ai个想要玩A游戏的,bi个想要玩B游戏的,但是每层只能修建一种游戏厅。每个人移动上下一层楼需要消耗一点体力。使得所有人玩的上游戏并且消耗的体力尽量的少,最少消耗的体力。解题过程:比赛的时候好不容易读懂了题意,发现并不会做,第一个想法是贪心的,从0层向下扫,累加
2017-05-21 14:42:35
351
原创 HDUOJ3549 - Flow Problem(网络流+最大流最小割+模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549题目大意:有向图求最大流解题过程:关于为什么增加流量时要增加一个反向负流量的边纠结了很久,最后还是想通了,其他就没难点了。题目分析:增广路算法,每一次尽可能的添加一条增广路,直到不能添加增广路为止,不过有个特殊的地方,按照挑战书上的说法是,可以把之前的流推回去。按照我的理解大概是现在的这个新加的增广
2017-05-19 09:43:51
321
原创 POJ2411 - Mondriaan's Dream (状压DP+轮廓线DP)
题目链接:http://poj.org/problem?id=2411题目大意:这题题意非常明确,现在有一个 M × N 的矩形,你现在有很多个 2 × 1 大小的方块,现在要用这些方块铺满这个矩形,请问有多少种铺法。解题过程:这题不是遇到卡住的,是学新知识的模板题,然后顺着书的思路做的,理解还是花了一番功夫。先看的挑战那本书,后来又翻了下大白书,还是 LRJ 的书写的详细易读,最后终于看懂了。刚开
2017-05-18 19:31:11
467
原创 POJ3169 - Layout (差分约束)
题目链接:https://cn.vjudge.net/problem/POJ-3169题目大意:解题过程:刚开始是一脸懵逼的,怎么还有这种题,完全没想法。 然后看书上说是差分约束,然后和最短路类比了下,还是没看懂,最后是去网上搜了下博客,然后又自己画了画才弄懂。http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html题目分
2017-05-15 11:12:33
396
原创 POJ1182 - 食物链(带权并查集)
题目链接:http://poj.org/problem?id=1182题目大意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第二种说法是
2017-05-13 10:25:23
2917
原创 ZOJ3777 - Problem Arrangement(状压DP)
题目链接:https://cn.vjudge.net/problem/ZOJ-3777题目大意:现在有一个N×N的矩阵,现在要求在这个矩阵里面取N个来自不同行不同列的数,使这个数大于给定的M。求总共有多少种取法。 (N < 12, M < 500)解题过程:组队赛时候的题,当初是暴力DFS的,当作简化的八皇后问题,结果当然是超时。最近开始补题,正好在刷DP的题,于是顺手切了,算是一个状压DP的模板
2017-05-12 21:53:25
409
原创 第八届acm山东省赛总结
比赛过程:首先看到的是F题,我一开始从后面往前看的,然后队友告诉我F比较简单,然后就去让队友去敲了,我去继续看了其他的题,首先过一遍题是为了找到水题。不幸的是F题WA了好多次,这时候另一个队友说G是一个水题,好像要算多少次幂的样子,这时就把F打印出来,然后就让队友去敲G了。据说这个题有坑,题目错了,本来是1e9+7的,题面是1e8+7,不过队友好像跳过了这个坑,一次AC。这时候F题还是一直卡,然后我
2017-05-09 21:02:05
629
原创 FZU - 2112 Tickets (欧拉回路+联通块判断)
题目链接:https://cn.vjudge.net/problem/FZU-2112题目大意:给定一个图的N个边,求添加最少的边使这个图形成欧拉路。不必所有的点都联通,只需要把已给出的边形成欧拉路。解题过程:之前好像做过一次做过题,然后又看到了,当时也忘记在哪看到了,不知道A了没有,反正记得看题解没理解……这道题刚开始理解错了,还以为是求哈密顿图,这个是真的不会。回来又看了一遍题意才发现是之前做过
2017-05-04 17:38:07
505
原创 DAG上的动态规划
不定终点的最长路:矩阵嵌套问题:题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16题目大意:如果一个矩形的长和宽都大于另一个矩形,那么说这个矩形可以嵌套另一个矩形,现在有很多个矩形,输入矩形的长宽,求出他们的最大嵌套数。注意矩形的长宽是可以互换的。题目分析:这是一道经典的DAG上的动态规划问题,需要把问题转化成DAG上的最长路问题,把每个
2017-04-26 10:49:25
504
原创 数位DP(模板)
推荐博客:http://zyk1997.github.io/2015/03/20/ShuWeiDP/模板题:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1009http://acm.hdu.edu.cn/showproblem.php?pid=3555http://acm.hdu.edu.cn/showproblem.p
2017-04-24 16:53:45
530
原创 SDUTOJ - 2781 二分练习(二分)
题目链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2781.html题目大意:给你一个序列,然后给你m个元素,让你从序列中找出与每个元素最接近的数字输出来,如果有两个就输出两个。解题过程:刚开始是 WA 了好久,看了博客,听学长讲完才知道做法,这里当作一个二分的模板。题目分析:本题主要是找
2017-04-17 16:21:57
730
原创 POJ3494 - Largest Submatrix of All 1’s (单调栈)
题目链接:http://poj.org/problem?id=3494题目大意:给定一个矩阵,里面只包含 0 和 1,求这个矩阵里所有子矩阵中值最大是多少(即矩阵内部所有的 0,1 的和)。解题过程:由于前几天刚做完一个单调栈的题,然后看到这个题就马上往那方面想了,但是还是不太熟练,对着模板才敲出来。题目分析:首先处理一下数据,开一个数组,数组 data[i][j] 代表着以第 i 行,第 j 列
2017-04-09 17:45:35
414
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人