自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Holylight_Knight

某神犇:自己选择的路,跪着也要走完。

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

原创 NOI2005 维护数列

NOI2005 维护数列tags :【Splay】,【BZOJ1500】,【洛谷2042】在线评测地址:洛谷,大视野题目描述1500: [NOI2005]维修数列Time Limit: 10 Sec Memory Limit: 64 MBDescriptionInput输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目。第2行包含N个数字,

2017-10-10 18:49:29 634

原创 NOIP2016——纪念第一次水过的一等

这里就讲一下两天后四道题的做法吧。前两题,实在是比较简单(Day2T1,打个对拍,结果把暴力打错了,改错了= =,WA了60分QAQ)Day1T3(为什么先是T3呢?因为T2太经典了,最后再讲):其实是一个很裸的Floyd+概率Dp,但是期望类的Dp方程,没写过一道题,还真写不出来。Floyd就不用说了吧?先把两两点距算出来,然后考虑一个Dp,我们类似一个背包地设,dp[i][

2017-09-28 21:58:00 1277

原创 小试5

冲刺NOIP2017模拟赛1题目名称 奶牛晒衣服 奶牛排队 圆圈舞蹈存盘文件名 dry tahort circle输入文件名 dry.in tahort.in circle.in输出文件名 dry.out tahort.out circle.out时限 1s 1s1s内存限制 128M 128M 128M【注意事项】:请自行完成题目,切勿讨论。

2017-09-10 09:13:52 443

原创 小试4解析

题目质量不错。T1:应该能看出是一个裸(so easy)的贪心+排序吧?这里我们考虑一个dp,设dp[i][j]表示前i位,使用了j次变换,能获得的最小距离。那么dp[i][j]=min(dp[i-1][j]+abs(n[i]-m[i]),dp[i-1][j-1]+(n[i]==m[i])),还是很好推的。不过由于数据范围太太太太小了,所以n^4什么的dp都可以水过去。参考代码

2017-09-05 16:22:09 332

原创 小试4

Noip2017模拟赛4(B组)题目名称最小距离海战覆盖墙壁倒水存盘文件名disbattlewallWater输入文件名dis.inbattle.inwall.inwater.in

2017-09-04 21:05:18 784

原创 多叉树的树形背包常见建模方法

一.多叉树变二叉树。这个技巧其实也有两种具体的方法:树的孩子兄弟表示法与dfs序法。1.树的孩子兄弟表示法。   大家在学习树形结构时一定接触了一个多叉树变二叉树的方法,就是把每个点与它的第一个儿子连边,然后将它的儿子依次连接起来。可以结合下面的图片理解这句话。总结成口诀就是:第一个儿子是左子树,其他儿子是左子树的右子树(似乎并不押韵,手动滑稽)2.dfs序法

2017-09-03 20:04:58 8962 6

原创 AC自动机总结

如果你还不知道KMP是什么,或者不知道Trie是什么,先点下面的链接,学好这两样再来看这篇文章。KMP入门教程传送门。Trie入门教程传送门。好,那么我来讲讲AC自动机吧。以洛谷P3808模板题为例,如果我们有n个模式串,和一个文本串,我们需要统计有多少个模式串在文本串中出现了,怎么办?显然,如果我们直接枚举每个模式串,然后将其与文本串进行匹配,判断是否匹配成功,那么效率就

2017-08-30 21:26:56 1510

原创 字典树Trie总结

Trie就是把n个字符串建成一个树,树的每个节点都是一个字母,然后字符串的最后一个节点,我们会在Trie中对应的节点处打上标记,然后从根节点到每个标记点的路径上的字母依次排开就是n个字符串中的一个。是不是很浅显?稍稍举个例子:n=5hehishersabcxbc那么我们建的Trie应该是这样的          root         /    |

2017-08-29 20:39:33 996

原创 登峰造极之树——Splay伸展树

这个splay也是个很有趣的数据结构,它是为了平衡权值二叉树而提出的,却最终不是以权值二叉平衡树的形式被广泛使用,而是去维护序列的区间修改(某些线段树实现不了的区间修改,如区间翻转等),很多萌新在初学splay时都看的是平衡权值二叉树形式的,所以突然接触区间翻转等问题会有困难。这里我就不讲splay的权值平衡树的形式了(网上资料很多),而是主要讲一讲怎么去理解splay去维护区间(几乎没有人解释的

2017-08-28 10:04:57 1336

原创 登峰造极之树——Size_Blanced_Tree萌新入门教程

先前的博文:旧版SBT教程洛谷P3369是道模板题,我在洛谷P3369中详细的写了一个题解,这里就直接copy来了。当时写的时候把zig,zag表示的旋转方向弄反了,大家将就这看吧。大家自己打的时候就把zig改成left_rotate,把zag改成right_rotate。184ms / 3.15MB代码:2.61KB C++11时空以及编程复杂度都还好吧= =,大

2017-08-28 09:42:05 526

原创 登峰造极之树——左偏树

左偏树其实就是个堆,而且是个可并堆,可并堆是指可以在O(logn)的时间内完成两个堆的合并的堆结构。显然,二叉堆虽然实现容易,并且好理解,但是合并需要O(n)的时间。左偏树不是一个完全二叉树,更不是一个平衡树,顾名思义,它的左儿子的比重应该大于右儿子。那么在一个树中我们如何确定左儿子与右儿子的比重大小关系呢?我们可以一个定义:距离。我们定义一个左偏树的距离是其根节点到右儿子

2017-08-26 21:42:17 470

原创 网络流征程——ISAP算法

叹:真心没时间写博了问:那你怎么有时间在洛谷上切了4道ISAP的模板题,然后还详细写了题解?叹:【手动滑稽】先给了Dinic的说明吧:Dinic详解ISAP就是在Dinic上再优化。我们考虑Dinic,它其实在DFS回溯时就确定以当起点前点为的最短路层次图已经不适用了,但是Dinic选择放弃这条路,尝试其他的路,然后再bfs一次性重构一个层次图,但其实是没有必要的,因为随着

2017-08-25 22:21:30 323

原创 网络流征程——Dinic再详解

旧版链接//感觉以前写的好敷衍上次的文章绝大本分摘自别人的博客,这次我自己仔细的分析一下。首先,简单的FolkFoukerson算法不断的增广时,可能走了太多的反向弧,即做了大量的无用功,所以我们规定了增广的一个条件——每次只增广最短的那条,那么可以保证这条增广路长度不下降,上限是O(n),如果我们简单用bfs进行增广,这就是著名的EmondKarp(EK)算法,那么整

2017-08-25 22:09:36 432

原创 POJ——2481

●Poj 2481●给你 n 个闭区间,问每一个区间被多少个区间完全包含(完全重合不算)。●n●Time Limit : 1s●Memory Limit : 256MB这应该算是一类套路题。对于区间覆盖型问题,普及难度的是贪心,再难一点点就是dp,提高难度的算是数据结构维护一下,如果是dp+数据结构,蒟蒻觉得应该要上省选了= =这里还是一个树状数组搞一搞

2017-08-17 10:40:20 339

原创 BZOJ——4240

4240: 有趣的家庭菜园Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 441  Solved: 220[Submit][Status][Discuss]Description对家庭菜园有兴趣的JOI君每年在自家的田地中种植一种叫做IOI草的植物。JOI君的田地沿东西方向被划分为N个区域,由西到东标号为1~N。IOI草一共有

2017-08-17 10:31:22 418

原创 BZOJ——1452

好久没写博了= =描述输入产量样品输入样品输出12暗示统计答案时我们可以考虑维护前缀和,那么做个差就行了,由于颜色数量非常少,所以我们可以考虑对每个颜色单独维护与计算。而每次修改颜色时,他不会对左上角产生贡献,对右上,左下及右下的前缀和都会产生贡献。这让人

2017-08-17 10:20:46 290

原创 构造物品的最小花费

2 . dwarf tower(dwarf.cpp/c/pas)【问题描述】Vasya在玩一个叫做"Dwarf Tower"的游戏,这个游戏中有n个不同的物品,它们的编号为1到n。现在Vasya想得到编号为1的物品。获得一个物品有两种方式:1. 直接购买该物品,第i件物品花费的钱为ci2. 用两件其他物品合成所需的物品,一共有m种合成方式。请帮助Vasya用最少的钱

2016-11-17 22:44:04 374

原创 两个数列取第k小数

1 1 .第K K 小数( ( number .cpp/c/pas)【问题描述】有两个正整数数列,元素个数分别为N和M。从两个数列中分别任取一个数相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少。【输入格式】输入文件名为number.in。输入文件包含三行。第一行为三个正整数N,M和K。第二行为N个正整数,表示第一个数列。第三行为M个正整数

2016-11-17 22:40:42 711

原创 捡金币

3.捡金币(coin.cpp/c/pas)【问题描述】小空正在玩一个叫做捡金币的游戏。游戏在一个被划分成n行n列的网格状场地中进行。每一个格子中都放着若干金币,并且金币的数量会随着时间而不断变化。小空的任务就是在网格中移动,拾取尽量多的金币。并且,小空还有一个特殊技能“闪现”,能帮助她在网格间快速移动。捡金币游戏的具体规则如下:在每一秒开始时,每个网格内都会出现一定数量

2016-11-17 22:06:27 2305

原创 传球游戏

2.传球接力(pass.cpp/c/pas)【问题描述】n 个小朋友在玩传球。小朋友们用 1 到 n 的正整数编号。每个小朋友有一个固定的传球对象,第 i 个小朋友在接到球后会将球传给第 a i 个小朋友,并且第 i 个小朋友与第 a i 个小朋友之间的距离为 d i 。一次传球接力是这样进行的:由一个小朋友发球,将球传给他的传球对象,之后接到球的小朋友再将球传给自己的

2016-11-17 20:53:35 1746

原创 列车调度

【问题描述】有N辆列车,标记为1,2,3,…,N。它们按照一定的次序进站,站台共有K个轨道,轨道遵从先进先出的原则。列车进入站台内的轨道后可以等待任意时间后出站,且所有列车不可后退。现在要使出站的顺序变为N,N-1,N-2,…,1,询问K的最小值是多少。例如下图中进站的顺序为1,3,2,4,8,6,9,5,7,则出站的顺序变为9,8,7,6,5,4,3,2,1。输入文件名为mana

2016-11-17 20:32:38 771

原创 最小化最大等待时间

1.业务办理(transact.cpp/c/pas)【问题描述】在银行柜台前,有 n 个顾客排队办理业务。队伍中从前往后,第 i 位顾客办理业务需要t i 分钟时间。一位顾客的等待时间定义为:队伍中在他之前的所有顾客和他自己的办理业务时间的总和。第 i 位顾客有一个最长等待时间 d i ,如果超过了时间 d i ,业务还没有办理完成,那么这位顾客就会觉得不满意。具体来说,假

2016-11-17 20:21:58 1754

原创 直线围成的三角形数

【问题描述】平面上有N条直线,用方程Aix + Biy +Ci =0表示。这些直线没有三线共点的。现在要你计算出用这些直线可以构造出多少三角形?输入:第1行:一个整数N(1 ≤ N≤ 300000)。  下面N行:每行3个整数:Ai, Bi 和Ci,表示对应直线方程的系数。不超过10^9.input 16 0 1 0 -5 3 0 -

2016-11-17 20:14:48 943

原创 不能相邻的字符对

小 W W  理 笔记【问题 描 述】小 W 由于购物浪费了太多时间,导致他外语课都没有好好听。为什么是外语课?不是英语课?因为小 W 肯定会好好听英语课。由于没有好好听课, 小 W 的笔记全都记的杂乱无章,出现了好多错误的地方。 小 W 的笔记是如此的糟糕,以至于他只记了一句例句,而且自己还不知道是什么意思……然后在老师讲语法的时候, 小 W 又零星的记了几个字母对,老师

2016-11-16 12:35:29 994

原创 公约数3

1.铺瓷砖(tile.cpp/c/pas)【问题描述】有一面很长很长的墙。你需要在这面墙上贴上两行瓷砖。你的手头有两种不同尺寸的瓷砖,你希望用这两种瓷砖各贴一行。瓷砖的长可以用分数表示,贴在第一行的每块瓷砖长度为 AB ,贴在第二行的每块瓷砖长度为CD 。本问题中你并不需要关心瓷砖的宽度。如上图所示,两排瓷砖从同一起始位置开始向右排列,两排瓷砖的第一块的左端的缝

2016-11-16 12:24:13 448

原创 公约数2

问题描述:有一只青蛙在网格上跳,当它在某一个位置 (x,y) 上时, 令 k = lcm(x,y), 那么它下一步可以跳到(x + k,y) 或者 (x,y + k) 这两个位置上现在已知青蛙最后跳到了 (tx,ty) 这个位置上? 问青蛙有多少个可能的出发位置?共有 T 组询问,求对于于一个终点有多少个可能的起点,样例:36 106 82 8输出:

2016-11-16 12:20:03 448

原创 石头剪刀布的竞赛图

【问题描述】考虑 N 个人玩一个游戏,任意两个人之间进行一场游戏(共 N*(N-1)/2 场),且每场一定能分出胜负。现在,你需要在其中找到三个人构成“剪刀石头步”局面:三个人 A,B,C满足 A 战胜 B,B 战胜 C,C 战胜 A。【输入格式】第一行一个正整数 N,表示参加游戏的人数。接下来 N 行,每行 N 个数 0/1,中间没有空格隔开。第 i 行第 j 列数字

2016-11-15 21:45:18 965

原创 不幸运的序列

【问题描述】仅包含 4 或 7 的数被称为幸运数。一个序列的子序列被定义为从序列中删去若干个数,剩下的数组成的新序列。两个子序列被定义为不同的当且仅当其中的元素在原始序列中的下标的集合不相等。对于一个长度为N的序列,共有2^N个不同的子序列。 (包含一个空序列)。一个子序列被称为不幸运的,当且仅当其中不包含两个相同的幸运数。对于一个给定序列,求其中长度恰好为 K 的不幸运子

2016-11-15 21:39:16 375

原创 小报告

小报告【问题描述】体育老师又向班主任打小报告了。悲剧的是体育老师并不记得是哪些人在体育课上捣乱,他只记得捣乱的人在队里是连续的一段,并且他知道一共有多少人捣乱以及这些人的身高比较信息。他向班主任提供了这些信息,希望能找出捣乱的人。作为班主任的得力小助手,这任务自然又落到了小 w 的头上。小 w 记得全班体育课的队形以及各个位置上人的身高,他要找出捣乱的是哪一段人。当

2016-11-15 17:31:16 344

原创 求电阻

电阻【问题描述】物理课上老师让小 w 测一个电路板的电阻,小 w 用欧姆表很快就得到了答案。但是,欧姆表巨大的误差是令小 w 无法容忍的,于是他决定用数学方法准确算出总电阻。电路板一共有 N 个连接点,M 个电阻,小 w 需要算出 1 号连接点和 N 号连接点的总电阻。【输入格式】多组数据,输入直到文件结束每组数据第一行两个整数 N,M接下来 M 行,每行三个非

2016-11-15 17:26:53 661

原创 图论之强连通分量

问题描述:给出一个图,求其中的强连通分量。分析:常见的算法有tarjan算法和二度深搜法(即Kosaraju算法)这里详解tarjan算法。算法核心:对于一个图,我们给每一个dfs访问的点设立时间戳,即到达这里所需的最小时间,那么如果在树中,显然儿子结点的时间戳一定大于父亲的时间戳,而这里是有环的图,所以如果儿子的时间戳小于父亲的时间戳,则说明在访问父亲之前,就已经到达儿子

2016-11-15 17:20:21 760

原创 公约数1

公约数【问题描述】小 w 最近仔细研究了公约数,他想到了以下问题:现有 n 个正整数,从中选 k(2的价值为 k*g。求这个价值的最大值。小 w 当然知道答案了。现在他想考考你,你能很快回答出来吗?【输入格式】第一行,一个整数 n。第二行,n 个正整数。【输出格式】一行一个正整数,表示答案。【输入输出样例】输入:54 6 3 8 9输出:

2016-11-15 16:58:37 836 1

原创 平方分组

分组【问题描述】小 w 是扬中的高一新生。俗话说新官上任三把火,作为班长,第一件事自然是要给全班分座位。这可不是一件简单的任务。大家都知道学霸是一种环境不友好型生物,所以在一个组里,学霸会对同组的学渣造成巨大伤害。具体来说,我们定义一个组的不和谐度为本组的最高成绩与最低成绩差的平方。如一个组内的分数为 4 7 10 1,那么不和谐度为(10-1)^2=81。现在,班

2016-11-15 12:41:51 445

原创 堆积方块

方块游戏(cubes.pas/c/cpp)【题目描述】    小A和小B在玩一个方块游戏。编号为1到n(1    游戏开始后,小A会给小B发出p(1    1、移动(M):将包含X的立方柱移动到包含Y的立方柱上。    2、统计(C):统计含X的立方柱中,在X下方的方块数目。    写个程序帮小B完成游戏。【输入数据】    第1行输入P,之后P行每行输入一条指

2016-11-15 12:37:11 664

原创 父亲醉酒

醉酒(drunk.pas/c/cpp)【题目描述】小X家住在一条东西向的大街上。在他们家的东面,自东向西依次分布着n幢相似的房屋,编号为1到n,可以用一个长度为n的字符串表示这n幢房屋的颜色。小X的父亲经常喝醉酒,每次醉酒后他都会稀里糊涂地走到第Ai幢房屋前,然后坚信他现在第Bi幢房屋前。虽然他喝醉了,但是他依然能分清每幢房屋的颜色,并且掏出地图进行比较,只有房屋颜色和地图上一致时

2016-11-15 12:32:41 732

原创 超市抽奖

超市(market.pas/c/cpp)【题目描述】超市正在举行一个活动,该活动的规则如下:想要参与的顾客会将他购物的账单放入纸箱中,账单上写有顾客的联系方式和购物的金额。每天超市关门前纸箱中金额最大、最小的两张帐单被取出,付款金额最大的顾客将获得一笔奖金,价值为取出的两张帐单的金额之差;为了不重复计算,取出的两张帐单不再放回箱子,而剩下的帐单仍保留在箱中,进行第二天的活动。

2016-11-15 12:28:40 910

原创 环图搜索

树林(grove.pas/c/cpp)【题目描述】现在有一片树林,小 B 很想知道,最少需要多少步能围绕树林走一圈,最后回到起点.他能上下左右走,也能走对角线格子。土地被分成 R 行 C 列(1≤R≤50,1≤C≤50),下面是一张样例的地图,其中“.”表示小 B 可以走的空地,"X"表示树林,"*”表示起点。而小 B 走的最近的路己经特别地用“+”表示出来。. .

2016-11-15 12:12:56 641

原创 划区灌溉

划区灌溉(divide.pas/c/cpp)【题目描述】约翰的奶牛们发现山脊上的草特别美味。为了维持草的生长,约翰打算安装若干喷灌器。为简化问题,山脊可以看成一维的数轴,长为 L(1≤L≤1,000,000),而且 L 一定是一个偶数。每个喷灌器可以双向喷灌,并有确定的射程,该射程是一个整数,且不短于 A,不长于 B。A,B(1≤A≤B≤1000)都是给出的正整数。它所在位

2016-11-15 12:07:48 537

原创 poj之旅——2104

题目:给出一个数列,对于每个查询(i,j,k),输出ai.....aj中排序后第k个数。分析:其实就是线段树的运用。二分答案,然后对于i...j计算小于k的数字个数,这个用线段树模拟归并排序,然后如果当前区间被i....j包含,那么就返回这个区间的二分后的结果,否则查找子区间。跟AC的程序对拍十几个极端数据,可是死都不过,不懂。线段树就是我的克星。参考程序:#i

2016-11-14 20:48:50 253

原创 开关灯

【题目描述】晚上到家小 W 通过开关灯来保持自己神经的兴奋以便清醒地理笔记。N(2≤N≤100,000)盏灯被连续的编号为 1..N。刚回到家的时候,所有的灯都是关闭的。小 W 通过 N 个按钮来控制灯的开关, 按第 i 个按钮可以改变第 i 盏灯的状态。小 W 发出 M (1≤M≤100,000)条指令,每个指令都是两个整数中的一个(0 或 1)。第 1 种指令(用 0 表示

2016-11-14 19:49:40 382

空空如也

空空如也

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

TA关注的人

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