自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 NetworkX 图网络处理工具包

简单介绍NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.这个工具包对于图网络的处理非常有用,涵盖了很多算法,用法也非常友好。这里也贴出几个常用链接:Ne...

2019-03-06 15:31:00 235

转载 Python pandas & numpy 笔记

记性不好,多记录些常用的东西,真·持续更新中::先列出一些常用的网址:参考了的 莫烦python pandas DOC numpy DOC matplotlib 常用习惯上我们如此导入:import pandas as pdimport numpy as npimport maplotlib.pyplo...

2018-12-27 14:52:00 118

转载 KMP、扩展KMP、Manacher习题

照着这篇博客刷一下。 自己也做一下笔记对于KMP算法,可以看我之前总结的这篇博客hdu 3613 Best Reward给一个字符串,字符由a~z构成,每个字符有一个权值。在某一点将字符串切成2半,若切成的字符串是回文的,则值为字符值之和,否则为0,问最大价值是多少?设原串为S,S的逆记作T。则以T为主串,S为模式串做EKMP,若extend1[m-i]+m-i==m,则...

2018-10-27 21:29:00 92

转载 BZOJ 3262 陌上花开 cdq分治

题目传送门题意是:花有3个参数x,y,z,说两朵花a和b,a<=b,指a的3个参数都<=b。一朵花>=k朵花,则称这朵花的级别为k,问各个级别的花有多少朵?三维偏序问题,可以参考这个视频需要用到树状数组,如果对树状数组怎么统计偏序问题有疑惑,这题是3维的,可以先参考我上一篇文章解决2维LIS的问题的博客#include <cstdio&g...

2018-10-25 00:38:00 86

转载 树状数组求最长上升子序列

先说最简单的做法:一种是最常见的dp方法,令f[i]表示以A[i]元素结尾的LIS长度,那么,F[i]=max{F[j]+1) 其中1<=j<i,A[j]<A[i],边界是初始化F[i]=1,复杂度O(n^2)。#include <cstdio>#include <algorithm>using namespace std;...

2018-10-24 21:17:00 622

转载 51nod 贪心算法题集

2070 最小罚款:题意:初始有n元,每个任务有2个参数:t和w,<=t时刻前完成任务才可避免造成损失w。问:如何安排才能尽可能避免损失?一个任务执行时间是一个单位时间。分析:任务按时间排个序,来一个储存每个任务w的最小堆。执行当前任务(相当于入堆),若发现执行后,时间并不超越自己的截止日期(当前时间是执行任务数,亦即当前堆size),那自然入堆,否则说明当前任务其实是不够...

2018-10-23 17:02:00 89

转载 51nod 1020 逆序排列

题目戳这里题意是n个数字,问逆序对为k的排列有多少种。令f(n,k)表示n个数时,逆序对为k的排列种数。考虑k个逆序对时,第n个数字的放置的情况:这第n个数可以插入的位置为n-i,其中i∈[0,n-1],插在第n-i个位置,则产生i个逆序对,不插入时,n-1个数则恢复成k-i个逆序对。则有f(n,k)=∑f(n-1,k-i) 其中i∈[0,n-1] ,为了消去这个求和,同...

2018-10-19 16:21:00 61

转载 51nod 1625 夹克爷发红包

题目链接戳这里题意是有一个赋有非负数的矩阵,每次可以将某一行or某一列替换成某个数值,可以替换<=k次,问如何替换能使得矩阵总和最大,输出最大值。一开始想的是简单的贪心:比如找当前收益最大的行或者列来替换。这样的问题在于:替换行必然影响列,同理列影响行,就是说当前的贪心会影响之后的决策,不可行。因为行最多10行,所以用dfs枚举行替换与否,然后再贪心地找收益最大的列...

2018-10-10 13:53:00 57

转载 python: 用pygments给markdown文档染色

首先你需要一个markdown解析器比如有常见的markdown和markdown2,其他的可以参考这个网站的评价我选择了mistune,自己继承写一个渲染的Renderermistune的doc也有提及基本写法#!/usr/bin/env python# -*- coding: utf-8 -*-import mistuneimport sys...

2018-10-10 00:26:00 273

转载 51nod 1636 教育改革

题目链接令f[i][j][k]为第i天选择的课程为j,设置作业为a[j]+k时的最大作业量.那么f[i][j][k]可以由哪些状态转移而来?先把课程按复杂度排序,那么可以转移来的课程是f[i-1][t][r],其中t是<j,且复杂度a[t].c严格小于a[j].c. 这是前提条件, 其次, 对于a[t]布置的作业数量r,根据题意需要满足作业j布置的作业(a[j]+k...

2018-09-24 19:09:00 57

转载 hdu 4614 Vases and Flowers

题目大意:有编号为[0,N-1]的花盆,有下述2种操作:1 A F,有F朵花,从A开始放入花盆,(最后放不下的丢弃)2 A B,清理[A,B]花盆里的花。对每种操作:对1输出第一个和最后一个放入花的花盆编号,无位置时输出“Can not put any one.”对2输出清理掉的花盆数量。对2操作,就是一个简单的线段树区间和的查询,不提先。对于1操作,相当要...

2018-09-22 10:02:00 89

转载 hdu 4578 Transformation

1 a b c 为 [a,b]内的元素+c ;2 a b c 为 [a,b]内的元素乘以c3 a b c 为 [a,b]内的元素置c ;4 a b c 为 求[a,b]内的元素的c次方之和。可以参考这篇博客维护3个lazy:st(set), add, mul。set操作的时候:把add和mul标记取消(相当于add=0,mul=1)mul操作的时候,因为元素e+ad...

2018-09-21 14:32:00 52

转载 大数加法、乘法实现的简单版本

有时候在外需要用大数..比如面试之类,对效率要求不高,需要的是容易记住的实现,这里有一份:#define big string#define le length()big addBig(big x, big y) { if (x.le < y.le) swap(x, y); // x长而y短 for (int i = x.le - 1,...

2018-09-18 00:01:00 57

转载 hdu 4027 Can you answer these queries?

深刻理解到读题的重要性。0 x y 表示对x和y之间的值进行开根号,向下取整。1 x y 为求和操作,N属于[1, 1e5]。因为对元素开根(向下取整),所以每个元素开不了几次,比如2^63次方,log一下最多开7次而已。而1怎么开方都是1,于是如果某一段被开到全都为1,满足g[rt]=r-l+1,那么这段不必更新,以此来节约时间。还有就是其实是x,y之间的飞船进行开根处...

2018-09-12 16:09:00 45

转载 zoj 1610 Count the Colors

这里主要复习下线段树点的意义。这里的染色区域L,和R,是指将这样一个线段[L,R]染色,而非点染色。那么,我们可以人为地改变线段树中每个点的意义:从树原本的一个叶子表示一个点,改成表示一条长度为1的线段。比如[1,2]这个线段,用2来表示即可,那么染色[u,v],相当于染色[u+1,v]。问题来了:为什么不用1来表示[1,2]呢?因为:用末端来表示线段,相当于用(a,b]表示这...

2018-09-11 13:11:00 54

转载 2018 徐州赛区网赛 G. Trace

题目链接在这里题意是:按时间先后有许多左下角固定为(0,0),右上角为(xi,yi)的矩形浪潮,每次浪潮会留下痕迹,但是后来的浪潮又会冲刷掉自己区域的老痕,留下新痕迹,问最后留下的痕迹长度为多少?这题里,不存在2个浪潮,使得一个浪潮完全被另一个覆盖.如图,经过了(1,4),(4,1),(3,3)浪潮后,所留下的痕迹(红边为10). 每次浪潮都会有贡献.再而,如果浪潮...

2018-09-09 21:38:00 84

转载 1495 中国好区间 尺取法

链接在这里问的是一个数字序列中,有多少个第K大的数>=T的区间.这题相当于问:有多少个>=K个”满足大于等于T“的元素的区间.预处理dp[i]为前i项元素>=T的元素个数之和. 尺取维护L和R.如果dp[R]-dp[L-1]>=k,说明[L,R]这个区间是合法的,那么对于L来说, [L,E],其中E∈[R,N]都是合法的,所以答案+=n-r+1个元素....

2018-09-05 21:20:00 42

转载 LA 3938 动态最大连续区间 线段树

思路很清晰,实现很繁琐。分析过程可以参考LRJ,自己的总结晚些放。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxN=5e5+5,maxNode=1e6+5;#define ll long lo...

2018-08-28 01:09:00 86

转载 51nod 1275 连续子段的差异

题目看这里若[i,j]符合要求,那么[i,j]内的任何连续的子段都是符合要求的。我们可以枚举i,找到能合格的最远的j,然后ans+=(j-i+1)。那么问题就转换成了:在固定i的情况下,如何判断j范围内是否合法?若[i,j]内的max-min<=K自然就合法。于是相当于求区间内的最值问题。这个可以用单调队列解决。下面对代码给出一些解释:1:为何是j-i而非j-i+1...

2018-08-24 18:51:00 68

转载 caioj 1172 poj 2823 单调队列过渡题

给定一个n个数的数列,从左至右输出每个长度为m的数列段内的最大数。输入:第一行两个整数n和m( 1<= n <= 20 0000,m<=n)。下来给出n个整数。输出:一行一个整数,表示每连续m个数的最大值。样例输入:8 31 3 -1 -3 5 3 6 7样例输出:335567维护一个单调队列,列内严格递减。若是首端元素已...

2018-08-24 16:41:00 64

转载 51nod 1952 栈

题目链接戳这如果只是从尾端插入,那么问题就是基础的:求取栈内最大值的问题,这用单调栈解决即可。但是前端也能插入,一般的单调栈已经不能满足。那么想象,如果在前端插入一个小值,相当于在栈底多加一个值罢了。但若加入一个大值呢?则需要把栈底的元素从下面逐个取出来,相当于这些比当前要插入的值“不曾存在过”,再从前端插入当前值。由于涉及从前端插入,那么用双端队列实现双端的单调栈即可。...

2018-08-24 12:27:00 71

转载 51nod 1437 迈克步

题目链接先利用单调栈or其他方法找到一个元素g[i]作为最小值的区间,设为[L, R]。那么长度为R-L+1的组的最大值ans=max(ans,g[i])。但是有一个问题:比如6这个元素是长度为3的组的最大值,长度为2的最大值之前更新到为4,那么实际上长度为2的最大值是多少呢?自然是6,因为肯定6存在于长度为2的组。于是:求得所有元素作为最小值的组的长度后,更新...

2018-08-23 15:08:00 66

转载 51nod 1349 最大值

题目看这里找到每个元素g[i]作为最大值的区间[L,R],那么以他为最大值的区间数有(i-L+1)*(R-i+1)个。为了加速,以k为最大值的区间数放入H[k],再以此统计一个前缀和,更新入H。那么>=s的区间个数就是H[1e5]-H[s-1]。留意:为了避免区间重复,对于同样的元素,左边遇到时继续延伸,用<=号,右边遇到时不再延伸,用<号。比如{3,3...

2018-08-23 12:59:00 76

转载 51nod 1158 全是1的最大子矩阵

题目链接在这儿如果我的博客费解,可以看这篇博客,认为清晰。首先把子矩阵预处理,g[i][j]表示第[i][j]号元素能向左延伸的长度。进而针对每一列,假设是c列,考虑g[i][c],i∈[1, Row],得到g[i][c]元素在这一列上作为作为最小值的长度。假设这个区间是(U, D),那么长度为D-U-1,那么临时解为(D-U-1)*g[i][j]。取临时解中的最大值即为...

2018-08-23 11:49:00 50

转载 51nod 1279 扔盘子

题目链接在这儿如果上面一层窄,下面再宽也没用。那么可以根据输入获得一个单调的栈,这个栈是经过选择的。比如输入例子的5 6 4 3 6 2 3,将变成5 5 3 3 3 2 2 。最后一层为栈顶,接着来一个盘子判断栈顶(亦即坑底部)能否容纳,不可则出栈再判断,可则认为放置这个盘子入这层,这层消失。统计一下放置了多少次即可。#include <bits/stdc++.h...

2018-08-22 20:55:00 80

转载 51nod 1102 面积最大的矩形

题目地址在这儿求取:以某矩形g[i]为最小值的区间的左右端点,得到一个临时解。所有临时解中的最大值即为解。求取区间的方法可以用单调栈,也可以用下面这种十分简洁的类似于递归的方法。下面这种解法求出来的区间是开区间,也正是因为开区间,所以跳转很方便。L[i]是以第i根柱子为最小值的左开区间点。若g[i] <= g[L[i]],则L[i]=L[L[i]];打个比方,柱子高...

2018-08-22 17:14:00 70

转载 51nod 1215 数组的宽度

题目链接看这里获取每个元素g[i]作为最大值和最小值的区间。假设分别为bl[i],br[i],sl[i],sr[i]。(b和s代表big和small,l、r是left和right)注:func(i, k, j) 返回的是在[i,j]区间的所有子集中,包含第k个元素的子集数量。那么对于最终的结果ans,g[i]这个元素贡献的值为g[i] * (func[bl[i],i,br[i...

2018-08-22 16:05:00 58

转载 51nod 1403 有趣的堆栈

题目看这里主要是能分析出这样一个结论:每个pop根据这个元素上面被压过多少个元素,可以知道他是在前面哪个pop之前被push的。根据这些信息可以求得每个pop到上一个pop之间有多少个push,最后求个前缀和即可。#include <stdio.h>const int maxN=1e6+5;int N, g[maxN], h[maxN];...

2018-08-22 15:06:00 79

转载 51nod 1624 取余最长路

题目见这里走的过程必然是这样的:从pos[1][1]走到pos[1][x]以至于pos[2][x],再走到pos[2][y]以至于pos[3][y],最后从pos[3][y]走到pos[3][n]。假设第i层的前j项和为sum[i][j],其中i∈[1,3],j∈[1][n]。留意,这里x<=y。那么这样一条转折点为x和y的路径所得的值为:ans=sum[1][x]...

2018-08-21 20:05:00 49

转载 HDU 1257 最少拦截系统

这题还是有点意思的,有个数据可以试试:8 7 6 5 6 3 2 4 1。答案是2而非3。问题就在于:拦截系统用完并非消失,以后有可以用的时候还是可以用的。那么对于每个导弹,贪心地用被利用得已经高度最低的拦截系统去处理它,如果没有能处理的时候就增加个拦截系统。知道思路之后自己写就行了。#include <iostream>#include <bits...

2018-06-09 01:22:00 47

转载 HDU 1260 Tickets

令dp[i]为前i个人买好票的最少花费。那么这个状态可由2种状态转移而来:1.上一个人和自己组队买票 2.上一个人不和自己组队买票即可得:dp[i] = min(dp[i-1]+cost[i], dp[i-2]+together[i]);#include <iostream>#include <bits/stdc++.h>using nam...

2018-06-09 00:31:00 51

转载 HDU 1176 免费馅饼

令dp[i][j]为i时刻j位置时的最大馅饼量。由于每个状态只能由临近的3个状态转移而来,所以可以较为简单的确定递推式。第一个要思考的点:正推还是逆推?逆推的好,正推的话不知哪些状态可走,而逆推的话,是在当前状态下确定之前的状态,所以不存在这个问题。第二个思考的点:为什么答案是dp[0][6],6是因为为了去掉越界的判断,把位置从[0,10]映射到了[1,11],0是因为,1时刻...

2018-06-08 23:58:00 72

转载 HDU 1540 Tunnel Warfare

需要用线段树维护区间的3个变量:区间最长的:[左连续前缀、右连续后缀、最大连续子区间] 的元素个数其中红线左侧的是第m个元素,右侧是m+1个元素。更新完左右子树想要pushUp操作的时候,父亲的左前缀必然是左子的前缀,若是左子树满了,则左连续可能还要加上右子树的左前缀。同理,父亲的右后缀必然是右子的后缀,若是右子都连续,那么还要加上左子的后缀。查询的时候,若是位...

2018-06-02 17:26:00 50

转载 HDU 4027 Can you answer these queries?

对区间进行操作:操作0是区间内的每个点的值val = int(sqrt(val)); 操作1是查询区间和。题目链接因为是区间操作,第一感觉是lazy,但是这题lazy在push_down的时候无法快速的对区间进行更新,所以变成点操作+剪枝。留意到每个点的值必然是正整数,且开根几次之后最终都会稳定在1,所以说一个节点表示的范围是[l,r]时,若sum[rt]=l-r+1,必然下面的...

2018-06-02 11:25:00 46

转载 Manjaro 更新vim插件或者系统后 YCM失效

manjaro 更新之后,ycm总会多少有些毛病:第一次遇到的问题:PluginUpdate之后ycm失效。使用命令:YcmToggleLogs查看ycmd_39047_stderr_Pp1GpB.log文件,最上面提示出错:No semantic completer exists for filetypes: ['cpp']解决办法是去到.vim/bundle/...

2018-06-02 10:16:00 172

转载 UVA 10635 Prince and Princess

有两个长度可能是250*250的数字串,串内元素两两不同,求最长公共子串。常规的O(n^2)解法不论是时间或空间都无法解决,办法是转化成求最长上升子序列。假设是有串1和串2。先给串1的元素按输入顺序来一个映射,称为映射1。比如说1 7 5 4 8 3 9 映射成 0 1 2 3 4 5 6。那么s1[7]=1,s1[9]=6。映射完成之后处理第二个字符串。第二个字符串按映...

2018-05-24 16:42:00 58

转载 HDU 4489 The King's Ups and Downs

题目链接问的是n个不一样的数,大小交替,或者小大交替的种类数量。n个数,想象成[1,n]的自然数即可。我们假设大小交替得到的长度为i的排列数为dp1[i],小大交替得到的长度为i的排列数为dp2[i],因为是对称的,其实应该有dp1=dp2,我们要计算的总和sum=dp1+dp2。我们从小到大考虑各个数,一个个插入队列,考虑到第i个数,称为ai,ai比前i-1个数都大,可...

2018-05-23 15:11:00 70

转载 HDU 1542 矩形面积并

推荐阅读这篇文章这里仅根据上述文章进行一些补充。主要是注意这里线段树点的意义变成了“边”。比如+-----+-----+,看作3个点abc和两条边e1和e2,那么线段树中点a代表e1,点b代表e2。那么我们在算cover(想象成染黑)的时候,将(a,b,c)这一段染黑的时候,其实只需要染线段树中的a和b点即可!这里解释了,为什么染[l,r]的时候,实际上染的是[l, r - 1]。...

2018-05-22 13:43:00 60

转载 POJ 2528 Mayor's poster

主要是参考了这个博客 地址戳这儿题目大意:n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000)。求出最后还能看见多少张海报。对于输入要离散化,之后线段树维护张贴的状态。留意由于一般的离散化可能导致一些区间被“挤压掉”比如1-10 1-4 5-101-10 1-4 6-10 被处理...

2018-05-21 16:33:00 48

转载 读 CSI讲义 费马小定理

费马小定理最近在上计算机安全学选修课.. 读老师博客..现在当是写阅读笔记吧.这里贴出老师的简书建议先看看链接先..毕竟我这些东西只是搞笑一下的.. 遵循一下这个原则… 观察找规律求证 首先是一段python代码,其实下面的才能直接copy后直接跑(我没学过) # n是某个正整数n = 11;for i in...

2018-04-12 18:26:00 82

空空如也

空空如也

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

TA关注的人

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