自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sluqy671的专栏

在一条道路上愈行愈远, 我却不在乎路多漫长, 只驻足欣赏路边的风景, 再缓缓向前走去

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

原创 LeetCode1696 Jump Game VI

题意:给出一个大小为n的序列,以标号0作为起点开始跳,每次最多向右移动k个位置,求到达序列最右端时所经过所有点的权值之和最大为多少。首先上经典dp,O(n*k)fu'z

2021-06-10 11:48:19 156

原创 LeetCode 25 Reverse Nodes in k-Group

心血来潮参加了一次比赛结果签到之后人没了,继续康复训练吧= =做了一段时间的题,也看了一段时间别人更优的解法,思路很自然的变清晰了。题意:给出一个链表的head和一个数值k,要求将链表里面每k个连续的node进行翻转,函数返回值为新的head。思路:大体框架突出一个递归调用思想,既然每次返回新的head,就没有必要用循环结构来让指针指指指最后还指飞了,特判条件也很多。于是考虑每k个点处理一次,先求next_head = reverseKGroup(now->next, k),再处理好当

2021-01-25 10:20:59 146

原创 LeetCode 20 Valid Parentheses 括号匹配

经典的括号匹配判断问题,由于是比较久远的记忆不太记得怎么做了,稍微想了一下然后搓出来的。仅有一种括号的情形比较简单,只要记录一下正反括号的数目从左往右扫一遍,保证中间不出现未匹配的右括号即可。但这种方法对于本题的解法在思路上没有贡献,因为如果使用同样的方法,我们会发现两个子串"(({(()"与"(((({)"在匹配到最末位的时候所记录的状态是相同的,而后者很明显是不满足要求的串。回归本题,一个简单的思路是确认每个括号是否匹配,即对于每个括号求与其相匹配的另一个反括号。根据满足括号匹配的串而言,有着若

2021-01-13 15:01:40 132

原创 LeetCode 21 Merge Two Sorted Lists

基本的指针操作实现基本的merge。基础中的基础,但是在代码结构上来说,我们仍应当追求更加优美且有效的写法。以下是按照本人第一时间的正常思路进行编写的代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) :

2021-01-05 15:53:04 99

原创 LeetCode 16 3Sum Closest 可用三分法

题意:3Sum题变种,给出n个数nums[]和一个target,求n中的3个数的组合使得其和与target相差值最小。思路:传统的3Sum做法(LeetCode15),枚举三个数中的两个,然后求证剩余的数字是否在给出的集合中。后面一步可以时间换空间,用二分来做,这样复杂度乘上一个logn;也可以空间换时间,用数组直接存储或者hash挂链。对于这一题,可以继续用传统的解法,先枚举三个数中的两个,但注意到目标答案的变化并不是单调的,即取出两个数nums[i]和nums[j]后,最优解的计算过程为ans=

2020-12-31 13:22:18 130

原创 LeetCode 1457 Pseudo-Palindromic Paths in a Binary Tree

简单题,可以训练一下优化思想。题意:给出一个二叉树,每个节点的值在1-9之间,若一条从根节点到叶节点的路径(path)包含的值可以在排列变换后形成回文串,则我们称这条路径是Pseudo-Palindromic Path。求PPP的数量。数据范围:1≤n≤1e5很自然的想到自根向下的dfs维护每种数值的数量,只要做到这点已经能ac了。最裸的dfs的话,时空复杂度均为O(n),因为dfs过程中保存了9种value的状态。可以使用01进行优化,即使用数组来记录每个value的状态stat,每次

2020-12-30 11:15:25 98

原创 LeetCode 754 Reach a Number

题意:出发点位于数轴上的原点,对于第n步,可选择向左或是向右移动n个单位,求到达target的最小步数。思考:最开始没有什么想法,由于数据区间直接覆盖整个int类型,bfs什么的肯定不可能;尝试贪心,但是没有任何数学依据。易证target具有对称性,因此不考虑起手往反方向跳的情况(贪心的想法),一直向右直到接近target;因为第k步与第k+1步相差1,可以认为对于一段长度为1的路径,有cost(1)=2;那么如果现在距离target为d,答案是否就是2*d呢?很容易想到反例,不

2020-12-29 15:57:06 81

原创 LeetCode 12 新的开始

OI生涯早就结束了,ACM也是个虎头蛇尾,现如今还在读研,学习生活没什么问题,眼下就是找工作这一点了。再次开始写博客的契机是csdn给我发的邮件,让我惊讶的是居然还有人在看自己年轻时写过的东西,甚至还有提问。这里不得不对各位可能是初学者或是OI大神或是事业有成的工作者等等,说一声抱歉,因为我自己也看不懂而且不记得了= =。对于找工作,还是决定早做准备,抽空慢慢做题。CF是打不动了,但LeetCode的水平还是蛮低的,可以放心食用,这里就一步一步慢慢刷吧。写点东西,也是学习的一个过程。我也知道网上

2020-12-29 14:07:39 104 1

原创 poj2449_k短路

WC冬眠完了, 寒假过完了(纳尼?居然过完了?!), 又回来继续学hun习dian;k短路裸题嘛, 具体就是用一个优先队列来不停的更新到每个点的距离, 这样第k次出堆时得到的解就是到该点的k短路。实际上我们用到中间变量来更新答案。 首先求出所有点到终点t的距离, 可以通过建立反边后跑最短路来求。 然后对于每个点x, 有一个变量w代表从s到x点的当前距离, 也就是说x每次出堆后再进来时w值都会最小

2015-02-24 10:53:27 517

原创 bzoj3572_虚树的构建+lca

世界树......冰封王座肯定不是临时议事处。网上神犇的题解都说要用虚树, 我试了各种办法都没搜到跟虚树有关系的东西QAQ。 终于, 在贴吧大神和DG的帮助下搞懂了这道题。 虽然神犇们不说什么是虚树, 我在这里介绍这一题中的应用。(当然, 有些大神其实根本不知道什么是虚树也乱发题解了)对于每次询问的m个点, 在原树上将它们连接起来形成一个子图, 同时把这m个点的lca加入子图, 对非询问点

2015-02-04 14:55:26 2182

原创 bzoj2115_集合+贪心

xor运算的性质: a xor b xor b = a。 同一个数被xor偶数次后的结果为0.题目要求的是一条从1到n的路径, 于是我们可以将该条路径分解为一条无环的直接路径和这条路径上连接的一部分环的结合, 这样只要求出需要的环就行了。难道我要把所有环都求出来? (假设给出一个完全图, 想想也觉得是2^n级别的了)机智为上策, 我们只要求出一部分环, 将这些环的权值算出来, 再利用x

2015-02-03 10:50:49 575

原创 bzoj3504_危桥

一眼看出网络流, 可惜不会写...建模方法当时实在想不出来。可以考虑设置一个源点流向a1和b1, 再将a2和b2流向设置的另一个汇点, 这样只要确定最大流等于最开始流入的流量就够了。然后呵呵。 要是从a1出发跑到了b2, Bob只能看着Alice的背影渐行渐远, 消失在桥的那一头, 正要踏步去追寻, 却发现脚下一空, 原来危桥早已塌陷, 而Alice回头时, 才发现那人已经坠下深渊。于是A

2015-01-31 15:53:27 662

原创 bzoj3172_AC自动机

AC自动机裸题, 不过我也只是试手, 毕竟才接触这个数据结构。话说AC自动机是Trie树和KMP算法的结合, 作为一只现在还看不清楚KMP代码的蒟蒻我居然把这个看懂了, 真是机智如我。 以后再也不用担心不会写KMP了, 反正会写AC自动机, 有数据结构就是这么任性!^ω^题目要求每个字符串出现的次数, 那么我们只要从Trie树的底部向fail指针传递当前字符串的个数进行统计就行了。 考虑到

2015-01-14 15:44:40 565

原创 DLX_精确覆盖问题

精确覆盖问题: 给定一个由0-1组成的矩阵, 问是否能找到一个行的集合, 使得集合中每一列都恰好包含一个1

2015-01-05 16:34:30 1259 1

原创 bzoj1433_最大流|二分图最大匹配

调了一下午的网络流, 最后发现是因为想要用0作为下标而遍历的时候还是用习惯性的写法, 简直不开心。网络流的题目基本都是重点在建模上, 我们来看看这一题怎么建模: 首先, 学生人数和可用床数是确定的, 我们就自己创造一个源点和一个汇点。 考虑到学生必须全部有床睡, 那么从原点出发流到床再流到学生即可。 这时我们能够机智的发现一件事, 其实就是求一个二分图的最大匹配, 愤愤然地感觉自己被坑了。 最

2015-01-02 16:54:29 483

原创 bzoj1977_次小生成树(加强版)

(又是某日, xxz出现了吊打的一幕)DG: DL, 你完全不行, 上次讲的那个次小生成树的求法太水了。DL: ...莫非还有O(n²+mlogm)不能做的次小生成树?DG: 自己过来看^_^DL: (凝视屏幕许久)!!!n、m居然有十万, 这能做?!!DG: 所以说你太水了。jjz: 你们在做什么题啊。(瞟)哦, 这一题有机智的做法, 是O(nlogn+mlogm)的哟。

2014-12-25 15:35:06 2189

原创 bzoj1823_2-SAT

练手用裸题, 用最基本的2-SAT算法即可。 题目要求的是对于任意一组要求至少满足其一, 则不妨设要求的事件分别为xi、xj, 则连一条有向边2i+1->2j, 这里2i+1表示xi为假, 那么如果要满足要求则xj必为真, 同理, 再连一条2j+1->2i, 图的构造完成。基本思路只要考虑每个没有被赋值的变量就行了, 比如, 点xi未赋值时, 将其赋为真, 并沿从这里发出的边向下搜索同时赋为真

2014-12-23 16:52:44 775

原创 poj1737_带标号连通图计数

看到这题总有一种不好的联想, 感觉数学考试出这个题绝对不会做......(有厉害的同桌也木有用,因为这个题目是他当数学题问我的)如果f(n)就是答案的话, 那么考虑另一个g(n), 表示n个点的非连通图, 那么显然由完全图的基本性质可得f(n) + g(n) = 2 ^ (n*(n-1)/2) = h(n); 故f(n)有了新的表现形式;对于g(n)的计算, 考虑用组合数学方法: 在n个点

2014-12-17 19:29:36 569

原创 bzoj1006_弦图最小点染色

DescriptionK国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系,是指N个人 A1A2...An之间仅存在N对认识关系:(A1A2)(A2A3)...(AnA1),而没有其它认识关系.比如四边关系指ABCD四个人 AB,BC,CD

2014-12-17 18:18:53 1854 1

原创 codevs3150_组合数学

最近在学习Rujia Liu的课件, 组合数学这一章里面有这道题, 但看不懂他的题解, 只好自己用组合数学来做。给出一个数n, 求有多少种排列使n与各项之和的差大于0小于4, 排列中的项只能为π或1。 这个时候自然想到要枚举较大的π的个数, 同时用组合数计算和, 再加上高精度, 这道题就可以AC了, 不过介于数据较大, 还要考虑各种优化。小优化1: 高精度压位。 我是用long long压

2014-12-12 19:01:00 467

原创 bzoj1042_递推加容斥原理

又一道容斥原理的题目。最开始看的时候只会打暴力, 想到了正常的dp, 实在想不出来了, 就厚着脸皮去看题解。 最近老是在做这一类的事情, 看完题解之后又感觉很简单... 容斥原理的题目果然还是不熟悉啊。 当然了, 看题解的时候比较喜欢那些有详细证明的, 因为没有证明自己想会很累(我好懒啊)。这道题的关键点自然还是容斥原理, 对于四种硬币的使用情况, 如果我们记有i种使用过度的方案数为g[i

2014-12-09 16:16:10 547

原创 bzoj1853_容斥原理

题目大意: 给出两个数a、b, 求在[a,b]中有多少个数是各位上仅含6和8的数的倍数。题目要求的是倍数的个数, 我们可以很快的算出来仅含6和8的数有2^10个, 剩下的暴力搜索肯定是行不通的。而在处理倍数的问题的时候, 有公式num = sum/a + sum/b - sum/lcm(a,b), 表示在[1, sum]间a和b的倍数的总数, 这里就用到了容斥原理的思想:A∪B =

2014-12-08 19:39:17 448

原创 对于求n个数的gcd的想法

一点小小的思路。其实也没什么, 就是把n个数依次求gcd就行了。 每求过一次两数的gcd, 就把原来的两数删除并把新的gcd加入即可。 时间复杂度O(n)。证明:若原来的n个数分别为a1,a2,...,an, 记结果ans = gcd(a1,a2,...an), 那么对于任意ai, 有ans | ai。 从集合的角度来看, 若Ai为ai的因数集合, 那么ANS = A1 ∩ A2 ∩.

2014-12-08 18:33:09 1124

原创 关于康托展开的用途及写法

在处理八数码这一类需要用到全排列的问题的时候, 存储往往是一个难题, 因为明明只有n!种情况, 数字的长度却有n, 用数组是肯定不行的。 这个时候, 康托展开就派上了用场, 当然, 在条件允许的情况下map不失为一个好的处理方法。康托展开: 把满足0 那么对于一个普通的数, 我们可以在O(L)的时间内将它进行康托展开, 只要用i!不停地试除就可以了。不过首先要预处理出阶乘的数组:i

2014-12-05 18:16:56 1174

原创 vijos1070_关于次小生成树的求法

(某日, xzz出现了卖萌的一幕)jzz:   DG, 你会求最小生成树吗?DG:   会呀!jzz:   那次小生成树呢?DG:    这个嘛...... -_-||不会————枚举然后暴力吗?jzz:   戚, O(nmlogm) 早炸飞了。DG:    到底怎么做嘛?jzz:   问问DL, 说不定他心情好会告诉你的。DL:   那么问题来了, 如何用O(n²

2014-12-04 10:38:29 2861

原创 bzoj1001_平面图中的网络流

对于普通的网络流来说, dinic或者ISAP的O(n²m)复杂度可能就够了, 但考虑如下问题:        如图所示的一个平面, 源点为左上角, 汇点为右下角, 边数范围到了1000, 这时候O(n²m)的复杂度显然不合适了。 当然, 现在我学会了独特的处理技巧, 专业处理此类平面图问题。---------------------------------------------

2014-12-03 19:55:06 1442

原创 素数判定方法_Miller-Rabbin测试

首先了解一下伪素数的概念: 如果n是一个正整数,如果存在和n互素的正整数a满足a^(n-1)≡1(mod n),我们说n是基于a的伪素数。如果一个数是伪素数,它几乎就是素数。另一方面,如果一个数不是伪素数,它一定不是一个素数。那么在一定的条件下,如果我们选取了若干个基都发现n是伪素数, 那么n是素数的概率趋近于1。Miller-Rabbin测试现在我们只需要多次寻找不超过n-1基并

2014-12-03 19:41:26 2743

空空如也

空空如也

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

TA关注的人

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