自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cf1625c Road Optimization

Problem - C - Codeforces题目大意是说在一段长度为l的公路上,有n个站点,每个站点有限速,在站点i到站点i+1的区间上,每公里需要花费a[i]min;现在最多删除k个站点,问走过这条公路的最短时间分析:用d[i]和a[i]分别存放站点位置和限速,dp[i][j]表示前i个站点中经过了j个站点的最小时间(即删除了i-j个站点)可得状态转移方程:dp[x][j + 1] = min(dp[x][j + 1], dp[i][j] + a[i] * (d[x] - d[i]));注意要求最小值

2022-07-12 17:48:48 242 1

原创 牛客小白月赛53 D Breezing

题目链接:D-Breezing_牛客小白月赛53勇敢的牛牛得到了一个数列 B,他认为这个数列不够可爱,于是他决定重新创造一个数列 A,规则如下。现在,我们称数列 A 的可爱值 k 为「数列 A 中相邻两个数差的绝对值的和」,求最大的可爱值。第一行,一个正整数 n(2≤n≤10^5)第二行,n 个正整数,表示数列 B 中的数,每个数在1到10^4之间输出描述:一行,一个非负整数表示最大的可爱值 k。示例1811 45 14 19 1 9 8 10输出149示例

2022-07-08 21:24:26 282

原创 换根树形动态规划

距离和分析:对于整个二叉树,我们用 size[i] 表示以 i 号点为根的子树中有多少个点,f[i] 表示考虑以 i 号点为根的子树,i 号点到子树中其他所有点的距离和。现在我们考虑换根,用v[i]表示i点的父亲变成子树的贡献;比如初始情况下,根节点为1,i是其子节点,现在i变为根节点,对于此时节点为1的顶点,现在他是i的儿子,那么此时以1为根的子树的贡献为v[i]=f[1]-f[i]-size[i]+n-size[i]类比到根从x变为它的儿子y; v[y]=v[x]+f[x]-f[y]-size[y]

2022-07-08 08:53:07 165

原创 树形动态规划问题

统计人数 dfsbfs没有上司的舞会dfsbfs新的背包 没有上司的舞会2

2022-07-06 16:26:44 136

原创 区间动态规划问题

学习动规的第二篇笔记 (≖ᴗ≖)✧要把两堆石子合并成一堆石子,一定存在一个分界线 x,使得两堆石子中的一堆是初始第 1 堆到第 x 堆石子合并得到的结果,另一堆是初始第 x + 1 堆到第 n 堆石子合并得到的结果。那么f[l][r]就等于前一部分合并需要的代价加上后一部分合并需要的代价加上这两部分合并需要的代价,两部分合并需要的代价也就是a[l]到a[r]的总和;然后直接递归处理就可以了可以用前缀和求一下a[l]到a[r]的和,另外,由于f[l][r]在本题中被多次计算,所以要再使用记忆化数组处理

2022-07-04 22:39:20 116

原创 cf 1673C Palindrome Basis(dp)

题目链接:Problem - C - Codeforces题意是说给你任意一个数n,用回文数凑出n ,问有多少种凑出n的方法先预处理一下40000以内的回文数,存入vector中剩下的就是一个完全背包模型啦(这篇有讲背包嗷 →动态规划背包问题用dp[i]表示数字i满足条件的拆分数,对于num中的数字v;dp[i]=dp[i]+dp[i-v]...

2022-07-04 12:52:01 136

原创 动态规划背包问题

关于背包问题的学习笔记例题:考虑前i个物品,总体积为j时分为两种情况: 第i个物品没取,问题变成了考虑了前 i−1个物品,总体积为j时的情况; 第i个物品取了,问题变成了考虑了前i −1个物品,总体积为j-v[i]时的情况; 状态:用f[i][j]表示考虑了前i个物品,总体积为j时的最大收益。转移: f[i][j]=max(f[i−1][j],f[i−1][j−v[i]]+w[i]),分别对应第i个物品没取和取了两种情况。根据状态转移方程写出了这样的代码:在这个写

2022-07-04 10:10:54 288

原创 CF1617B Madoka and the Elegant Gift、CF1654C Alice and the Cake、 CF1696C Fishingprince Plays With Arr

记录一些一开始没想到正解的氵题Madoka and the Elegant GiftProblem - 1647B - Codeforces 题目大意是说图中最大的黑色矩形区域没有交叉的就输出yes,否则输出no一开始看到这个题还想着用bfs搜索一下,找到每个1区域的最左、最右、最上、最下的位置,然后判断这个区域里是否有0,但是这样的话太复杂了,不像是一个1200分的题的做法然后发现是把矩形细化,找每个2*2矩形,如果有任何一个2*2矩形中含有3个1,一个0,就不符合题意,输出no,否则输出yes比较简单

2022-06-28 09:08:14 186

原创 英语常用词汇

收集了一些自己看一眼没有立刻反应过来的词汇palindromic 回文indice (index的复数)指数,目录,索引multiple 大量的adjacent 相邻的sequence 顺序,次序pros 赞成者cons 反对者inversion 相反,倒置,反转odd 奇数even 偶数respectively 分别,各自alphabet 字母表,基本要素,初步,入门prefix 前缀optimal 最佳的,最适宜的acyclic 无环的vertex 顶点column 列row 行rook 车(国际象棋)

2022-06-26 22:11:36 188

原创 P3379 【模板】最近公共祖先(LCA)

如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。第一行包含三个正整数 N,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来 N-1 行每行包含两个正整数 x, y,表示 x 结点和 y 结点之间有一条直接连接的边(数据保证可以构成树)。接下来 M 行每行包含两个正整数 a,b,表示询问 a 结点和 b 结点的最近公共祖先。输出包含 M 行,每行包含一个正整数,依次为每一个询问的结果。输入 #15 5 43 12 45 11 42 43 23 51 24 5

2022-06-07 10:18:27 205

原创 两人三足(一个超简单的题)

记录一下自己的憨憨错误当时看到这题直接用前缀和求天数,然后直接写循环找最优解然后wa o(╥﹏╥)o然后发现这居然有负数呜呜呜哇哇哇于是再加个循环倒着更新一遍AC代码:#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <cstring>#include <iostream>#include <string>#include <...

2022-05-15 10:32:02 143

原创 P3373 【模板】线段树 2(线段树)、(分块)

题目描述如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上x 将某区间每一个数加上x 求出某区间每一个数的和 输入格式第一行包含三个整数 n,m,p分别表示该数列数字的个数、操作的总个数和模数。第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来 m 行每行包含若干个整数,表示一个操作,具体如下:操作 1: 格式:1 x y k 含义:将区间 [x,y]内每个数乘上 k操作 2: 格式:2 x y ..

2022-05-05 21:09:04 238

原创 蓝桥杯 受伤的皇后(dfs)

题目描述有一个n \times nn×n的国际象棋棋盘(nn行nn列的方格图),请在棋盘中摆放nn个受伤的国际象棋皇后,要求:任何两个皇后不在同一行。 任何两个皇后不在同一列。 如果两个皇后在同一条 45 度角的斜线上,这两个皇后之间行号的差值至少为 3 。请问一共有多少种摆放方案。输入描述输入的第一行包含一个整数nn。其中,1≤n≤10。输出描述输出一个整数,表示答案。输入输出示例:运行限制最大运行时间:1s 最大运行内存: 128M...

2022-03-16 20:13:16 955

原创 RSA密码算法和数字签名技术

1.选取两个不同的大素数p和q,为了安全程度最大,p和q长度一致,计算模n=pq;2.计算模n的欧拉函数:φ(n)=(p-1)(q-1);3.随机选择一个整数 e, 1< e < φ(n),且 e 与 φ(n) 互质4.计算d,满足d*e≡1(modφ(n)) 即求(1/e)modφ(n),...

2022-03-14 21:34:12 2057

原创 P2105 K皇后

题目描述小 Z 最近捡到了一个棋盘,他想在棋盘上摆放 K 个皇后。他想知道在他摆完这 K 个皇后之后,棋盘上还有多少个格子是不会被攻击到的。注意:一个皇后会攻击到这个皇后所在的那一行,那一列,以及两条对角线。输入格式第一行三个正整数 n,m,K,表示棋盘的行列,以及小 Z 摆放的皇后的个数。接下来 K 行,每行两个正整数 x,y,表示这个皇后被摆在了第 x行,第 y 列,数据保证任何两个皇后都不会被摆在同一个格子里。输出格式仅一个整数,表示棋盘上还有多少个格子是不会被攻击到的。

2022-03-11 16:31:21 332

原创 P1873 [COCI 2011/2012 #5] EKO / 砍树

题目描述伐木工人 Mirko 需要砍M米长的木材。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。不过,Mirko 只被允许砍伐一排树。Mirko 的伐木机工作流程如下:Mirko 设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有树比H 高的部分(当然,树木不高于H米的部分保持不变)。Mirko 就得到树木被锯下的部分。例如,如果一排树的高度分别为20,15,10 和17,Mirko 把锯片升到15米的高度,切割后...

2022-03-08 15:19:30 219

原创 二分模板

二分查找适用于查找有序数组中的单个元素,对于有序数组[l,r],查找其中的元素t;当数组中被查找的元素只有一个时:int search(int *a, int t) //在长度为n的数组中查找t,{ int l = 1; int r = n; while (l <= r) { int middle = (l + r) / 2; if (a[middle] > t) { r = middle - 1;

2022-03-08 15:12:06 175

原创 P3811 【模板】乘法逆元

题目背景这是一道模板题题目描述给定 n,p求 1∼n 中所有整数在模 p 意义下的乘法逆元。输入格式一行两个正整数 n,p。输出格式输出 n 行,第 i 行表示 i 在模 p 下的乘法逆元。输入输出样例输入 #110 13输出 #1179108112534说明/提示1 <= n <= 3 * 10 ^ 6 ,n<p<20000528输入保证 p 为质数。这篇文章里有逆元的证明→数论基础篇但对于此

2022-03-06 18:44:29 523

原创 P1776 宝物筛选(多重背包+二进制优化)

题目描述终于,破解了千年的难题。小 FF 找到了王室的宝物室,里面堆满了无数价值连城的宝物。这下小 FF 可发财了,嘎嘎。但是这里的宝物实在是太多了,小 FF 的采集车似乎装不下那么多宝物。看来小 FF 只能含泪舍弃其中的一部分宝物了。小 FF 对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件。他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小 FF 有一个最大载重为 WW 的采集车,洞穴里总共有 n 种宝物,每种宝物的价值为 vi​,重量为 wi​,每种宝物有 mi​ 件。小 F

2022-03-01 20:38:27 201

原创 删除子序列(2022牛客寒假算法基础集训营6)(dp)

题目描述给出一个长度为n的字符串S和一个长度为m的不含重复字符的字符串T,每次你可以在S中删除一个等于T的子序列,最多可以删除多少次?如字符串S=ababccd,T=abc,可以选择s1s2s5,s1s2s6,s1s4s5,s1s4s6,s3s4s5,s3s4s6​进行删除,删除后分别得到abcd,abcd,bacd,bacd,abcd,abcd。如果删除后得到abcd,则还可以再进行一次删除,最多可以删除2次。输入描述:输入包含TS组测试用例,第一行一个整数TS(1≤TS≤10000)

2022-02-12 21:13:43 397

原创 舔狗舔到最后一无所有(简单dp)

题目描述作为队伍的核心,forever97很受另外两个队友的尊敬。Trote_w每天都要请forever97吃外卖,但很不幸的是宇宙中心forever97所在的学校周围只有3家forever97爱吃的外卖。如果Trote_w给forever97买了别家的外卖,forever97就会大喊“我不吃我不吃”。但是forever97又不喜欢连续三天吃一种外卖。如果Trote_w哪天忘了这件事并且三天给他买了同一家外卖,那么forever97就会把Trote_w的头摁进手机屏幕里。作为Trote_w的好

2022-02-11 20:20:40 565

原创 失衡天平(动态规划,dp)

题目描述终于Alice走出了大魔王的陷阱,可是现在傻傻的她忘了带武器了,这可如何是好???这个时候,一个神秘老人走到她面前答应无偿给她武器,但老人有个条件,需要将所选武器分别放在天平的两端,若天平平衡则可以将天平上的所有武器拿走,还好这个天平锈迹斑斑,只要两端重量相差小于等于m就会保持平衡,Alice傻傻的认为越重的武器越好,求Alice最多能拿走的武器总重量。(不限操作次数)输入描述:第一行2个整数 n, m;第二行n个整数x,分别表示n件武器的重量。1 <= n <= 10

2022-02-11 14:29:08 228

原创 兔崽小孩(stl二分查找upper/lower_bound,前缀和,优化)(2022牛客寒假算法基础集训营5)

题目:兔崽小孩预备知识:stl中的二分查找函数:upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)返回一个非递减序列[first, last)中第一个大于val的位置,返回值为指针,ForwardIter first为数组元素首地址,ForwardIter last为数组元素尾地址的后一个地址。lower_bound(ForwardIter first, ForwardIter last,const _Tp&a

2022-02-11 11:56:49 374

原创 高精度模板

高精度加法,高精度减法,高精度乘法,高精度除法(高精除以单精,高精除以高精)

2022-02-10 16:16:42 314

转载 雪色光晕(计算几何)

题目:雪色光晕(自己当错题记录的,题解是我转载的,文末有原文链接,侵权我就删`(*>﹏<*)′)知识点:计算几何本题要求一个固定的点到一条折线的最短距离。由于折线可以看成是很多条线段,所以可以规约成点到线段的最短距离。(虽然这个是板子,但不建议直接去百度,毕竟赛场上没有百度)显然,最终的答案一定为以下两种情况的一种:点到直线的最短距离、或点到线段某个端点的最短距离。什么时候会遇到第二种情况呢?当且仅当点到直线的最短距离所对应的那个点不在线段上。所以这道题一个最笨的方法

2022-02-09 12:20:36 88

原创 蓝彗星(2022牛客寒假算法基础集训营4)

题目:蓝彗星记录一下自己的错误历程( ̄m ̄)第一次直接用开了一个vis数组写的,vis数组判断此时间点有蓝彗星无红彗星,像这样:#include <cstdio>#include <cstring>#include <iostream>#include <string>#include <cstring>#include <algorithm>#include <map>using namespa

2022-02-09 10:46:23 706

原创 位运算(<<,>>,&,|,^,~),各进制前缀,原码反码补码

<<,>>的含义<< (左移):x<<y==x*(2^y)>> (右移):x>>y==x/(2^y)x>>=1 等价于 x/=2x<<=1 等价于 x*=21<<x 等价于 2的x次方&=,|=,^=等的含义&=:按位与后赋值如a=0b101,b=0b001,a&=b后,a为101;|=:按位或后赋值^=:按位异或后赋值...

2022-02-08 20:43:50 410

原创 数论基础篇

欧几里得算法,扩展欧几里得算法,贝祖定理唯一分解定理定义,应用Eratosthenes筛法,素数定理同余含义,运算性质,数根小知识积性函数,完全积性函数欧拉函数定义,公式,性质,欧拉定理,费马小定理逆元公式以及由来......

2022-01-28 21:02:21 2407 1

原创 求最大公因数的几种方法

辗转相除法递归求法int gcd(int a, int b){ if (b == 0) return a; else gcd(b, a % b);}非递归求法int gcd(int a, int b){ int r; while (b) { r = a % b; a = b; b = r; } return a;}更相减损法递归求法:int gcd(int a, int b){ if (a > b) return gcd(a -

2022-01-27 20:45:06 828

原创 几个常用函数模板

​​​判断素数,将日期转化为天数,快速排序,快速幂

2022-01-25 17:13:09 200

原创 牛牛看云(2022牛客寒假算法基础集训营1)

题目传送门:牛牛看云乍一看这道题,直接暴力二重循环(我不注意数据范围我该打),于是WA到怀疑人生正解如下:出题人炸鸡块君曰:本题没做出来的xdm要提高对数据范围的敏感程度~注意题中数据:整数n(3≤n≤1e6),而整数a(0≤a≤1000)所以当n很大时,会出现很多重复的值,所以我们只需记录每个a出现的次数,然后直接循环枚举就好了注意要用long long其他注释都在代码里啦#include <cstdio>#include <iostream>

2022-01-24 19:57:30 553 5

原创 洛谷P1044 [NOIP2003 普及组] 栈

多种解法,递归/记忆化搜索,递推/DP,卡塔兰数

2022-01-19 19:42:54 1199 1

原创 P4047 [JSOI2010]部落划分

思路:我们把每两个部落之间的距离计算出来,每次选取部落距离最小的两个划分到一起,如果划分成功(两个部落本来不在一起),那么此时部落也减少了一个,当部落数等于目标数时,此时下一对距离最短的部落的距离是最短距离第一次因为输出判断不太对wa了,QAQ,还是我太弱了注释都在代码里了#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>using name.

2022-01-13 23:40:20 148

原创 P1195 口袋的天空

主要:起初天上有n朵云,我们可以认为是n个棉花糖,要让棉花糖的数量减到k,那么我们可以写一个bool函数判断两朵云能否连接,如果能连接,那么棉花糖数量减一,当数量减到k时跳出就可以了对并查集不熟悉的同学可以看看这两位大神的文章(个人认为讲的很清楚,成功让本菜鸟明白了并查集)【算法与数据结构】—— 并查集_the_ZED的博客-CSDN博客_并查集并查集详解 ——图文解说,简单易懂(转)_多反思,多回顾,要坚持。-CSDN博客_并查集详解AC

2022-01-13 09:38:58 236

原创 洛谷P1115 最大子段和

传送门最大子段和 - 洛谷方法一:贪心用max表示最大值,sum是前缀和,相当于起到探路的作用,从左到右,如果sum小于零,那么这一段不属于需要求的子段(因为加上负数后更小,废话),将sum重置; 如果sum大于此时的最大值max,那么将sum赋给max代码如下:#include <stdio.h>int main(){ int n,j,sum,max; scanf("%d%d",&n,&max); sum=max; while(--n){ s.

2022-01-10 20:33:03 381

原创 设计递归函数模拟汉诺塔游戏

题目描述:Description:下面程序的功能是通过递归函数模拟汉诺塔游戏。请将程序补充完整。#include<stdio.h>void move(int,char,char,char);int main(){ int n; scanf("%d",&n); printf("the step to moving %2d diskes:\n",n); move(n,'a','b','c'); return 0;}//你提交的代...

2021-12-25 09:59:42 2714 1

空空如也

空空如也

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

TA关注的人

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