自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态开点线段树

动态开点线段树

2024-07-24 08:54:33 194

原创 python学习笔记-数据结构

列表、元组、字符串、集合、字典

2024-07-15 22:28:22 861

原创 【模板】区间推平(珂朵莉树)

区间推平例题巧妙做法的引入+珂朵莉树简介与模板

2023-07-28 15:15:45 360 1

原创 图论基础模板

最短路、生成树、Tarjan算法、网络流的图论知识总结

2022-07-11 20:29:01 315 1

原创 NOI考点详解合集

一、数据结构1.平衡树(替罪羊树/fhq treap/splay)2.主席树3.K-D树4.左偏树5.树套树6.线段树合并7.可持久化trie8.可持久化并查集9.动态树(LCT)二、动态规划及优化1.区间dp2.树形dp3.状压dp4.数位dp5.概率期望dp6.计数类dp7.倍增优化dp8.数据结构优化dp9.单调队列优化dp10.斜率优化dp(凸优化)三、图论1.基础:最短路/最小生成树/树的直径/树的重心2.tarjan缩点与图的连通性3.二分图4.

2022-05-26 21:24:25 861

原创 【堆+倍增】[BalticOI 2013]Ball Machine 发球机器

题目链接题意:给一棵树,在根节点放一些球,选择编号小的空节点滚下去。从一个位置上拿走球,上面的球也会滚下来先来模拟一遍样例,看看球是怎么滚的:初始节点均为空,放第一个球,落到2节点,然后落到编号较小的3节点,最后落到编号较小的5节点。依次类推,可得出在根节点放8个球(放满树)的顺序(如图蓝色序号)发现这个落球顺序是固定的。例如如果放3个球必然落到5,8,6三个节点,而不会落到别的节点。也就是说,当有若干个空节点时,来一个球,必然落到优先级更高(按落球顺序从小到大)的节点。考虑用优先队列维护这些空节

2021-11-19 09:58:58 2099

原创 【区间DP·费用提前计算】[BalticOI 2009] 甲虫

题目链接:洛谷P4870 [BalticOI 2009 甲虫]题意:数轴上有 nnn 滴露水,每滴露水 mmm 个单位水分,每过一个单位时间每滴露水流失一单位水分,请根据露水的坐标,计算甲虫最多能喝到的水首先对露水按坐标排序,考虑区间DP,不难想到用 dp[l][r][0/1]dp[l][r][0/1]dp[l][r][0/1] 表示吃完区间 lll 到 rrr 的露水,最后停留在左端 / 右端 的最大收益。由于每个单位时间露水的水分有变化,但在这个 dp 中无法表示时间,怎么处理呢?——费用提前计算

2021-11-19 09:32:20 168

原创 [JOISC 2015Day3] card game is great fun

题目链接:LOJ3002题面:有 nnn 张扑克牌堆成一个栈,从上往下第 iii 张花色是 cic_ici​,点数是 aia_iai​,价值是 viv_ivi​。每次选择拿走从上往下第1张或第3张,拿走的牌必须和上一次拿走的花色或者点数一样。请问如何拿牌,才能使拿出来的牌价值和最大。数据范围:1≤1\le1≤ n,ci,ain,c_i,a_in,ci​,ai​ ≤\le≤ 500500500,1≤1\le1≤ viv_ivi​ ≤\le≤ 10610^6106先从题目的性质入手,看这两种取牌情况:

2021-11-18 21:09:39 561

原创 浅析NOIP中的动态规划

收录并解析近十年NOIP提高组的DP题,分为背包类dp,线性dp,状压dp,树形dp,区间dp 五个部分

2021-11-15 23:15:05 2831

原创 CSP-S2021复赛题解

csp提高组2021复赛题解

2021-11-15 13:55:29 3472

原创 【NOIP备考计划】知识总结

NOIP范围知识点总结

2021-11-03 22:01:49 224

原创 【总结】倍增算法的应用

基础算法倍增在解题中的应用,分为序列倍增与树上倍增,共配5道典例

2021-11-03 21:39:08 1011

原创 【NOIP备考计划】Day4 CF思维题

今日计划2021.10.29:刷CF上的思维题1.CF1077C Good Array题意:给一个序列,输出所有的j使得去掉a[j]后的序列当且仅当有一个数是其他所有数的和枚举。枚举删除每个数是否可行,先将数组排序,可以发现如果删除的数不是最大的数,那么和只可能为最大的数,所以判断总和sum 在减去最大的数和当前枚举的数后是否等于最大的数,等于则记录答案。最后额外判断一遍删去最大的数的情况,即sum在减去最大数和次大数的情况下是否与次大数相同即可。#include <b...

2021-10-29 22:44:44 283

原创 【NOIP备考计划】Day3

一、今日计划 2021.10.281.做几道序列杂题,拓展思维2.刷DP题单,今天专门磕DPPart 1 【序列问题】1.Imbalanced Array题意:求一个序列所有子区间最大值减最小值之和step0:暴力做法就是枚举左右端点,用st表求区间最值相减,即可算出每个区间的贡献,然后相加即可发现:如果我们从每一个区间的贡献度考虑,那么需要枚举左右端点,O(n^2)起步,所以,直接求每个区间的贡献行不通step1:再分析题目,寻找突破口:求每个区间的最值——实际上,可能有.

2021-10-28 18:47:08 177

原创 【NOIP备考计划】Day2

一、.今日计划 2021.10.271.主席树之前只写过板子,今天模拟赛t1考了主席树,正好写篇题解并做做主席树的题复习一下2.学习神仙STL的应用,如vector,bitset二、解题过程&分析题目&AC代码Part 1 【主席树】1.(今天上午多校联考模拟赛的题)题意:选x个数,它们的t之和不超过T,使中位数最大step1:预处理基础操作,离散化,将所有宝藏按其价值排序step2:当一个宝藏成为中点,加上左右共选了3个宝藏的t之和已经超过T,...

2021-10-27 19:16:26 177

原创 【NOIP备考计划】Day1

一、做题计划:1.今天计划做几道树图题,如并查集解决删边问题、树形dp题,尤其是换根dp2.分治用的不是很熟练,这还是一个基础的算法,练道分治题吧3.发现自己状压DP比较薄弱,很少在考试、练习中写过,今天做几道典型题练习一下二、解题过程、题目分析、AC代码Part 1【并查集】1.逐个击破题意:花费最小的代价,使得一些有标记的节点不联通step1:联通--->并查集,然而并查集不支持删除操作,想到之前也做过一个删边的题星球大战 正难则反,反向来做,把删边转化为添...

2021-10-26 17:35:02 244

原创 CSP-S2019-2020复赛分析总结

1.D1T1[CSP-S2019] 格雷码 【模拟】 (分治思想找规律)先来看3位格雷码,找找规律。二分发现:000,001,011,010--->前一半,开头全是0110,111,101,100---->后一半,开头全是1继续二分:对于上次二分的前一半区间: | 对于上一次二分的后一半区间 :000,001--->前一半,第二位全是0 | 110,111--...

2021-10-21 20:14:12 877

原创 2021.10.20备考做题笔记

1.[HAOI2015]树上操作 - 洛谷 【树链剖分】树链剖分裸题,做此题主要是为了复习树剖#include <bits/stdc++.h>#define int long longusing namespace std;int n,m,w[100005],cnt,head[100005],siz[100005],x,a,dfn[100005],f[100005],son[100005];int sz[500005],timber,lazy[500005],opt,..

2021-10-21 10:39:48 71

原创 做题笔记10.19

t1.[USACO08JAN]Cell Phone Network G - 洛谷 【树形DP】题意:一棵树,一个信号点可以覆盖所有与其相邻的点,问最少建立多少个信号点覆盖整棵树首先,对于每个节点,有三种选择:a.选儿子 b.选父亲 c.选自己设置状态:令dp[i][0/1/2]为节点ii及其节点i的子树中全部被信号覆盖所需的最小信号塔数dp[i][0]:点i有信号塔,dp[i][1]:点i没有父亲有,dp[i][2]:点i没有儿子有t2.间谍网络 - 洛谷...

2021-10-19 20:40:42 180

原创 2021.10.13备考做题笔记

一、【数据结构优化dp】[POI2007] 堆积木KLO - 洛谷 题意:给一个序列,删除一些数字使得a[i]=i(数值等于下标)尽量多1.考虑朴素dp状态:dp[i][j]:前i个数有j个数归位转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]+(a[i]==j));2.考虑转换思路状态:dp[i] 表示第i块积木已归位,前i个积木最多归位数目转移方程:dp[i]​=​(dp[j]​)+1(j<i,aj[j]<a[i...

2021-10-13 19:39:46 79

原创 最短路的变式问题总结

1.[HAOI2012]道路​​​​​​题意:对于每条道路,求出有多少条最短路经过它思路:(1)考虑求出其中一次最短路的贡献 先跑一遍最短路,得到一个最短路图,对于边(u,v,w),判断其是否为最短路的方法是检查dis[v]==dis[u]+w,若式子左边大于右边则v一定通过其他边松弛成功,(u,v)不在最短路上,若左边等于右边,则最短路经过此路径松弛 (若式子左边小于右边说明最短路写挂了)(2)考虑如何统计 我们需要处理出以一条路径(u,v)为最短路的次数即为起点到...

2021-10-09 21:47:05 220

原创 浅析NOIP中的图论【2】

3.LCA的综合运用lca基础芝士(1)树上差分在序列中,我们定义其前缀和与差分序列,把区间的增减转化为左端点加1,右端点减1,根绝差分序列的前缀和是原序列这一原理,在树上也可以进行类似的简化,其中“区间操作”对应“路径操作”,“前缀和”对应“子树和”经典模型:给定一张无向图和一棵生成树,求每条“树边”被“非树边”覆盖了多少次解决方案:树上差分,给树上每一个节点一个初始为0的权值,然后对每条非树边(x,y),令x权值加1,y权值加1,lca(x,y)的权值减2,最后对这棵生成树进行一次d

2021-10-03 14:24:46 256 1

原创 浅析NOIP中的图论【1】

预备:图论基础知识(1)最短路(2)最小生成树(3)树的直径与最近公共祖先(4)差分约束系统(5)tarjan算法(6)欧拉回路(7)二分图

2021-10-03 01:11:12 369

原创 Dilworth定理学习笔记

前言:昨天膜你赛t2中考到了dilworth定理,感觉有一点点奇妙,所以简单学习了一下1.引入:首先回顾昨天膜你赛t2题目大意是给定n个二元组(x,y),对于x1<=x2且y1<=y2的两个二元组可分为一堆,问最少分多少堆思路:将所有二元组按x从大到小排序后,那么只要看y最小能划分成多少个不上升子序列即可问题来了,怎么求出最小划分数呢?——Dilworth定理闪亮登场2.什么是dilworth定理?狄尔沃斯定理(Dilworth's theorem)亦称偏序集.

2021-09-23 21:04:24 478 2

原创 9.16做题笔记

一、【搜索剪枝】小木棍小木棍 [数据加强版] - 洛谷【题意简述】n个小木棍拼成若干个长度相等的原始木棍,给出每段小木棍的长度,求原始木棍的最小可能长度【数据范围】n<=65【题解】(1)dfs(int k,int last,int res),k表示正在拼第几根原来的长棍,last表示使用的上一根木棍(短棍)的编号,res表示当前在拼的长棍还有多少长度未拼。于是循环枚举下一根将要使用的木棍、(2)剪枝:1.对输入的所有木棍按长度从大到小排序2.当dfs拼接失败,..

2021-09-16 22:09:05 215

原创 noip模拟 第K大区间【二分+树状数组】

定义一个长度为奇数的区间的值为其所包含的的元素的中位数。 现给出 n 个数,求将所有长度为奇数的区间的值排序后,第 K 大的值为多少。对于 80%的数据,1<=n<=1000 对于 100%的数据,1<=n<=100000, k<=奇数区间的数1.80pts 枚举起点和区间长度,二分+权值线段树(注意离散化)求出每个区间中位数最后sort一下即可求出第K大(附考场代码)#include <bits/stdc++.h>using namespac...

2021-09-07 19:42:12 144

原创 树形dp(超详细)

通常,我们从根节点出发,向子节点做深度优先搜索,并由其子节点的最优解合并得到该节点的最优解。有些问题,我们还需再次从根节点出发,向子节点做深度优先搜索,对于树上的每个节点(除根节点外),由父节点的信息(父节点合并后的信息,除去该孩子的信息,就是其与孩子的信息)更新该节点的信息例题1给出一个n个节点的树,找出一个节点为根,使得树上所有节点的深度之和最大我们先假设1号节点就是根节点,这时候,我们对树做一次dfs就可以求出每个点的子树的大小,并且同时也可以求出所有节点的深度之和这时候,如果我们把根

2021-08-11 00:21:51 9025 2

原创 权值线段树

#include <bits/stdc++.h>using namespace std;void build(int rt,int l,int r,int x){ if(l==r){ f[rt]++;return; } int mid=(l+r)>>1; if(x<=mid)build(rt<<1,l,mid,x); else build(rt<<1|1,mid+1,r,x); f[v]=f[v<<1]+f[v<&.

2021-07-26 22:01:49 62

原创 noip2017模拟赛序列问题

【问题描述】Brunhilda 十分喜欢序列, 她喜欢观察序列的性质。现在Brunhilda 手上有n 个不同的数, 于是她尝试将这n 个数字填到长为n 的序列A 中。在她看来当序列A 的第i 位上数字在原来n 个数中恰好是第i 大时,i 号位置就是稳定的。并且, 当序列中恰好有m 个位置是稳定时, 她的开心度就会加1。那么, 她想知道, 她的开心度最大可能是多少。由于Brunhilda 的开心度可能会很大,所以你只要输出开心度除以1000000007 的余数。【输入格式】从文件probl

2021-07-24 13:21:17 346

原创 最近公共祖先问题

1.倍增法求lca首先通过交换确保x的深度更深然后找到最大的k满足2的k次幂<=d[x],作为二进制尝试跳跃的上界,接着通过若干次尝试往上跳,让x和y深度相同这个时候如果x和y已经是同一个结点了,就直接返回结果。否则,让两个点继续尝试往上跳一样的步数注意只有在两个节点跳2的j次幂步后不相等时才会往上跳。换句话说,循环结束后。x和y分别是它们lca的儿子,因此它们的父节点就是lca#include <bits/stdc++.h>using namespace std;

2021-07-23 21:19:23 105

原创 暑期集训7.21 t4串项链

【问题描述】 Ariy 有一只小仙女,她有一只珍珠项链。可是这只项链的绳子断了,n 颗珍 珠散落了下来,所以 ariy 想帮他的小仙女把项链串起来。可 ariy 不满足于把项 链串成链状,但又不想串没有必要的绳子,所以他只用 n-1 条绳子把珍珠连接起 来。但珍珠不是白串的,每当连上一颗绳子时,所要花费的代价为全部串好后绳 子两边珍珠之差的绝对值与绳子长度的乘积。 他已经有了串绳子的雏形,他想问问你,他串好后总共的花费是多少?【输入格式】 输入的第一行包含一个整数 n 接下来的 n-1 行 每行三个正数

2021-07-23 20:47:25 72

原创 【图论】连通块

在无向图上,我们可以利用dfs求连通块的数量,算法流程如下:1.选择一个尚未被访问的点v,从点v出发进行深度优先搜索,对访问过的点进行标记2.继续寻找下一个尚未被访问的点,直到没有尚未被访问的点,算法结束进行深度优先搜索的次数就是图中连通块的个数,如果我们在每次进行深度优先搜索时,对访问过的点进行不同的标记,就可以记录每个连通块内的顶点有哪些了,也可以跟迷宫问题时一样求解连通块大小、最大连通块等问题#include <bits/stdc++.h>using namespac.

2021-07-23 20:23:56 3469

原创 暑期集训7.22t1 组合数问题

【问题描述】 定义"组合数"S(n,m)代表将 n 个不同的元素拆分成 m 个非空集合的方案 数.举个栗子,将{1,2,3}拆分成 2 个集合有({1},{2,3}),({2},{1,3}),({3},{1,2})三种拆分 方法. 小猫想知道,如果给定 n,m 和 k,对于所有的 0=1,S(i,0)=0.【输入格式】 从 problem.in 种读入数据 第一行有两个整数 t,k,t 代表该测试点总共有多少组测试数据. 接下来 t 行,每行两个整数 n,m.【输出格式】 输出到文件 problem

2021-07-23 19:48:59 109

原创 暑期集训7.15T1 回家

【题目描述】 小 Z 是个路痴。有一天小 Z 迷路了,此时小 Z 到家有 N 个单位长度。小 Z 可以进行若 干次行动,每次行动小 Z 有 1/2的概率向家靠近一个单位长度,有1/2的概率向家远离一个单位长 度。由于小 Z 的体力是有限的,他最多能行动 K 次。请你帮帮可怜的小 Z 算一算,他在体 力耗尽之前到达家中的概率是多少。【输入格式】 从文件 home.in 中读入数据。 一行两个用空格分隔的整数 N,K。表示小 Z 到家的距离和小 Z 能行动的次数。【输出格式】 输出到文件 home.ou

2021-07-16 22:16:02 162

原创 暑期集训7.15T2--最小化

【题目描述】 小 F 有一个长度为 N 的正整数序列 A。他的好朋友小 T 提出了这样的一个概念,对于 一个序列 A,它的 K 项差和为所有相邻 K 项的元素的差的绝对值的和。以序列 A 为例,它 的 K 项差和为: ∑ |????[????] − ????[???? + ????]| ????−???? ????=1 现在小 F 想求序列 A 的 K 项差和,为了使序列 A 的 K 项差和尽可能地小,小 F 决定对 序列 A 进行重新排序。现在,请你帮助小 F 求出对序列 A 进行任意重排后其 K 项差和

2021-07-16 00:23:50 126

空空如也

空空如也

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

TA关注的人

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