自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于Headmaster‘s Headache的题解报告

题目链接:Headmaster's Headache - UVA 10817 - Virtual Judge我们观察到n这个值数据很小,因此可以想到用三进制压缩课程的状态,第i为表示第i+1个课程的状态,0表示没有人教授,1表示有一个人教授,2表示两人以上进行教授,故状态很容易就可以表示出来:前i个教授教授的课程状态为j的情况下花费的最小费用(第i个教授还没有考虑),推状态方程有个注意点,如果是由前面的阶段去推当前的状态会多一个枚举决策的时间花费,而由当前状态去推未来状态的则就不用花费枚举决策的时间花费

2022-03-19 21:45:41 1019

原创 关于ABC-E Edge Deletion的解题报告

ss

2022-03-19 21:20:12 719

原创 欢度佳节题解

题目链接:欢度佳节思路:首先我们观察到格子只有17个,则这可以让我们想到状态压缩(用二进制压缩状态),之后在借助dfs进行连通块遍历即可,时间复杂度o(x17)。注意点:1.我们首先要将二进制上的每一位与图上的17个格子一一对应,这一点比较麻烦。 2.遍历连通块一般运用dfs。(套路) 3.一般而言,若n小于20,则可以考虑状态压缩。(套路)所以,这题其实并不难,就是比较考验码力。代码:#include<bits/stdc++....

2022-03-06 20:55:35 426

原创 初探树形动态规划

前言:树形动态规划是比较套路的动态规划类型,其中有一些规律性的东西值得总结,下文树形动态规划将用树形dp代替。树形dp的套路(一般都是成立): 1.以结点从深到浅的顺序作为dp的“阶段".(枚举顺序) 2.第一维常常是结点的编号,状态的定义常常是"以i的子树......"或者”i的.......(全部)". 3.状态一般是有子节点传递过来.(状态转移方程)通用结构(c++):树形dp框架typedef struct node{ int from,to,dist...

2021-12-11 17:24:38 176

原创 牛客练习赛93-C题-点权

ps:这道题当时赛场上脑抽想到拓扑排序去了,这题并不能用拓扑排序写,因为这题要求将点权变成2的最小花费,而这最小花费是与边权有关系的,而与深度没关系。如何想到树形dp?:题目已经明说这是一颗树了,首先我们不难看到更新都是从叶结点向上传递,这就满足了dp的无后效性,又因为不难发现每一个点作为根节点结果都不同,于是我们不难想到一个o(n*n)的算法。朴素算法o(n*n):枚举每一个结点作为根节点,然后进行树形dp,每个结点调最小的那个值即可。改进-换根法o(n):不难发现以上模型就是换根法的模型,我

2021-12-11 15:11:27 420

原创 初探并查集

前言:笔者最近学习了算法进阶指南的并查集的章节,写了几道题,也算是有些许感悟,于此写一些。并查集的作用:一种十分高效地维护各个元素之间的关系的数据结构,常见的关系有:亲戚关系,敌对与盟友关系,捕食与被捕食关系,两个元素之间夹着多少个元素(比较特殊).并查集的种类:单一关系(普通并查集),多种关系(带权并查集或扩展域并查集)。带权并查集基本模板(路径压缩和按秩合并): 注:路径压缩模板一般是不变的,而按秩合并是变化,需要根据题意推导合并公式。 路径压缩(均摊复杂度o(l...

2021-12-06 22:07:54 159

原创 组合数学

乘法和加法的运用:Problem - 1594E1 - Codeforces排列组合求概率:建模:Problem - 1514B - Codeforces

2021-10-21 23:31:47 74

原创 求删除某些数位的数字从而得到某一个指定数的最小操作次数

这类题一般都是暴力,但不同的题暴力的方法又不太一样一.直接枚举所有指定的数(通常这些数的个数不多,常常是幂级别的)题目链接:Problem - 1560D - Codeforces题目大意:给你两种操作:1.删去某一数位的数字。2.在数的最右边加上一个数字。你可以重复这两个操作无限次,现在给你个整数n,要求你求出使用这个操作使得n变成的最小操作数.思路:时间复杂度,因为,故我们只需枚举到,一个个匹配求最小操作次数,设匹配的位数为k,长度为m,则最小操作次数为.去最小即可。二.枚举

2021-10-21 23:18:07 1010

原创 D1. All are Same的两种思路

题目信息:题目链接:Problem - D1 - Codeforces题意简化:给n个整数,寻找一个整数k,你可以将减少(增加)k,这个操作可以无限次数使用,使得所有数都变得一样,如果找不到这样的数,输出-1.解法(暴力和数论):数论思路;时间复杂度,容易发现目标数应该是n个整数中最小的那个数,而每个数减去整数个k而得到目标数,我们先将数组从小到大排序(下标从1开始),,注意最后特判k.暴力思路:时间复杂度,即是k一定是满足,先从最大值开始,然后每次都减去一,判断是否满足,满足则退出

2021-10-21 22:34:58 273

原创 codeforces的容斥原理的运用

一.基础公式: 1.2.二.容斥原理应用模型举例: 1.从一个大集合中能否按照某种规则划分为两个互斥的子集. 例题:Groups 此题的题意成功等价于A和B大于等于0且S=n.

2021-10-12 21:01:30 98

原创 codeforces二进制的运用

1.列举幂2.快速幂3.标记相邻位置

2021-10-12 20:49:12 86

原创 codeforces中的时间复杂度的一些分析技巧

1.调和级数(i*j<=n)2.均摊分析

2021-10-12 20:17:33 309

原创 数论之质数与约数基础知识点梳理

质数质数:也称素数,指的是无法被除1和其他自然数整除的正整数,1不是质数。质数定理:设一个足够大的正整数x,则不超过x的质数的个数大致为。质数的判定:试除法:若有一个合数x,则存在一个能整除x的数t,。质数筛:埃式筛法:任意整数x的倍数2x,3x,4x......kx不是质数。 void get_prime(int n){ for(int i=2;i<=n;i++){...

2021-09-28 18:39:01 543

原创 关于在算法竞赛中的优化的一些小技巧(一)(不涉及算法)

1.快读优化(在1e3以上的数据量比cin快20%)template<typename T>inline void read(T &x){ x=0; int f=1; char c=getchar(); //c++17中删除了register while(c<'0'||c>'9'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=(x<

2021-09-24 00:44:46 197

原创 完全背包问题解题总结

前言: 1.01型背包问题(一维)链接:https://blog.csdn.net/qq_56430444/article/details/118157798 2.01型背包问题(二维)链接:https://blog.csdn.net/qq_56430444/article/details/118160876完全背包问题模板: 1.状态:dp[i]表示的是在背包容量为i下能装载的最大物品价值总和。 2.状态转移方程: if ( i >= w[j] ) { dp[i] ...

2021-07-01 17:53:46 743

原创 01型背包问题解题总结(二维)

01型背包问题的模板(二维): 1.状态:dp[i][j]表示状态i和状态j下背包所能装置的最大价值。 2.状态转移方程: if ( i>= w1[i] && j>=w2[j] ){ dp[i][j] = max ( dp[i-w1[j]][j-w2[j]]+v[j],dp[i][j] ) }3.循环方向: for(枚举第一个状态,逆向) for(枚举第二个状态,逆向) ...

2021-06-23 20:03:08 464

原创 01型背包问题解题总结(一维)

01型背包问题的模板(一维): 1.状态:dp[i]表示为背包容量为i所能装下的最大价值。 2.状态转移方程: if( i>=w[j] ){ dp[i] = max ( dp[i-w[j]]+v[j] , dp[i] ) 3.循环方向: for(枚举物品的编号,正向) for(枚举背包的容量,逆向) 决策(状态转移方程) 4.初始化:看题目而定01型背包问题...

2021-06-23 18:10:22 698

空空如也

空空如也

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

TA关注的人

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