自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java异步回调

丁真教你学爪哇

2023-07-18 15:42:45 296

原创 Python闭包和装饰器

派神!启动!

2023-07-02 10:27:28 138

原创 linux C++聊天室项目(3)完结撒花

c++聊天室终章

2023-06-11 16:31:12 183

原创 linux C++聊天室项目(2)

1.C++连接mysql数据库。2.实现登录,注册,注销功能。

2023-06-05 16:24:38 146

原创 linux C++聊天室项目(1)

C++网络编程学习

2023-06-02 20:46:17 365

原创 C++多线程 消费者生产者模型

多线程编程学习01

2023-05-19 22:26:32 228

原创 linux 查看文件/grep字符串匹配命令

linux命令学习

2023-05-12 20:59:25 3633

原创 C++单例模式线程安全版实现

单例模式设计模式学习

2023-05-10 17:44:29 56

原创 阿里巴巴2021编程题(四星)1-5题题解

笔试前临时刷一下题目

2023-04-17 17:02:33 100

原创 C++虚继承和普通继承同时存在时虚基类指针和虚基类表的分析

C++虚继承学习

2022-12-02 17:38:08 602

原创 利用blender为ue4动画添加根骨骼

UE4动画

2022-11-16 18:02:24 2189

原创 codeforces C. Wish I Knew How to Sort 期望DP

Codeforces刷题

2022-11-10 16:31:37 234

原创 C++学习 智能指针专题

C++ Primer Plus学习

2022-10-20 11:39:28 294

原创 C++学习 虚函数,虚基类,纯虚函数专题

c++ primer plus学习

2022-10-08 17:15:38 331

原创 C++学习 模板专题

c++ primer plus学习

2022-09-18 18:48:18 348

原创 Codeforces Round #797 (Div. 3) F. Shifting String题解

Codeforces Round #797 (Div. 3) F. Shifting String题解

2022-06-16 15:57:48 182

原创 Codeforces Div2#791 D. Toss a Coin to Your Graph拓扑排序+二分

(赛后补的题,看别人题解写的,感觉很不错)题目链接Problem - D - Codeforces题意是给你一张有向图,图上结点有权值,找出一条正好是长度为k-1的一条路径,使得这条路径的最大权值最小,求这个最小值。二分:首先看题意就知道要用二分,假设当前二分是mid,如果小于等于mid的权值结点构成的新图可以满足要求,那么答案一定小于等于mid,反之,就需要扩大mid的值来满足要求拓扑排序:现在我们根据mid来构建一个新图,小于等于mid值的结点加进来,对这个新图进行拓扑排序,如果图中有环

2022-05-15 16:54:54 363

原创 Codeforces Round #756 F 滑动窗口

题目链接https://codeforces.com/contest/1611/problem/F最近在刷(复习忘了的)滑动窗口,刷到了一个感觉很典型的题目记录一下。题意是给你一个ATM里有的钱的初值,来了若干人取钱或者存钱,取最大长度一段能满足要求(取钱时钱是够的)滑动窗口本质是双指针遍历区间,区间符合条件就记录最优值,而这个区间可以是固定也可以是不固定的,而这题是不固定的区间长度下面是不固定长度的滑动窗口算法模板l为左指针,r为右指针,n为右边界 while(r&

2022-05-09 16:58:47 218

原创 codeforces1608C. Game Master题解(图论)

题意是给你n个选手,每个选手有两种力量a,b,然后进行n-1轮淘汰赛,力量小(用同一种力量)的退出比赛,最后问你每个选手能否赢得比赛(不会看了题解)假如A选手可以击败B选手,B选手可以击败C选手,那么A选手可以间接淘汰C选手,这里就有一个传递关系我们将所有选手以力量a,b从小到大排序,从大的力量选手结点出发连一条边到小的力量的选手,只要看是否任意结点是否能遍历所有结点即可但这样做时间复杂度是n2,我们可以想到,一个选手如果想赢就必须击败(间接或直接)力量最高的选手,而力量最高的选手可以击败其

2022-03-24 16:20:32 1383

原创 线段树模板

线段树作用是将一个数组的 区间操作 和 单点操作 时间复杂度都平均为O(logn),原理便是建立一个完全二叉树来存储mid左右两个区间的信息(sum,min,max)以下模板以sum为例子。而对于区间修改的情况,可以使用懒惰标记的方法,如果当前区间是在所操作区间之内就将其懒惰标记加上要加的值,而如果遍历到当前区间时如果有懒惰标记就将其下传并对自己的清零,这个操作对于所有函数都适用,因为懒惰标记名副其实很懒,只有你碰他他才动,不理他他永远就不变。模板如下(包含建立线段树,区间加值,区间求和,单点修改,

2022-02-21 17:45:47 776

原创 洛谷P4180 次小生成树学习

题目链接[BJWC2010]严格次小生成树 - 洛谷严格次小生成树是指第二小的生成树总的思路是先求最小生成树(设最小生成树的总花费sum),把每条边都标记,再遍历没被标记的边,此时这条边加进去肯定会形成一个环,这时候去掉除这条边(设权值为w)环上一条最大的边(设权值为wm),则取min(sum+w-wm) 即可但这样其实是有漏洞的,因为去除这条边可能环上最大边和这条边权值一样,这时候就是原来的最小生成树的sum,如图此时加入4-5这条权值为10的边,形成一条环,却发现除这条边环上最大值还是.

2021-11-30 16:18:32 276

原创 Tarjan算法求连通分量 割点 LCA模版

连通分量(low相同即为连通分量)#include <iostream>#include <cstdio>#include <vector>#include <algorithm>using namespace std;int dfn[100],low[100];int e[100],h[100],ne[100];int idx,times,vi[100];vector<int> color[100];vector<i

2021-11-26 11:05:25 662

原创 洛谷P1260 工程规划 差分约束学习

题目链接工程规划 - 洛谷差分约束本质上是给你一堆不等式求各个变量最小值和最大值,利用不等式建图,再利用SPFA求负环来判断有没有解一般求变量最小值时求最长路建图xi+c<=xj 由xi向xj连一条长度为c的边如果a点到b点最长距离为w 即a+w<b同理求变量最大值时求最短路建图xi<=xj+c 由xj向xi连一条长度为c的边如果a点到b点最短距离为w 即b<a+w最后注意一点一定要找到一个形如xi<=c(常数)的不等式来求最值,这个时候

2021-11-21 10:41:30 378

原创 自适应辛普森模版

#include <iostream>#include <cstdio>#include <cmath>using namespace std;double a,b,c,d,l,r;const double eps = 1e-10;double f(double x){ return (c*x+d)/(a*x+b);//函数}double simpson(double ll,double rr){ return (rr-ll)/6..

2021-11-18 16:08:42 183

原创 洛谷P2868 奶牛观光 01分数规划学习

题目链接[USACO07DEC]Sightseeing Cows G - 洛谷01分数规划问题简单说来就是给你一堆物品,每件物品有两个属性a,b。每个物品都有选或不选两种情况,设定一个参数x[i],当x[i] = 0时代表物品i不选,x[i] = 1时代表物品选。我们需要从中取出若干物品,也就是求出的最值,我们移一下项,式子变成了求出满足式子的R的最(大/小)值提公因式得到我们可以发现,式子左边的值是随着R的增大而减小的。我们以求最大值为例,对于一个确定的R值,当左边的式子的值大于零

2021-11-18 11:34:17 254

原创 洛谷 P4017 最大食物链题解报告

题目链接最大食物链计数 - 洛谷(今天又被黄题给卡了。。。。。)题意很简单就是从 入度为0的起点 到 出度为0的终点 道路的条数,一开始想到用拓扑序做但还是用了DFS+记忆化搜索,结果死活过不了,后来想了想原来是有多个起点和终点但我只考虑了一个起点和终点,搞了半个小时。。。大概思路就是DFS时遇到出度为0的点时返回 1 ,每个点的道路数目等于它可以走到的点的道路数目之和,最后再加上所有入度为0的点的道路总和输出即可AC代码如下#include <iostream>#inc

2021-10-31 15:29:38 201

原创 洛谷 P1879 Corn Field G 状压DP解题报告

状压DP的核心是状态压缩,用先前求出的状态推导当前状态,用dp[i][j]表示第i层状态j的方案数这题是上下左右不能有相邻边,因此前一个状态A 与当前状态B 应该是A&B=0 用B的状态子集A的集合之和就可求出例如 第三层101 的子集是 000 010 因此dp[3][101]=dp[2][000]+dp[2][010];还有一些小优化在代码注释里AC代码如下#include <iostream>#include <cstdio>#incl...

2021-10-01 18:25:45 114

原创 P1434 滑雪 记忆化搜索题解

题目意思找一条高度从大到小的一条路径,最开始用BFS直接只有60分,看了一下题解是用记忆化搜索,学了半个月DP竟然忘了,直接DFS就可以过了AC代码(数组要开大一点!)#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int path[201][201],height[201][201],res,n,m;

2021-09-29 13:15:37 88

原创 P2426删数 区间DP 题解报告

刚开始看错了以为可以从中间删除一段数字,想了半天,以为要爆搜,结果再仔细看题原来是从两边删除,那题目就很简单了,用dp[i][j] 表示 i 到 j 区间数字删除后最大收益,再结合区间DP技巧就可以轻松解决题目了AC代码如下#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int N = 200;int s[N];int dp[N][N]

2021-09-19 19:04:47 95

原创 洛谷P1896 互不侵犯 状压DP学习

题目链接https://www.luogu.com.cn/problem/P1896#submitAC代码#include <iostream>#include <cstdio>#include <vector>using namespace std;const int N=11;const int K=1<<N;typedef long long ll;ll dp[N+1][102][K];int sum[K];vector&lt

2021-09-07 16:14:36 108

原创 树形DP P1131 时态同步 解题报告

题目链接https://www.luogu.com.cn/problem/P1131一道挺好想的简单树形DP题目,不过本蒟蒻竟然一遍就过了蓝题挺激动的(还是题目太简单了?)题意很简单,给你一颗树,树边带权值,给你一个根节点,要求从根结点到叶子结点的路径长度相同,求需要在每条边上加值的最小总和。我们可以设以下dp[i]表示到 i 结点时需要走的最大路程拿一个简单的例子如图:观察一下不难发现dp[i]=max(dp[i],dp[j]+w) j是i的子节点 w是j和i之间的...

2021-08-26 15:38:51 80

原创 树形DP 换根DP 洛谷P2986解题报告

换根DP,顾名思义就是换一个根进行DP(废话),一般出现在树形结构中,需要定一个结点为根(题意可能是中心或其他的),然后求总值。先看一道例题https://www.luogu.com.cn/problem/P2986题目不难理解需要求从各个结点的奶牛走到中心的花费总值,如果用暴力解题思路也不难理解,用一次DFS求出一个结点的所有子节点的花费值,再加上子树牛的数量乘以根到子节点的道路长图示:然后每个节点进行一次DP就行了。时间复杂度是O(n2)但是问题是数据量是100000,这个方法明

2021-08-24 12:03:24 337

原创 P1064 金明的预算方案 分组背包 解题报告

题目链接https://www.luogu.com.cn/problem/P1064题目中描述是一个主件带0到2个附件,买附件必须买主件,那么可以将每一个主件的购买方案进行分组比如 一个主件A 附带附件2个 B 和 C购买方案就有四种 A,A+B,A+C,A+B+C。那么这其实就和多重背包类似 多重背包代码如下for(int i = 0; i < weight.size(); i++) { // 遍历物品 for(int j = bagWeight; j >

2021-08-06 14:57:33 81

原创 洛谷 P1833 樱花 多重背包 解题报告

题目链接https://www.luogu.com.cn/problem/P1833多重背包的模版 但是多了一种无限多的物品先看多重背包模版 for(int i = 0; i < weight.size(); i++) { // 遍历物品 for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量 // 以上为01背包,然后加一个遍历个数 for (int k.

2021-08-06 10:56:04 308

原创 洛谷P1103 书本整理 线性DP 解题报告

题目描述Frank是一个非常喜爱整洁的人。他有一大堆书和一个书架,想要把书放在书架上。书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上。但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐。于是他决定从中拿掉k本书,使得书架可以看起来整齐一点。书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和。例如有4本书:1×25×32×43×1那么Frank将其排列整齐后是:1×22×43×15×3不整齐度就是2+3+2=72+3+2=72+3+2

2021-08-03 14:36:21 226

原创 洛谷 2953 博弈论 解题报告

题目如下贝茜和约翰在玩一个数字游戏.贝茜需要你帮助她.游戏一共进行了G(1≤G≤100)场.第i场游戏开始于一个正整数Ni(l≤Ni≤1,000,000).游戏规则是这样的:双方轮流操作,将当前的数字减去一个数,这个数可以是当前数字的最大数码,也可以是最小的非0数码.比如当前的数是3014,操作者可以减去1变成3013,也可以减去4变成3010.若干次操作之后,这个数字会变成0.这时候不能再操作的一方为输家. 贝茜总是先开始操作.如果贝茜和约翰都足够聪明,执行最好的策略.请你计算最后的赢家.

2021-07-30 11:02:34 257

原创 位运算的使用

位运算符号基础 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 | 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1 ^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1 ~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0 << 左移...

2021-07-16 10:26:14 286

原创 堆排序的实现(递归与非递归)

堆排序实质就是选择排序的优化版,将选择排序的选择部分优化成logn。思路:由小到大堆排序首先要构造大顶堆(父节点的值大于子节点的值)再依次交换最后一个节点的值,已经排好的不用管再对第一个结点进行构造大顶堆的操作重复进行如上操作便排序完成非递归版本#include <stdio.h>#include <stdlib.h>void swap(int tree[],int a,int b){ int temp=tree[a]; tree[

2021-07-15 09:20:03 306

原创 希尔排序的实现

希尔排序的实质是分组插入排序,代码如下#include <iostream>#include <cstdio>using namespace std;int main(){ int test[]={2,5,3,9,7,8,6,1,9,10}; int len=10; int gap;//步长 for(gap=len/2;gap>0;gap/=2)//gap每次除2缩小至1 { for(int i=0;i&lt

2021-07-13 14:53:12 111

空空如也

空空如也

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

TA关注的人

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