自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Y390d的博客

ACM复习笔记

  • 博客(166)
  • 收藏
  • 关注

原创 HDU - 4578 Transformation 【线段树】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578题目比较麻烦,取模要细心一点。区间加,乘,覆盖问题不是很大,比较麻烦的就是求的和的部分,因为p只取1,2,3,所以还是有可操作性的。假设只有3个数a, b ,c。如果对这三个数做加的操作,那么 p = 2,有 (a+1)^2 + (b+1)^2 + (c+1)^2 。把这个式子的平...

2019-01-15 19:21:57 99

原创 HDU 3974 【线段树?】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974虽然是抱着线段树的思想去写的代码,但是代码整体看起来并不像线段树。题目很明确的告诉你,整体的结构是一个树,但是如果不自己多加点条件,很难能在这个树上以O(log)的时间去查找你想要找的数据。这里有一个存储树的方法,一个数组记录节点的父节点,一个数组记录节点的子节点中最左边的节点(长子)...

2019-01-13 23:54:43 209

原创 HDU - 1540 【线段树左右区间合并】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540题目大概的意思就是求当前这个村庄,左右连续的村庄共有几个,包括自己。思路:比较容易想到的就是把用线段树划分的每一个区间的左右连续区间长度记录下来,然后尝试着吧X这个村庄的左右连续并且没被摧毁的村庄个数连起来,就能得出答案了。具体看代码的注释#include <iostr...

2019-01-13 16:19:41 133

原创 HDU 4027 【线段树区间开根号】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027这道线段树的题目我并没有按照线段树的模板写,这里把要点讲出来就行了。第一:区间开根号不像区间乘或者除,能通过区间和然后一次性乘除求出一个区间的乘除,所以区间开根号只能一个一个的开,但是如果一个一个的开不会超时吗? 假设一个数在long long的范围里面,也就是2^63这个范围内,那么对这...

2019-01-12 20:38:34 1422

原创 Codeforces Round #523 (Div. 2) C. Multiplicity 【dp】

题目链接:http://codeforces.com/contest/1061/problem/C思路:像类似这种求有衔接关系的数列要第一时间想到  dp[ i ] = dp[ i ] + dp[ i - 1 ] 这种状态的dp,为什么?假设我要让一个原数组下标为 4的数变成下标为 3 的数,那么要想数列存在,那么 必须存在 至少一个 长度为2的数列,在这些数列的尾部加上这个原数组下标...

2018-11-23 19:11:12 523 2

原创 POJ 2528 Mayor's posters 【离散化+线段树区间覆盖】

题目链接:http://poj.org/problem?id=2528思路:这里着重讲讲离散化的方式。离散化的方式是根据题目意思来选择的,不同的题目会有不同的离散化方式。这里题目要求的是在n次区间覆盖过后,求没被覆盖的海报有多少个; 题目给出可能的区间多达 1e7 ,如果用线段树的区间覆盖就需要开 4倍的空间,因为题目给出的空间有限,直接就用线段树显然是不行的。我们先从结果开始考虑...

2018-11-23 13:53:26 299

原创 poj 3468 A Simple Problem with Integers 【区间修改+区间查询(树状数组)】

题目连接:http://poj.org/problem?id=3468参考下面博客的公式:(公式关键是 a[i] =    d[j] 是差分数组,只要修改d[L] 和 d[R+1] 的值就能通过求d数组的前缀和得到单个a[] 的值,只要把 a数组的前缀和通过包含 d数组的表达式表达出来,就能只修改d数组的两个值得到a的前缀和)https://www.cnblogs.com/lcf-2000...

2018-11-17 15:32:57 171

原创 树状数组求区间最大值 (单点修改)

以前一直把树状数组当作求前缀的工具,但事实上,树状数组是一种分块的方式,因为分块的方式比较独特,所以在求前缀的过程中非常方便;树状数组的实现原理就不讲了,这里要特别说明的是,lowbit(x) 不仅可以表示区间分块对应存储前缀的位置,同时还能够表示一个区间的长度,这个长度在求区间最大值的时候起到比较重要的左右,也是我之前没想到的部分;文字说明:求区间最大值 和 求区间和有很大的不同,因...

2018-11-16 15:43:49 4829 5

原创 树状数组区间修改+单点查询 (只能单点查询)

差分思想:假设有一个数列  a = { 2, 6, 9, 3, 7 }, 那么对应的差分数组b 有   , b = {2, 4, 3, -6, 4 }因为  b1 + b2 + b3 + ... +  = a1 + (a2 - a1) + (a3 - a2) + ... + () =  由此通过求差分数组的前i和就能得到  的值;为什么要用差分数组来求  的值? 如果要修改的区间非...

2018-11-14 09:12:58 175

原创 LightOJ - 1248 Dice (III) 【概率】

题目链接:https://vjudge.net/problem/LightOJ-1248思路:期望等于 概率*结果,像类似这种结果为1的期望题,要灵活运用  E = 1/p 这个公式;(问的是抛色子的次数期望,你每次只抛一次,对应得结果肯定就是1)E = 1/p 是几何分布的一个公式,代表的意义就是当一个事件的概率是 p时,进行k次试验,前k-1次出现的都是(1-p)的情况,在第k次才...

2018-11-12 19:58:20 203

原创 LightOJ - 1079 Just another Robbery 【概率背包】

题目链接:https://vjudge.net/problem/LightOJ-1079需要注意的是,要想连续抢多家银行就得保证抢前面的银行没有被抓,所以样例1中抢1和2两家银行的概率是 0.02 + (1-0.02)*0.03;这里的背包dp[i] 中的i是val,价值;#include <iostream>#include <cmath>#includ...

2018-10-29 21:36:07 154

原创 HDU 6265 Master of Phi 【公式题(欧拉函数)】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265思路:首先要确定欧拉函数的一个特例 phi(1) = 1; 在欧拉函数的公式中 phi (n) = n*(1-q1)*(1-q2)*(1-q3)..... 只有n == 1的时候是不适用这个公式的;其次,题目中要求的公式虽然感觉很复杂,但事实上,只要对公式整理一下,就能发现题目有很多地...

2018-10-23 22:16:55 370

原创 HDU 6273 Master of GCD 【差分思想+快速幂】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6273思路:记录乘2次数最小的值和乘3次数最小的值再用快速幂求解这个大多数人都能想到,比较棘手的就是n和m都是10^5,如果某个区间一个个的遍历去加1的话,会超时;这里用到了差分思想;比较好的博客:https://www.cnblogs.com/COLIN-LIGHTNING/p/84366...

2018-10-23 13:00:24 382

原创 LightOJ 1038 Race to 1 Again 【期望dp】

题目链接:https://vjudge.net/problem/LightOJ-1038思路:首先要知道一个期望公式:E3 = (E1+1)/3 + (E2 + 1)/3 + (E3 +1)/3 ; 这个公式中的E3要根据题意来判断是否加入;比如这题求的是一个数被除的情况是有自己除自己的,所以总的期望还要包含自己本身的期望;又如求一个人的移动期望,如果存在不移动的可能,也就意味着有一定概率...

2018-10-22 19:51:57 104

原创 ZOJ 4005 Lucky Man 【java大数开方(牛顿迭代法)】

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4005import java.util.*;import java.math.*;import java.io.*;public class Main { public static void main(String[] args) { Scan...

2018-10-19 18:28:54 332

原创 ZOJ 4011 Happy Sequence 【dp】

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4011思路:dp状态:dp 【数列长度】【数列最尾的那个数】那么可以得出这个递推公式 : dp【当前数列长度】【数列最尾的数】 =   (dp【当前数列长度-1】【比当前数列尾数小或者等于,而且是当前尾数的倍数】的总和),从逻辑分析来看是合理的;因为数字...

2018-10-19 13:38:47 123

原创 Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) D Labyrinth 【双端队列deque+BFS】

题目链接:http://codeforces.com/contest/1064/problem/D用bfs扩展的时候有一点需要注意:如果左右两边的扩展范围受限,那么扩展的时候如果不优先处理不受限的扩展,会出现受限的优先扩展后,不但无法继续扩展,还会标记途中的点,导致不受限的扩展无法向前扩展;所以可以用deque,把最优先的放在前面,其次放在后面;//#include <ext/...

2018-10-17 23:48:52 124

原创 POJ 2686 Traveling by Stagecoach 【状压dp】

题目链接:http://poj.org/problem?id=2686思路:dp【二进制表示剩下的票】【v】; 假设票有3张,那么最初始的状态是 dp[ 111 ] [ a ] = 0;尝试在三张中拿一张,然后从a点出发到所有能到的点,由此更新状态;拿票的二进制操作时  S & ~(1 << i) , 把二进制数S中 第j个数变为0; 查看二进制数S第j个数是否...

2018-10-16 21:01:07 106

原创 POJ 2115 C Looooops 【扩展欧几里得】

题目链接:http://poj.org/problem?id=2115需要注意的有几点:第一: exgcd (a, b, x, y) ; 起初以为 y 的最小正整数解是  y = (y % a + a) % a;但事实上最小正整数解是  int tmp = a / gcd (a, b);y = (y % tmp + tmp) % tmp;第二: 如果题目要求的是x,表达式最好这样设...

2018-10-15 21:47:33 109

原创 数位dp模板

// cur : 当前位数// last: 上一位数对应的数字// status: 可以当作一个bool值// 比如题目是不要 4和7,那么只要之前的status = false,那么后面不管如何取值都是 false// limit : 如果能取0~9就为 false, 否则为 true// 巧妙的地方有两点// 1.dfs中的dp记忆条件是当前位数的取值是否受限...

2018-10-13 11:04:32 81

原创 HRBUST - 2382 极难的问题 【数位dp + 二分】

题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2382思路:数位dp能够求出0到m区间内的符合某个条件的数字个数,在数位dp的条件下通过二分找出符合题意的那个数字需要注意的是,题目的n虽然是int范围内的,但是n代表的是符合题意数字的个数,所有实际需要找的范围应...

2018-10-13 10:45:30 197

原创 POJ 1006 Biorhythms 【中国剩余定理】

题目链接:http://poj.org/problem?id=1006思路:中国剩余定理总结:n1, n2, n3; n % n1 = p; n % n2 = e; n % n3 = i;求最小正整数 n;a * n2*n3 % n1 = 1; 等价于 a * n2*n3 - 1 = k * n1 ---> a * n2*n3 - k*n1 = 1; 通过扩展欧几里得求出 a...

2018-10-10 23:05:33 97

原创 POJ 3101 Astronomy 【分数的最小公倍数+物理公式+java大数】

题目链接:http://poj.org/problem?id=3101思路:物理公式就不解释了 :  ;求 的最小公倍数,因为 可能为分数,所以需要求分数的最小公倍数;分数的最小公倍数 : 分子的最小公倍数 / 分母的最大公约数分数的最大公约数 : 分子的最大公约数 / 分母的最小公倍数因为题目的数据范围很大,所以用java处理会方便点;需要注意的是去重,因为速度相同的情况...

2018-10-10 18:51:51 204

原创 HDU 5128 The E-pang Palace 【暴力】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5128题意:给出N个点,由这些点构成两个矩形,矩形是平行于x轴的,而且不能相交不能相邻(共用同一边),如果存在就输出面积和否则输出imp思路:这里要注意的是,如果长宽知道的情况下可以通过一个角落的点确定一个矩形,如果不知道长宽,一个对角线确定一个矩形;这题有个比较坑的地方就是包含的情况,...

2018-10-08 21:07:59 148

原创 POJ 1845 Sumdiv 【整数的素数分解+逆元+快速幂+约数和公式】

题目链接:http://poj.org/problem?id=1845题意:求A^B的约数和,结果取余思路:整数的素数分解:任意一个整数都能通过若干个素数相乘得到,n = p1^a1 * p2 ^a2 * p3^a3 *..... pk^ak;相应的代码模板可以自己网上找找,也可以参考下面的代码 (能将一个整数的所有pi 和 ai 求出并存入数组中)逆元:平常做的取模运算条件是 a...

2018-10-07 23:02:27 214

原创 POJ 3292 Semi-prime H-numbers 【数学素数筛法】

题目链接:http://poj.org/problem?id=3292题目:H_number 是 4n+1的数,H_prime 是以H_number为准的素数 (就是在H_number中除1和本身没有可以整除H_prime的数),问在N范围内,一共有几个H_prime数;思路:用数组A来存储H_primer数,用1来标记是,不是则用0;因为题目中的H_prime是切确的仅由两个H_...

2018-10-06 14:42:51 147

原创 UVALive 7045 - Last Defence 【辗转相除】

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5057思路:假设 A = 7, B = 3 ;第一行的蓝色矩形是 7 ,第二行以及后面的蓝色矩形都是 3,黄色部分是减去得到的值;可以发现的规律是...

2018-10-06 09:57:37 242

原创 POJ 2635 The Embarrassed Cryptographer 【千进制高精度取模 / JAVA】

题目链接:http://poj.org/problem?id=2635题目:如果数K能被L以内的素数不包括L整除,输出 BAD 和这个素数,否则 GOOD;思路:高精度取模能够处理大数的取模,最基本的是十进制的取模,要想不超时,可以3位为一个单位取模;如果这个大数有100位,那么3位为一个单位取模只需要 100/3次,时间上有很大优化;这里素数要用素数筛法预先打表#inclu...

2018-10-05 20:19:13 174

原创 Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C 【暴力枚举+dp】

题目链接:http://codeforces.com/contest/1060/problem/C思路:一些暴力看起来会超时的题目还是有必要尝试一下的 ;题目的意思可以转换成:求两个数组的区间和的最大长度和,并且两个区间和的乘积小于等于x给出的数组只有2000个,求出所有区间和的时间复杂度大概是4*10^6,求两个数组的区间和就只是多一个常数; 假设一个数组的某个区间和是 n,只需...

2018-10-04 20:56:25 207

原创 HDU 5983 Pocket Cube 【模拟】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5983题意:2*2*2的魔方只转一次,问是否能让魔方六面都相等思路:用数组记录每个面的数字,并且从1到24编号,注意这里要根据题目要求的输入顺序编号,能一次就完成任务的情况只有两种,一种是六面都已经满足条件了,第二种是存在两个对立面相等的情况,只限两个,多一个都不行;对立面相等的不用管,只需...

2018-10-03 20:48:04 119

原创 Codeforces Round #511 (Div. 2) C. Enlarge GCD 【暴力枚举+素数晒法】

题目链接:http://codeforces.com/contest/1047/problem/C题意:删去尽可能少的数,得到一个比原先的gcd大的gcd,如果没有就输出-1,有就输出删除的个数;思路:用素数晒法,去枚举大于g(最初的gcd)的数,计数数组中有几个数能被g整除,取个数的最大值;要注意的是,如果只有两个数 1 2,那么可以删除1这个数得到更大的gcd;#includ...

2018-10-03 19:53:53 155

原创 Aizu - ALDS1_5_D The Number of Inversions 【归并思路求逆序数】

题目链接:https://vjudge.net/problem/Aizu-ALDS1_5_D思路:(挑战程序设计(算法与数据结构))需要特别注意的有两点:1 在Left和Right数组中的末尾要加一个INF,保证其中一个数组为空时,另一个数组能继续把数填进A数组中;2 二分中 L和R的取值;#include <iostream>#include <cstdio&g...

2018-10-03 10:16:29 148

原创 HDU 4452 Running Rabbits 【模拟】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4452有几个需要注意的地方:1,不用考虑在一秒内,两个兔子移动会不会相遇,如果考虑就真的难了; 2,相遇的时候,如果到了左转的时间,会优先处理相遇的情况;3,碰到墙反转方向的时候,不计时;小技巧:用编号表示方向,编号+2取余就是反转的方向编号,+3取余就是左转的方向编号,+1取余是右转的;一...

2018-10-02 10:29:43 170

原创 EOJ Monthly 2018.9 (based on Trial Round #3) D. 素数子序列 【数学:三胞胎素数】

题目链接:https://acm.ecnu.edu.cn/contest/106/problem/D/思路:(摘录)n=1: 给一个质数可以。如果要填的话,就填一个质数。 n=2: 如果 p1>2 且 p2>2,显然不行。所以肯定有一个等于 2,不妨令 p1=2(等会别忘了讨论 p2=2 的,或者 reverse 一下),只要检查 p2 和 p2+2是不是都是素数即可(孪...

2018-10-01 10:08:39 879

原创 EOJ Monthly 2018.9 解密信件 【递归】

题目链接:https://acm.ecnu.edu.cn/contest/106/problem/B/思路:不断递归到底部然后再反转,反转表达式是根据互补的关系得出来的//#include <ext/pb_ds/assoc_container.hpp>//#include <ext/pb_ds/tree_policy.hpp>#include<cst...

2018-09-29 23:56:52 280

原创 HDU 5976 Detachment 【逆元+打表】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5976题意:一维的大小可以想象成一条线的长度,二维的大小可以当成矩形的面积,三维的大小可以当成长方体的体积,以此类推,四维就是4个长度相乘,五维就是五个长度相乘,问最大大小是多少;思路:比较容易猜测的情况就是,一个线段尽可能的分成多个,分成的小线段两两之间差值尽可能小,而且最短的长度尽可能长...

2018-09-26 21:34:22 143

原创 HDU 5971 Wrestling Match 【带权并查集】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5971题意:给出M个a和b的关系,两者关系是对立的,一个是好人一个是坏人,然后给出X个确定是好人的编号和Y个确定是坏人的编号,问是否能确定每一个编号是好人还是坏人,要注意的是,如果一个编号既可以是好人也可以是坏人,应该输出NO;思路:网上看到好像有更短的代码,是用二部图的内容写的,这里用...

2018-09-25 20:35:05 335 2

原创 HDU 5980 Find Small A 【二进制数】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5980题意:一个字符8位二进制数,问一组数有几个 二进制的 97;思路: a%256(二进制 1 << 8)能够取a的二进制的后8位的数字,a/= 256 是去掉后8位的二进制;#include <ext/pb_ds/assoc_container.hpp>#in...

2018-09-24 18:18:14 228

原创 HDU 6228 Tree 【dfs】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6228题意:给n个节点染k种颜色,每一种颜色以最少的边连在一起,求这些颜色共同经过的边最多有几条;思路:一个边要想满足同时被k种颜色经过,那么,这个边左边的点和右边的点一定大于或者等于k,否则不会满足条件,所以只要找出有几条这种边,就是答案,用dfs去遍历点; #include&l...

2018-09-23 23:38:24 125

原创 Educational Codeforces Round 50 (Rated for Div. 2) C 【数位dfs打表 / 数位dp】

题目链接:http://codeforces.com/contest/1036/problem/C题意:求某区间,位数的数字非零并且不超过3个的个数;思路:除了数位dp外,可以通过dfs把所有满足条件的数字求出来,然后二分求出个数;#include<cstdio>#include<cstring>#include<algorithm>#i...

2018-09-21 18:26:45 109

空空如也

空空如也

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

TA关注的人

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