自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【dijkstra求MCFC】

使用势能函数解决问题。因为边权为负时无法使用 dijkstra 求最短路,所以我们要使最短路不被改变的情况下使边权变为正。不能直接加边,因为路径的边数不同。可以证明当 h[i]=dis[i] 时 dis’[t]=dis[t]-h[t]。当有反向边加入时依然成立。那么先用一次 SPFA 求出原始 dis 即可。code:#include<queue>#include<cstdio>#include<cstring>#include<iostream

2022-01-06 21:18:52 264 2

原创 此博客已弃用

RT,有需要请移至博客园

2021-10-19 16:11:21 118

原创 [CEOI2018]Global warming

[CEOI2018]Global warmingLinkETHANK大佬已经写过题解,但是对于没有想过来的friends可能会有点迷糊,故以此帖加以补充。通过读题可知我们需要修改的是一个连续区间 [$ l ,,, r ],由于增加值相等,所以区间内的元素相对大小不改变,也就是说,这次修改只会对[] ,由于增加值相等,所以区间内的元素相对大小不改变,也就是说,这次修改只会对 [],由于增加值相等,所以区间内的元素相对大小不改变,也就是说,这次修改只会对[ r+1 ,,, n $] 造成影响。但修改的范

2021-06-13 23:12:40 210

原创 「高手训练」手机游戏(monster)

前言坑点还是蛮多的,不过既然自己做出来了就总结一下吧!题目描述明明的手机上有这样一个游戏,一排nnn个怪物,每个怪物的血量是mim_{i}mi​ 。现在明明可以射出 kkk个伤害均为ppp的火球,当某个火球射到第iii个怪物,除了这个怪物会掉血以外,它左边的第 j个怪物 (jjj ≤\leq≤ iii),也会遭到max(0,p−(i−j)2)max(0,p-(i-j)^2)max(0,p−(i−j)2)的溅射伤害。当某个怪物的血量为负的时候,它就死了,但它的尸体依然存在,即其他怪物不会因为它死

2021-05-12 00:18:23 246

原创 [THUPC2017] 玩游戏 解题报告

前言没有在题解区发现类似做法Link大部分题解都是从大到小枚举,但是从小到大也有一种做法证明,对于任意xxxϵ\epsilonϵ{0,1,2,…,∑i=1ni\sum_{i=1}^ni∑i=1n​i},都有∑i=1ki\sum_{i=1}^ki∑i=1k​i - rrr=xxx其中,k≤\leq≤n , rrrϵ\epsilonϵ{0,1,2,…,∑i=1ki\sum_{i=1}^ki∑i=1k​i}设bbb满足b+1b+1b+1≤\leq≤kkk,且∑i=1bi\sum_{i=1}^b

2021-04-21 23:17:35 159

原创 解题报告 一姬的三倍满自动机

题目描述一姬想要设计一种机器,使自己不断地和牌上分,但是她觉得麻将是可以让四个人都得到快乐的,至少她不希望雀魂玩家减一这种事情的发生。因此她不希望有人被飞,所以她想要你设计一款三倍满自动机,使得自己在闲家和牌收益最大又不会让人被飞。由于她只和三倍满,所以做出决策以及提高打点是十分重要的,在自动机中,这需要解决以下问题实现:给定n个非负整数 a1a_1a1​,a2a_2a2​,a3a_3a3​,a4a_4a4​… ,给定一个非负整数x,求a[i]a[i]a[i]⨁\bigoplus⨁a[j]a[j]a

2021-04-17 17:01:41 120

原创 CF909C 解题报告

思路观察题目,我们可以发现当前这一层的位置选择只与上一层的位置和代码种类有关,那么我们可以设dp[i][j]表示第i层间隔为j个时的方案总数,同时用一个now来记录到第i层f的数量,表示最多能够间隔的距离那么最终答案就是∑i=1now\sum_{i=1}^{now}∑i=1now​dp[n][i]考虑两种状态1.第i-1层为f此时当前位置只能由dp[i-1][j-1]得来,...

2020-12-29 12:58:03 128

原创 CSP+NOIP总结

CSP普及:自认为这次考的是很不理想的,因为平时的习惯,连桶排这种基础算法都没有掌握,排序到考前为止只会sort,这就导致了与省一无缘T3直接就放弃了,当时只想着T4如果能打出来就有省一了且T4也分析错误了,没有想到分类来讨论从上往下走和从下往上走的情况,以至于只打了爆搜,10tps如果考前能够再老老实实复习一遍基本的排序和DP,也许结果就大不一样了这次也是给自己敲响了警钟,因为如果还不能调整好状态的话跟别人的差距可能就越来越大了提高:T1直接放弃然后再打T2和T3的暴力事实证明以上策

2020-12-06 00:04:33 884

原创 随堂思维训练 题解

总所周知思维题=DPProblem 1雇佣计划    题目描述一位管理项目的经理想要确定每个月需要的工人,他当然知道每月所需的最少工人数.当他雇佣或解雇一个工人,会有一些额外支出.一旦一个工人被雇佣,即使他不工作,他也将得到工资.这位经理知道雇佣一个工人的费用,解雇一个工人的费用和一个工人的工资.现他在考虑一个问题:为了把项目的费用工致在最低,他将每月雇佣或解雇多少个工人?输入格式第1行:1个整数n(n<=12),表示月数。第2行:3个用空格分开的整数h, s, f,分别表示雇佣一个工

2020-11-14 22:21:09 333

原创 学习笔记--插入排序

sort垃圾滚粗1.思路,将当前元素插入第一个大于等于它的元素的前面,如果没有,那么他是最大的,直接放在队伍后面,可用lower_bound实现二分查找2.时间复杂度良好,空间复杂度一般,稳定排序模板:#include<cstdio>#include<iostream>#include<algorithm>using namespace std;int n,x,a[1000005];int main(){ scanf("%d",&n); f

2020-11-09 14:00:32 86

原创 学习笔记--桶排序

sort垃圾滚粗1.思路,将元素全部放在一个装有各种值的数量的数组里面,再根据数组中的元素个数输出当前元素的值2.时间复杂度优异,空间复杂度高,稳定排序模板:#include<cstdio>#include<iostream>using namespace std;int n,x,a[1000005],maxn;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&am

2020-11-09 13:52:17 86

原创 数论学习笔记1

1.整除(|)1.定义如果b=a*q1+c(a,b,q1∈\in∈Z\mathbb{Z}Z)且c=0,则b整除a,计做a|b2.性质(1)如果a|b,b|c,则a|c(2)a|b且a|c,等价于a|(bx+cy) (x,y∈\in∈Z\mathbb{Z}Z)(3)设m≠0\neq0​=0,则a|b等价于am|bm(4)设x∈\in∈Z\mathbb{Z}Z,y∈\in∈Z\mathbb{Z}Z满足ax+by=1,且a|n,b|n,那么(ab)|n证明:令a∗*∗s=n,b∗*∗

2020-10-17 16:45:15 193

原创 国庆测试-one Problems Explanation

前言差点一套把我直接送走60+0+0+40=100…Problem 1 数列问题题目描述小明和小红在一起玩游戏,小明觉得现在玩的游戏太无聊了,便给小红出了一道数列问题。数列问题的题目如下:一开始,小明给小红一个只含有数字1的数列,接下来,小红可以对这个数列进行以下操作中的一种操作:· 对序列中已有的一个元素加1.· 复制一个序列中已有的元素到序列的末尾.比如:一开始序列中只有一个元素[1]我们可以选择这个序列中的第一个元素进行第二种操作,即复制操作,这样,这个序列就变成了[1,1]然

2020-10-07 16:57:41 201

原创 “访问“美术馆

前言今天学习了树形DP,用这道练练手传送门初拿到题有些棘手,因为不知道如何表示状态,再仔细一推,发现与树形背包相似,所以我们设dp[now][k]表示以now为根结点时用了time分钟能获得的最大画数如果now是展室,设s为now的画数,k为选取的画数,那么dp[now][5k]=∑k=1sdp[now][5∗k−5]\sum_{k=1}^s{dp[now][5*k-5 ]}∑k=1s​dp[now][5∗k−5]其中,time+5k<=m即:for(int i=1;i<=a[

2020-10-04 22:14:12 111

原创 浅谈树形DP

前言确实很浅树形DP顾名思义,在树上进行的动态规划被称为树形DP,而且往往以一个点为根结点的子树所获得的最大收益为状态,通常从深到浅进行状态转移(树的深度)例题:1.最大独立子集2.树的重心3.树的直径1.最大独立子集Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员愿和直接上司一起参加宴会。输入格式第一行一个整数N。(

2020-10-04 13:25:48 129

原创 膨胀的tyx 题解

前言个人感觉比较有意思的一道题,思路还是挺巧妙的,到了lydd那里就变成中规中矩的题了题目描述由于tyx抱过了这么多大腿,他变得越来越棒棒了,一般的迷宫根本拦不住他。为了治一治他,你决定为他单独定制一款无限迷宫。所谓无限迷宫是指,由一个 的迷宫单元经过无限平铺得到的迷宫,即将无数份迷宫单元平铺在一个二维平面上。定制好以后,你将tyx扔到了迷宫里,不妨假定tyx落在了起点处。出于对无限迷宫的恐惧,tyx想要尽可能逃离这里。那么问题来了,tyx能不能逃到距离起点无限远的地方去呢?输入格式第一行两

2020-09-20 13:48:20 577 1

原创 最长公共上升子序列 输出路径

前言昨天才看懂,寒假时候我也太菜了吧题目描述研究发现,大猩猩的基因序列和人的基因序列只有1.3%的区别,更进一步,不仅仅离人最近的大猩猩和人的基因序列高度近似,就连以打洞为生的老鼠和人的基因序列也有高达95%的相同序列。于是有魔法师提出一个大胆设想,即改变人类的某些特定基因以期产生超级人类。现在,他们要做的第一步是将两种不同生物的基因序列转换成两个整数序列,并试图确定他们的最大公共上升子序列的长度,例如有A序列为4 3 2 1 7 8 9,B序列为7 8 9 4 3 2 1,其最长公共子序列是4

2020-09-20 13:39:30 463

原创 新的开始

前言可恶啊我已经几个月没写博客了刚才查徒步旅行时意外地翻到了某同校大佬的题解,感触挺深的,还是应该要总结啊而且反正不去机房就多写几篇吧题目描述发展采矿业当然首先得有矿井,小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 口矿井,但他似乎忘记考虑的矿井供电问题……为了保证电力的供应,小 FF 想到了两种办法:在这一口矿井上建立一个发电站,费用为 (发电站的输出功率可以供给任意多个矿井)。将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为 。小 FF 希望身为「NewBe_

2020-09-20 13:18:29 99

原创 龙虎斗 题解

前言想到去香港玩的时候在机场看过一部《龙虎斗》的电影233333传送门分析题意,其实就是一个模拟加贪心,因为要两个阵营的气势差最小,所以肯定把我们的工兵放在气势更小的那方阵营更优,把两部分分开枚举,如果气势差比sum小,就更新sum和ans,找出最小的位置就行了于是。。。为什么?明明思路没有问题呀?那是由于忽略了数据范围,在计算乘积时用int会爆掉,所以要用longlonglong longlonglong存可即使这样也只有48分?在计算气势和枚举位置时,其实都可以把分开的两个部分的循环写

2020-08-13 22:05:03 365 3

原创 花生采摘 洛谷P1986题解

前言刚开始还以为是搜索来着23333传送门看似复杂,其实只需要记录下摘每个花生需要的时间,再根据题意从大的花生开始找就行了要找下一个花生的位置,用曼哈顿距离解决,即两个点的横坐标之差加上纵坐标之差(都要用abs),注意,采摘花生也需要1时间单位#include<cstdio>#include<iostream>#include<cmath>#include<algorithm>using namespace std;int n,m,shij

2020-08-08 20:04:10 213

原创 未了 NOI online2 T1题解

前言考试时还以为能骗得点分呢。。。传送门根据题目,不难看出这是一道贪心题我们把所有的魔法从高处往地处的使用,再求一个前缀和,就是使用到该魔法时西西弗斯需要用的年份,如果最高的魔法( 它的前缀和就是所有魔法都使用后西西弗斯需要花费的时间)使用了之后还是不能让西西弗斯大于tit_iti​年到达,就输出-1,反之,就在所有魔法中查找注意:本题需要用到二分查找(其实就是个板子。。。)特殊:如果西西弗斯按照没有阻拦的速度都无法在tit_iti​年内到达山顶,直接输出0#include<cstdio

2020-08-07 21:31:30 131

原创 传球游戏 题解

前言emmmmmmmm要说什么好呢传送门发现很多题解给出的过程太复杂了,因为一个人只能从左边或右边得到球,所以其实你只用理解为每个人得到球的方案数是他左边的人的方案数+右边的人的方案数就行了鸭~设一个二位数组dp[i[]j]来表示第i次传球时第j个人可能得到球的方案数,不难得出状态转移方程为dp[i][j]=dp[i−1][j+1]+dp[i−1][j−1]dp[i][j]=dp[i-1][j+1]+dp[i-1][j-1]dp[i][j]=dp[i−1][j+1]+dp[i−1][j−1]但

2020-08-07 21:13:44 332

原创 洛谷P5057简单题 题解

前言这是我A的第一道省选题!可它的难度是普及/提高-传送门题目大意:给定一个初始为0的序列,可以让某一段区间的数字反转,也可以询问某个点的值学过树状数组的同学可能看出来了,这是一道树状数组区间修改,单点查询的变式,还没有学过的同学可以看看这篇博客树状数组路人:你这不是骗阅读量吗我:略略略略略略略略略略但是要怎么反转一个数的值呢?用异或(这个符号:^)异或的作用是当两个数值不同时为1,否则都为0如:0^0=00^1=11^0=11^1=0不难看出,当0异或1时为1,1异或1时为0

2020-08-07 20:40:52 232

原创 最短路总结--模板及例题

前言最短路是图论中的一种常见题目,通常用邻接表和邻接矩阵来储存,用邻接矩阵存可能会因为空间超大而不可取,但更加方便,具体选择要根据题目要求来1.Floyd算法弗洛伊德(floyd)算法是一种用来解决任意两点之间的最短路的算法,以动态规划的思路来进行遍历我们定义一个数组dp[k][i][j]来表示第i个点到第j个点的小于等于点k标号的中转点时的最短路,如果从i到k再从k到j的两条路之和比目前从i到j的最短路更短,那么就更新dp[k][i][j]如 for(int k=1;k<=n;k+

2020-07-29 21:21:17 691

原创 初涉树状数组

前言仍然是一种数据结构,实用性在线段树之下(一点点),难度在线段树以下。什么是树状数组?全称为Binary Indexed Tree (BIT),是一种能以O(lognlog_nlogn​)的时间复杂度解决区间修改或查询问题的数据结构一个树状数组如下图所示如图,我们可以看出每一个BIT数组的元素的叶节点个数就等于此数二进制下的最低位的1的位置,设这个位置为lowbit(x),则可以用x&-x来得到这个数例如:lowbit(22)=222的二进制原码011010,正数的补码等于它的

2020-07-27 21:07:47 266 1

原创 NOIP模拟赛2

前言花了1个多小时搞T1,因为没有写好判断导致错误,然后又转去做T3,本来想出了两重循环但是脑子秀逗了准备手推打表代码。。。超级悲惨爆零33名滚粗满分:100+100+100+100=400得分:0+0+0+0=0T1A. 字符串的展开(expand.cpp)题目描述在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数字串替代其中的减号,即,将上面两个子串分

2020-07-25 20:37:24 419

原创 HASH表

前言字符串什么的最玄学了什么是HASH表当我们要查询几个数组里的元素时,往往用到朴素算法O(n)O(n)O(n)会超时,而二分虽然时间复杂度为O(logn)O(log_n)O(logn​)又只能在数组有序的情况下使用,所以在这种时候,我们就需要用到hash表Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相

2020-07-23 21:48:16 245

原创 NOIP模拟赛1

前言感觉并不难,但是时间有点短,细节注意的不够,加上出了点玄学错误,25名滚粗总分:100+100+100+100=400得分:100+10+0+10=120Count一道map板子题,忘了map里面是红黑树自动排序,最后剩了20分钟因为担心没排序还去写了两个结构体结果还没写完。。。题目#include<cstdio>#include<map>#include<iostream>#include<algorithm>using names

2020-07-22 19:30:36 173

原创 STL模板

前言背就完了,奥里给!什么是STLSTL(Standard Template Library),意为标准模板库,是c++提供的一系列"容器",这里只说其中的vector,priority_queue,map,pair,set五种(实际为四种,因为pair在map的结构里),其中,除了setsetset外都有下标访问和迭代器访问两种方法Vectoe又名变长数组,长度没有固定约束,随着需要的值而变化,在要用到多个数组或结构体时可 以用到.需要用到头文件#include< vector&g

2020-07-21 22:05:40 235

原创 Flood Fill(洪水填充)

前言这道题很好的展现了中华汉字博大精深的特点题目题目描述N 个方块排成一排,第 i 个颜色为 Ci 。定义一个颜色联通块 [l,r] 当且仅当 l 和 r 之间(包括l,r)所有方块的颜色相同。 例如 [3,3,3] 有 1 个颜色联通块,[5,2,4,4] 有 3 个颜色联通块。 现在你可以选定一个起始位置 p ,每次将 p 所在颜色联通块的所有方块颜色改成另一种。这个操作可能将两个颜色联通块合并成一个。问最少需要多少步,能让 [1,n] 变成一个颜色联通块。输入格式输入的第一行包含一个正整数

2020-07-19 22:03:10 217

原创 分离与合体

题目描述经过在机房里数日的切磋,LYD 从杜神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试……杜神牛造了 个区域,他们紧邻着排成一行,编号 。在每个区域里都放着一把 OI 界的金钥匙,每一把都有一定的价值,LYD 当然想得到他们了。然而杜神牛规定 LYD 不能一下子把他们全部拿走,而是每次只可以拿一把。为了尽快得到所有金钥匙,LYD 自然就用上了刚学的分离与合体特技。一开始 LYD 可以选择 中的任何一个区域进入,我们不妨把这个区域记为 。进入后 LYD 会在 区域发生分离,从而分离成两

2020-07-19 20:39:45 238

原创 区间DP小结

前言是个毒瘤玩意儿区间DP属于线性dp的一种基础做题思路就是从长度为1的区间开始求出价值,然后再用长度为1的区间的价值求出长度为2的区间的价值…最后求出长度为n的区间的结果,算出答案。有时候需要用到搜索来辅助做题或者骗分在做题时要注意到题目的阶段,状态,决策,并且把题目转换为基础的使用lll,rrr左右端点求出状态的题型例题这里石子合并这道题符合区间dp的做法,首先定义一个变量len来表示区间的长度,然后用i来枚举dp数组的左端点,用前缀和记录每个子串的代价。再用一

2020-07-19 20:01:00 127

原创 最多能完成排序的块题解

前言没有题目数组arr是[0, 1, …, n - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?输入格式共两行。第一行为正整数n,代表数组有n个数。第二行为n个整数。输出格式最多能将数组分成的块数。样例样例1输入55 4 3 2 1样例1输出1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成 [5, 4], [3, 2, 1] 的结果是 [

2020-07-01 13:42:38 182

原创 循环比赛题解

前言这道题一本通上有,但是那上面while的写法好像会炸,所以写一个递归的做法.题目链接:循环比赛观察样例,我们可以发现每2的n次方的方阵总会有右上与左下相同,左上与右下相同,并且右边的方阵对应位置的元素等于左边的对应位置的元素+当前左边方阵的边长所以我们可以每次构建从a[i][j]向下(i+1,j),向右(i,j+1),向右下(i+1,j+1)的元素,当循环的次数等于m时就返回。代码:#include<cstdio>#include<cmath>using na

2020-07-01 13:25:00 405

原创 挂钩题解

前言这道挂壁钩是一道dp好题! 假期第三篇题解题目描述JOI君有N个装在手机上的挂饰,编号为1…N。 JOI君可以将其中的一些装在手机上。JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩。每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上。直接挂在手机上的挂件最多有1个。此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示。如果JOI君很讨厌某个挂饰,那么这个挂饰的喜悦值就是一个负数。JOI君想要最大化所有挂饰的喜悦值之和。注意不必要将所有的挂钩都挂上挂饰,而且一

2020-06-20 16:53:00 343 2

原创 花园橱窗布置(路径保存)

前言假期第二篇题解题目描述魔法世界的人们对艺术的追求是无止境的,我们可以从路边花店的橱窗设计就可以看出来。假设以最美观的方式布置花店的橱窗,有F束花,每束花的品种都不一样,同时,至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,并从左到右,从1到V顺序编号,V是花瓶的数目,编号为1的花瓶在最左边,编号为V的花瓶在最右边,花束可以移动,并且每束花用1到F的整数惟一标识,标识花束的整数决定了花束在花瓶中列的顺序,即如果I<J,则花束I必须放在花束J左边的花瓶中。例如,假设杜鹃花的标识数为

2020-06-20 16:24:47 264 1

原创 低买题解

前言假期第一篇题解题目题目描述给定一段时间内股票的每日售价(正16位整数)。你可以选择在任何一天购买股票。每次你选择购买时,当前的股票价格必须严格低于你之前购买股票时的价格。编写一个程序,确定你应该在哪些天购进股票,可以使得你能够购买股票的次数最大化。例如,下面是一个股票价格时间表:Day 1 2 3 4 5 6 7 8 9 10 11 12Price 68 69 54 64 68 64 70 67 78 62 98 87如果每次购买都必须遵循当前股票价格严格低于

2020-06-20 13:27:00 500

空空如也

空空如也

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

TA关注的人

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