自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (7)
  • 收藏
  • 关注

原创 关于斜率优化

你会斜率优化吗?

2022-06-04 20:41:49 221

原创 强连通分量

强连通分量前置芝士首先熬过了 树剖,mjlmjlmjl 终于开始讲解一些码量偏小的题目。于是,就愉快地探索什么是强连通分量……以上是它的一些基本概念。其实强连通就是一个环,主要是解决一些有向图求最值问题(最少需要几个物品完成所有节点覆盖……)。Tarjan之前在学习 LCA 时就以接触过这位大佬的算法,是离线的,时间复杂度达到了优秀的 O(n+q)O(n+q)O(n+q),不过常数极大,被树剖秒掉。但是 Tarjan 在 强连通分量 是在线的,也是正常搜索的时间复杂度,于是它就成为了不

2022-05-14 17:07:59 202

原创 2022-05-04定时训练

好耶~又是炸裂的一天首先这次的题目难度其实中肯,T1水,T2考思维,T3大模拟,T4小清新图论,T5***。T1 镜像字符串它的题面然后你就可以发现它是一道水题了……但是存在一个细节,就是当且仅当:第一个字符与第二个字符相同,直接输出两次第一个字符。否则遇见相同情况继续循环遍历,证明如下:于是就可以愉快地敲代码了……#include<bits/stdc++.h>using namespace std;inline int read(){ int num=0,ch=0;

2022-05-14 17:05:41 158

原创 树链剖分的总结

什么是树剖?here.以下是它的一些基本概念:关于树剖,最基本的就是求取 LCA,而他的时间复杂度到达了 O(logn)O(logn)O(logn),虽说并比不上离线的 Tarjan 算法,只不过后者常数巨大,因此树剖便成为了不二之选。首先理解一下树剖的过程:我们假设一棵树它是长这样的。不难发现,重链就是 1,4,9,12,13,141,4,9,12,13,141,4,9,12,13,14.树链剖分求 LCA 的思想就是把一个图剖分成 lognlognlogn 条链,然后在链上进行跳跃。综

2022-05-02 21:01:16 733 1

原创 关于LCA的补充

结合之前的 LCA blog.我们又发现如果使用 tarjan 算法,时间复杂度为 O(nq)O(nq)O(nq),如果询问次数 qqq 较大,再结合一些小小的常熟,可能会 TLE。于是我们有了新的思路——欧拉序结合 RMQ。什么是欧拉序?还是这张图该图的欧拉序即为:abacdcecaabacdcecaabacdceca然后我们可以发现,如果求 bbb 与 eee 的 LCA 就是欧拉序中 bbb 至 eee 中层数最小的所对应的字母,而区间最小用什么,当然是 RMQ 啊!所以我们只需要跑

2022-04-04 23:01:58 381

原创 LCA总结

What is “LCA”?LCA 是最近公共祖先,可以发现它是唯一的。举个例子,bbb 与 eee 的最近公共祖先是 aaa,因为 aaa 既是 bbb 的祖先又是 eee 祖先,并且它是最近的。学习 LCA 关键在于它的思想,而不是做几道模板!How to write it?首先是最简单的朴素算法,也就是通过一次 dfs 预处理出一个 fafafa 数组,和 并查集 十分相似。然后求取 LCA 时:假设求取 xxx 和 yyy 的 LCA,首先用一个 flagflagflag 数组标记

2022-04-03 17:16:30 637

原创 P1484 种树题解

如题细看题目,这不就是那道数据备份(其实这类题目有4道左右)。题目简单理解:在 n−1n-1n−1 条路里选择 kkk 个不相邻的路段,使得路段长度总和最小。初看题目,你会联想到线性DP,再看一下数据范围:能水部分分为了不空间超限,我们压维(发现第一维只用记录前3个数值)有了如下代码(不完整):#include<bits/stdc++.h>using namespace std;int n,k,A[100005],a[100005],dp[5][500005];int mai

2022-01-08 16:52:12 89

原创 SP1553 BACKUP - Backup Files题解

如题细品一下,发现此题和数据备份十分的相似,简单理解一下题意:在 n−1n-1n−1 条路里选择 kkk 个不相邻的路段,使得路段长度总和最小。然后你就找到了此题的多倍经验……初看题目,你会联想到线性DP,再看一下数据范围:能水70分为了不空间超限,我们压维(发现第一维只用记录前3个数值)有了如下代码(不完整):#include<bits/stdc++.h>using namespace std;int n,k,A[100005],a[100005],dp[5][500005]

2022-01-08 16:51:11 220

原创 solution--智力大冲浪

题目描述小伟报名参加中央电视台的智力大冲浪节目。本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者 mmm 元。先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则:首先,比赛时间分为 nnn 个时段,它又给出了很多小游戏,每个小游戏都必须在规定期限 tit_iti​ 前完成。如果一个游戏没能在规定期限前完成,则要从奖励费 mmm 元中扣去一部分钱 wiw_iwi​ , wiw_iwi​ 为自然数,不同的游戏扣去的钱是不一样的。当然,每个游戏本身都很简单,保证每个参

2021-10-09 09:40:57 117

原创 2021-09-19不堪回首的往事

csp第一轮认证后……欢迎加入csp,撒花~前20分钟,时间好慢,选择题陪我那30分钟,我恶心坏了最后的最后祝福欢迎加入csp,撒花~欢迎来到scp,哦不csp,这一次考试之前,本人自信心暴起,Because去年的我都过了的一试,今年有何难度?但是发现事情并没有那么简单拿到卷子,看向去年头疼的程序阅读,什么鬼?虽说是都学过的知识点,但是一堆整合起来简直令人作呕,关键我还没看出来它有何目的,只能打草稿,模拟来模拟去。这对于我而言简直是噩梦前20分钟,时间好慢,选择题陪我不得不说,今年的选择题,那叫一

2021-09-19 21:50:14 96

原创 c++day5

从今天起,开始循环结构循环,循环,如下例:从前有座山,山里有座庙,庙里有个和尚讲故事:“从前有座山,山里有座庙,庙里有个和尚讲故事:‘从前有座山,山里有座庙,庙里有个和尚讲故事……’”像一些用条件选择难以表示的代码,总可以看到循环有1~100这100个数,判断其中的哪些是偶数,依次输出条件选择:if(1%2==0)printf("1 ");if(2%2==0)printf("2 ");if(3%2==0)printf("3 ");if(4%2==0)printf("4 ");……实在

2021-08-22 09:59:37 114

原创 局域网(net)

题目描述某个局域网内有n(n≤100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示i,j之间连接的畅通程度(f(i,j)≤1000),f(i,j)值越小表示i,j之间连接越通畅,f(i,j)为0表示i,j之间无网线连接。现在我们需要解决回路问题,我们将除去一些连线,使得网络中没有回路,并且被除去网线的Σf(i,j)最大,请求出这

2021-08-18 18:55:13 305

原创 c++入门day4

今天就刷刷题吧!if练习题目描述期末考试成绩出来了,我们把它分下类:90~100为"Great"70~89为"Good"60~69为"Average"0~59为"Poor"输入格式一行一个整数,为分数输出格式输出对应的等级样例输入样例77输出样例Good数据范围与提示分数保证在0~100范围内注:一道水题,练练手#include<cstdio>#include<cmath>int main(){ int a; scanf("%d",&a

2021-08-17 09:59:33 330

原创 c++入门day3

介绍了变量与占位符,今天来补充一下顺序结构,开始选择结构。保留几位小数printf("%.6lf",M_PI);以上是保留6位小数下的园周率,C++系统默认的圆周率只有48位。三种取整方式ceil floor round,三种取整方式。(1)ceil是向上取整,即时3.90->4,2.000004->3;(2)floor是向下取整,即时3.90->3,2.000004->2;(3)round是四舍五入,即时3.90->4,2.000004->2;其实也

2021-08-16 11:18:52 230

原创 c++入门day2

昨天介绍了c++的输出以及换行格式,输入即将来临。c++考试题目99.99%都会存在输入,因为没有输入,就……话说c++提供了两种输入输出方式,见下cin>>"输入处";例如:cin>>>n>>m;scanf("输入处");例如:scanf("%d %d",&n,&m);n,mn,mn,m是你定义的变量名,变量有以下几种形式:intintint:整数型doubledoubledouble:双精度浮点型floatfloatfloa

2021-08-15 11:38:33 127

原创 最短路Dijkstra算法强化版

#include<bits/stdc++.h>typedef long long ll;const ll MAXN=15e5;using namespace std;struct edge{ ll to,val;};bool operator<(const edge&a,const edge&b){return a.val>b.val;}vector<edge>G[MAXN];ll n,m,s,t,x,y,w,dis[MAXN];boo

2021-08-15 11:11:52 83

原创 c++入门day1

c++是一门十分NB的语言,原因在于它有奖,银牌强基计划最高条约,这是五大学科竞赛中唯一的,金牌只要进了国家集训队,报送!!!(清北再也不是梦想)认识c++,首先要和这几行代码打交道#include<bits/stdc++.h>using namespace std;int main(){ return 0;}在此直接用了万能头文件 #include<bits/stdc++.h> ,没办法,太方便。而且综合纪念赛事来看一般不会被Ban。这是学习c++的基础框架

2021-08-14 21:52:34 134

原创 To:每一个csp选手

祝愿每一位大佬csp出成绩,洛谷红名金钩!!!保佑:#include<bits/stdc++.h>不被banbanban第一轮不会爆冷出局数据让人水些分,尤其是模拟或搜索优化题一等奖!!!#include<bits/stdc++.h>using namespace std;int main(){ while(1){ if(你未来看此篇博客)break; RP++;RP++;RP++; } return 0;}...

2021-08-09 21:21:45 171

原创 奇怪的电梯

题目描述大楼的每一层都可以停电梯,而且第 iii 层楼 (1<=i<=N)(1<=i<=N)(1<=i<=N) 上有一个数字 K[i](0<=K[i]<=N)K[i](0<=K[i]<=N)K[i](0<=K[i]<=N) .电梯只有四个按钮:开、关、上、下。上下的层数等于当前楼层上的那个数。当然,如果不能满足要求,相应的按钮就会失灵。例如:555层的大楼其数字分别为 333 333 111 222 555 。从111楼开始,按“上

2021-08-02 21:47:34 179

原创 CD题解及思路

一道简单的 0/10/10/1 背包,输出sum的数值十分简单,即是 0/10/10/1 背包问题,注意初始化为 000 (细节!!!),而在状态转移比大小中不可以直接使用 max⁡\maxmax ,因为这无法更新 pre 数组的值,也无法输出答案。然而对于输出序列,主要思路与输出最大上升子序列一致。首先,我们可以使用一个 pre 二维数组来存储状态。如果 pre[i][j] 等于1,则表示当前CD已选择,自然,是说前 i 张CD进行 j 分钟时选择了该CD。反之 pre[i][j] 等于 000

2021-07-25 10:48:12 189

原创 P1174 打砖块

简单读一下题目,发现处理每列打砖个数,奖励以及状态方面难以处理,果不其然是道蓝题,心中平衡了许多。之后联想到线性dp,敲好了代码。联想看到输入格式,最开始可能直接搜索,然后就爆了。其实,记忆化搜索和与动态规划实现思想都一样,所以搜索大佬在TLE\text{TLE}TLE时也可以勉为其难地去想象用动态规划来实现。说到动态规划,不妨联想到背包,可是如若用0/1背包,说到无后效性,那么子弹数量又驳回了你坚定的思路,于是想到将子弹数定义进入状态,那就是线性动态规划。至此,我们想到使用线性动态规划,欲知思路

2021-07-25 10:40:13 80

原创 对称二叉树

这是蒟蒻认真写的第一篇题解,如有欠缺,请理解题目描述一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树:1、二叉树;2、将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等。下图中节点内的数字为权值,节点外的ididid表示节点编号。现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数最多。请输出这棵子树的节点数。注意:只有树根的树也是对称二叉树。本题中约定,以节点为TTT子树根的一棵“子树”指的是:节点TTT和它的全部后代节点构成的二叉树。输

2021-07-16 21:29:34 301 1

原创 查找二叉树(tree_a)

题目描述已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。例:如图二叉树的数据文件的数据格式如下:输入格式第一行n为二叉树的结点个数,n≤100;第二行x表示要查找的结点的值;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。输出格式一个数即查找的结点编号。样例样例输入7155 2 312 4 510 0 029 0 015 6 78 0 023 0 0样例输出4代码时间#include<bit

2021-07-16 16:27:18 521

原创 单词查找树

题目描述在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都画出与单词列表所对应的单词查找树,其特点如下:1.根结点不包含字母,除根结点外每一个结点都仅包含一个大写英文字母;2.从根结点到某一结点,路径上经过的字母依次连起来所构成的字母序列,称为该结点对应的单词。单词列表中的每个单词,都是该单词查找树某个结点所对应的单词;3.在满足上述条件下,该单词查找树的结点数最少。4.例如图3-2左边的单词列表就对应于右边的单词查找树。注意,对一个确定的单词列表,

2021-07-16 16:22:05 521

原创 随机数生成

大家都知道随机数生成函数randrandrand只不过……它简直又不随机又小,下面展示一下#include<bits/stdc++.h>using namespace std;int main(){ int n=rand()%21093801; for(int i=1;i<=n;i++){ cout<<rand()%515156315<<endl; } return 0;}虽然十分方便,但是如果用它来出数据,那么……就怕被喷太水,于是乎

2021-07-15 21:22:06 55

转载 BFS(图论)

BFS 全称是Breadth First Search,中文名是宽度优先搜索,也叫广度优先搜索。是图上最基础、最重要的搜索算法之一。所谓宽度优先。就是每次都尝试访问同一层的节点。 如果同一层都访问完了,再访问下一层。这样做的结果是,BFS 算法找到的路径是从起点开始的 最短 合法路径。换言之,这条路所包含的边数最小。在 BFS 结束时,每个节点都是通过从起点到该点的最短路径访问的。算法过程可以看做是图上火苗传播的过程:最开始只有起点着火了,在每一时刻,有火的节点都向它相邻的所有节点传播火苗。实现

2021-07-15 20:29:59 2608

转载 DFS(图论)

DFS 全称是 Depth First Search,中文名是深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先,就是说每次都尝试向更深的节点走。该算法讲解时常常与 BFS 并列,但两者除了都能遍历图的连通块以外,用途完全不同,很少有能混用两种算法的情况。DFS 常常用来指代用递归函数实现的搜索,但实际上两者并不一样。有关该类搜索思想请参阅 DFS(搜索).DFS 最显著的特征在于其 递归调用自身。同时与 BFS 类似,DFS 会对其访问过的点打上访问标记,在遍历图时跳过已打过标记的点,以确

2021-07-15 18:15:40 976

原创 求后序遍历

题目描述输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。输入格式共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。输出格式一行,表示树的后序遍历序列。样例样例输入abdecdbeac样例输出debca代码时间#include<bits/stdc++.h>using namespace std;char a[30],b[30];int n;void tree(char a[],char b[]){

2021-07-15 18:15:15 101

原创 有序表的最小和

题目描述给出两个长度为 n 的有序表 A 和 B,在 A 和 B 中各任取一个元素,可以得到 n*n 个和,求这些和中最小的 n 个。输入格式第 1 行包含 1 个整数正 n(n≤400000)。 第 2 行与第 3 行分别有 n 个整数,各代表有序表 A 和 B。一行中的每两个整数之间用一个空格隔开,大小在长整型范围内,数据保证有序表单调递增。输出格式输出共 n 行,每行一个整数,第 i 行为第 i 小的和。 数据保证在 long long 范围内。样例【输入样例】31 2 52 4

2021-07-15 11:36:58 398 1

原创 关于最短路的算法大整合

直接上代码未完待续……#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll inf=0x3f3f3f3f3f3f3f3f;ll n,m,e[1005][1005],x,y;int Floyd(ll x,ll y){ int dp[1005][1005]; for(int i=1;i<=1005;i++){ for(int j=1;j<=1005;j++){ dp[i

2021-07-14 21:56:49 62

原创 原来高精度还是那么简单

高精度c++用户一直以来有个烦恼……由于int存储空间太小,市面上一直流传着这样一句:十年OI一场空,不开long long见祖宗!!!虽说如今的大赛很少涉及到高精度,但是高精度作为c++用户的一个必备技能,只能乖乖地补一补了。什么方法可以在短时间内提高高精度,答案很粗暴——把之前做过的每一道题都加一个高精度高精度加法1.1 加法原理中国人都知道:满十进一1.2 实现思想我们都知道,c++中一个数组可以存储很多元素,实在不行,还可以用到map,可是,其实string最好用,简单介绍一下stri

2021-07-10 21:35:22 909 2

原创 搜索的里程碑

还记得刚开始学搜索只知道搜索是个很高级的东东然后本蒟蒻就开始了深度优先搜索的学习dfs是递归的进化版,这对于递归菜鸟的我来说是地狱,强行理解dfs的思路,盯着二叉树模拟的搜索路径发现dfs很暴力,基本上只能依靠剪枝来进行简单的优化而剪枝……又是一场思维的碰撞,于是就叮嘱自己先把dfs基础思路联系扎实下列展示一下dfs的基础模版#include<bits/stdc++.h>using namespace std;int dir[8][2]={{1,0},{-1,0},{0,1},{

2021-07-07 16:58:15 55

原创 铺砖2

题目描述对于一个2行N列的走道。现在用1 * 2,2 * 2的砖去铺满。问有多少种不同的铺法?输入格式整个测试有多组数据,请做到文件结束。每行给出一个数字N,0≤N≤250输出格式输入多少行,输出就多少行每行对应2*n的总铺法样例样例输入2812100200样例输出317127318451004001521529343311354702511071292029505993517027974728227441735014801995855195223534251代码时间

2021-07-06 21:57:23 562 1

原创 相似字符串

题目描述自动AC机的开发已经到了测试阶段,郭老师想出了一种奇妙的测试方法。郭老师定义两个字符串和相似,当且仅当满足下列条件之一:1、和逐字符相等2、把分成长度相等的两半和,把也分成长度相等的两半和,满足下列条件之一:(1) 和相似且和相似(2) 和相似且和相似现在自动AC机已经判断字符串和字符串相似,请你来验证是否正确。输入格式第一行 个整数 ,表示测试数据的组数。每组测试数据两行,其中:第一行 个字符串 。第二行 个字符串 。数据保证每组测试数据的两个字符串长度相。输出格式

2021-07-04 11:16:30 159

原创 图的基础

图首先推荐一个图的超实用网站Graph Editor简单自学了一下图……关于图的搜索#include<bits/stdc++.h>using namespace std;int n,m,a,b,c,ans=2147483647,P[1005][1005];bool vis[1005];void dfs(int x,int sum){ if(sum>ans)return; if(x==n){ ans=sum; return; } for(int i=1;i&

2021-06-27 10:20:48 48

原创 关于排序那些事

排序顾名思义,排序是对一堆无序数的处理,及一些基础操作,本篇博客对排序的几种方式进行一个整理。No.1 sort排序#include<cstdio>#include<algorithm>using namespace std;long long int a[1000005];int main(){ long long int n; scanf("%lld",&n); for(int i=1;i<=n;i++)scanf("%lld"

2021-06-26 10:19:13 90

原创 关于背包那些事

几类背包问题1.0/1背包顾名思义,既是指一个背包,指定一些物品质量(体积)与价值(每种物品只有一个),求出可装的最大价值。每种物品有0(不选)、1(选)两种状态。而基本思路为dp:已知条件有第n个物品的重量w[i],价值c[i],以及背包的总容量v简单分析假设当前已经处理好了前i-1个物品的所有状态,那么对于第i个物品,当其不放入背包时,背包的剩余容量不变,背包中物品的总价值也不变,故这种情况的最大价值为dp[i-1][j];当其放入背包时,背包的剩余容量会减小,背包中物品的总价值会增大 ,故

2021-06-20 13:45:38 66

原创 五子棋盘

题目描述小 A 和小 B 在下五子棋。五子棋是在一个由网格构成的棋盘内进行的。网格有 15 行 15 列,共有 225 个交叉点。小 A 先手执黑棋,小 B 后手执白棋。两人轮流下棋,每次下棋都将一个自己的棋子放在棋盘上一个空白的交叉点上。然而,由于小 A 和小 B 都不知道五子棋的胜利条件,所以即使有一方已经胜利了,他们仍然会继续下棋。现在想请你帮忙分析一下,所下的棋局是在第几步结束的。当然,也有可能他们最终仍然没有分出胜负,这时请判定他们平局。五子棋的胜利条件是这样的:当同一行或同一列

2021-06-19 11:31:07 696

原创 循环数

题目描述循环数是那些不包括0这个数字的没有重复数字的整数 (比如说, 81362) 并且同时具有一个有趣的性质, 就像这个例子:如果你从最左边的数字开始 ( 在这个例子中是8) 数最左边这个数字到右边(回到最左边如果数到了最右边),你会停止在另一个新的数字(如果没有停在一个不同的数字上,这个数就不是循环数).就像: 8 1 3 6 2 从最左边接下去数8个数字: 1 3 6 2 8 1 3 6 所以下一个数字是6.重复这样做 (这次从“6”开始数6个数字) 并且你会停止在一个新的数字上: 2 8 1

2021-06-19 11:07:26 688

原创 挂饰

引子数据太多的版本恶心题目描述JOI君有N个装在手机上的挂饰,编号为1…N。 JOI君可以将其中的一些装在手机上。JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩。每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上。直接挂在手机上的挂件最多有1个。此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示。如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数。JOI君想要最大化所有挂饰的喜悦值之和。注意不必要将所有的挂钩都挂上挂饰,而且一个都不挂也是可以的。输入

2021-06-19 10:09:12 104

最全国外创意精美绝伦PPT模板.pptx

PPT素材,十分的优秀

2021-07-10

概念图参考模板.ppt

PPT素材,十分的优秀

2021-07-10

并列、包含、总分关系PPT图表.ppt

PPT素材,十分的优秀

2021-07-10

百页国外创意精美绝伦PPT图表.ppt

PPT素材,十分的优秀

2021-07-10

PPT图表应用及形象表达2013.pptx

PPT素材,十分的优秀

2021-07-10

180页国外创意精美绝伦PPT模板.pptx

PPT素材,十分的优秀

2021-07-10

151页国外创意精美绝伦PPT图表-3.pptx

PPT素材,十分的优秀

2021-07-10

空空如也

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

TA关注的人

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