自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go语言-基础

Go程序基本结构 // 定义包名,package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。package main // 导入需要使用的包(的函数,或其他元素)import "fmt"// 程序的入口函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数。func main() {   fmt.Println("Hello, World!")}数据类型:基本数据类型;高级数据类型切片 make()通道

2023-10-10 20:35:36 46

原创 F.A Simple Problem On A Tree(2019年ICPC亚洲上海区域大赛)

!!题目链接题意:给一棵树(n个点,n-1条边), 每个节点有权值。四个操作:u, v, w 将u到v路径上所有的点权值赋值为wu, v, w 将u到v路径上所有的点权值增加wu, v, w 将u到v路径上所有的点权值乘wu, v 查询u 到 v路径上所有点 三次方的和含u,v节点思路:树链剖分一定是没问题了,就是查询操作和改变操作有点麻烦:线段树两个懒标记:mul记录乘操作 add记录加操作情况一:mul = 0, add = num;情况二:mul = 1, add =

2020-12-08 18:35:25 264

原创 E.Cave Escape (2019年ICPC亚洲上海区域大赛)

看题面点这里题意:给你一个n*m的矩阵,每个位置都有能量,对于位置(i,j)的能量为X_(i-1)*m+j, 给一个起点(Sr,Sc)终点(Tr,Tc);当你从一个位置第一次走到另一个位置,就会获得两个位置能量相乘的能量,, 每个点可以多次到达,但只有第一次到达才会产生贡献,问能够获得的最大能量。解题:要求出最大值,而且多次到某个点就是可以随便走,那么可定是把所有点都走一遍,这就意味着整个矩阵联通,即把矩阵中的每个点都抽离出来当作图的点,求出最大值——最小生成树哎。预处理出数组X,计算出没个点

2020-12-08 17:12:05 149

原创 CF 741C.Arpa’s overnight party and Mehrdad’s silent entering

链接~~ 果然图的问题都是难在建图~~题意:有n对情侣(2n个人)围成一圈坐在桌子边上, 每个人占一个座位,要求情侣不能吃一样的食物,并且桌子上相邻的三个人的食物必须有两个是不同的,只有两种食物(1,2),给出一种可行的分配方式。1 <= n <= 1e5。思路:由题意可知,食物只有两种且情侣不能吃一样的食物,相邻的三个人的食物必须有两个是不同的, 就可以想到二分图。如果给不能吃同样食物的两个人连一条边,问题就变成了二分图黑白染色所以情侣之间需要连一条边。剩下来就是解决相邻三个

2020-12-06 21:52:24 177

原创 CodeForces - 1454E

题目链接题意:T组测试:每组测试给一图, n和节点n条边且是连通图;问有多少种长度大于等于1的简单路径。解题思路:根据已知信息可知:1.图是一个n个节点n条边的连通图, 那么图中必然有一个环~~(loop)~~ ;2.长度大于等于1的简单路径为任意两点间的路径;根据这两个信息可推出:①.在环中的任意两点皆有两条路径;②.以环为根节点的左子树上的点与右子树上的点之间也是有两条路径;③.以环为根节点左子树中任意两点只有一条路径,右子树一样;那么,若n个节点n条边的连通图任意两点的路径条数都为

2020-11-28 20:03:38 152

原创 CodeForces-1440D Graph Subset Problem

题意:给一个无向图,在图中找一个子图:1.这个子图中每个点都连接 >= 条边2.子图为k个点的完全图思路:对于每个点的子集,根据度数排序,通过标记法把度数小于k的点删除, 如果度数为k-1,判断与其相连的点是否能构成完全图,如果能则符合的2,输出答案。 否则删掉,最后判断剩余的度数大于等于k的点的个数是否存在,不存在输出-1。#include <iostream>#include <algorithm>#include <queue>#inclu

2020-11-22 10:10:06 121

原创 2020牛客暑期多校训练营(第五场)B Graph 异或最小生成树

题目大意给出一颗树,有两种操作,添加一条边,删除一条边。每个时刻必须满足如果有环那么环的边权异或和必须是0,必须是联通的。解题思路任意两个点之间连边的权值都是固定的,由于图需要始终联通,所以两点间始终存在至少一条路径,如果存在多条,根据环的异或和为0,两点间的路径的异或和应该相等,且始终是固定的。(摘自官方题解) 这样么,就可以每个点都记录一个权值,而两点间连边的权值,就是两端点权值的异或值。接下来就是求异或最小生成树的问题了当求一些数的最大或最小异或值,就可以联想到字典树:在字典树中两个数

2020-09-04 21:17:27 111

原创 dinic 板子 洛谷p3376

#include <iostream>#include <cstring>#include <cstdio>#include <queue>#include <algorithm>using namespace std;#define rep(i, l, r) for (int i = l; i <= r; i ++ )#define clr(x, y) memset(x, y, sizeof (x))const int IN

2020-09-04 11:51:34 102

原创 搜索经典poj1011

这道题可以说是搜索剪枝例题中的经典,其中的剪枝条件太难想了如果能够完完全全吃透这道题,对剪枝的体悟一定能更深对于剪枝不了解的可以跳转点击这里可以看到题面题目传送门乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。注意: 数据中可能包含长度大于50的木棒,请在处理时忽略这些木棒。输

2020-07-10 10:38:54 90

原创 C++STL之bitset

#include <bitset>bitset 可看作一个多位二进制数,每八位占一个字节,相当于采用了状态压缩的二进制数组,并支持基本的位运算。估算程序运行的时间时,一般采用32位整数的运算次数为基准,因此n位bitset执行一次位运算的复杂度可视为n/32。声明bitset s;表示N位二进制数,<>中填写位数。可以进行的基本位运算:~s :按位取反。&,|,^:按位与,或,异或运算。>>,<< :把一个bitset右移,左移若干

2020-07-09 10:01:46 303

原创 poj1724 深搜之寻路问题

我先把题目链接给出来 :http://poj.org/problem?id=1724什么是深搜呢?深搜(也叫回溯法)一般用dfs表示, 简单来说就是“一直往下走,走不通了就返回上一层换一条继续走” ,也就是递归的枚举深度优先搜索的实质就是穷举,按照一定的顺序和规则不断地去尝试,直到找到问题的解。对于一个问题的第一个状态叫做初始状态,最后要求的状态叫做目的状态。在搜索的过程中,对当前状态进行检测,如果当前状态满足目的状态,那么这个当前状态就是结果之一。深搜的优化方式(剪枝):优化搜索顺序:产

2020-06-26 18:09:32 257

原创 P3806来波点分治

分治:一,一棵树上的路径可以分两种:1.经过根节点的;2.不经过根节点的二,若把根节点删去,则可以生成若干棵一根节点的儿子为根结点的子树,对于这些树来说,其上的路径也可以分为两种:1.经过根节点的;2.不经过根节点的。分治有点分治与边分治。点分治算法步骤:1.找到当前的重心,以重心为根结点;2.处理经过当前根结点的路径;3.删除根结点;4.对生成的子树,重复以上步骤。树的重心:...

2020-02-27 12:54:15 161

原创 CodeForces C. Basketball Exercise

简单dp#include <bits/stdc++.h>using namespace std;typedef long long LL; const int N = 1e5 + 7;LL a[N], b[N], dp[2][N];int main(){ int n; std::cin >> n; for (int i = 1; i <= n; i...

2020-02-11 23:29:18 187

原创 牛客寒假集训2 E

添加链接描述简单思维题:题中出现了根号 就想到了平方, 把登时左右平方。得到 i + j + 2sqrt(i * j) = k; 即2 * sqrt(ij) = k - i - j;因为 i,j, k 为正整数 所以2sqrt(ij) 也是正整数, 所以i*j为一个平方数接下来...

2020-02-10 11:59:36 111

原创 可持久化数组

洛谷p3919可持久化数组可持久化数组是一种可以回退,访问之前版本的数组是一些其他可持久化数据结构的基石(例如可持久化并查集)#include <stdio.h>#include <algorithm>using namespace std;const int N = 1e6 + 7;int root[N], cnt, arr[N];struct Node...

2020-02-05 14:24:15 233

原创 线段树建图+spfa

CodeForces-787D直接暴力的话,边数太多,spfa 会炸掉.由于涉及到区间操作,不妨利用线段树建图,之后再spfa即可.线段树建图需建两棵树 – 出度树 和 入度树.#include <stdio.h>#include <vector>#include <queue>#define ls rt << 1#define rs...

2020-02-05 14:19:37 109

原创 莫队 D. Little Elephant and Array

莫队是什么:莫队是由莫涛大神提出的,一种玄学毒瘤暴力骗分区间操 作算法,它以简短的框架、简单易记的板子和优秀的复杂 度闻名于世莫队算法 前置技能:1. 分块2. STL中的sort3. 数值离散化4. D. Little Elephant and Array题意 给你一个数组 和一些区间 找出这些区间中某个数的个数恰好为该数的数值思路:莫队+离散化在这里插入代码片...

2020-02-05 12:24:26 143

原创 分块简单了解

分块的基本思想是通过适当的划分,预处理一部分信息并保存下来,用空间换取时间,达到时同平衡。分块和线段树的区别在于,分块算法可以维护一些线段树维护不了的东西;例如单调队列等,线段树能维护的东西必须能够进行信息合并,而分块则不需要。不过,它们也有共同点,分块和线段树一样,分块需要支持类似标记合并的东西。 简单来说,分块算法就是优化过后的暴力。简单,直观,注意细节。Poj3468 htt...

2020-01-05 09:20:19 258

原创 烦人的树链剖分

树链剖分:即把树拆成若干条不相交的链, 分为三种:一.重链剖分—常用, O(logn)二.长链剖分—不常用,O(sqrt(n))三.实链剖分—搞LCT(现在还不懂它是什么)术语:1.重儿子:一个节点的所有儿子中,大小最大的那个(最重的,所以说只有一个,如果有多个儿子大相等那就随便取一个)2.轻儿子:一个节点除了轻儿子以外的儿子都是轻儿子3.重链:从轻儿子开始(根结点也是轻儿子)...

2020-01-04 18:34:23 110

原创 可持久化并查集

可持久化数组可持久化数组是一种可以回退,访问之前版本的数组是一些其他可持久化数据结构的基石例如可持久化并查集)与普通并查集不同的是 这里用到了 按秩合并不了解可以百度一下添加链接描述#include <stdio.h>const int N = 2e5 + 7;int rootfa[N], rootdep[N], cnt, tot;struct Node { ...

2019-12-28 22:15:52 106

原创 扫描线

洛谷5490与普通线段树不同点:如果正常的线段树区间是1~5 子节点:1~3 4~5但是这里就会少算3~4区间里的东西所以是1~3 3~5然后叶子结点的l、r : l+1 == r添加链接描述具体看代码 差不多都有解释不懂的地方可以@一下#include <stdio.h>#include <string.h>#include <vector...

2019-12-28 22:00:50 180 1

原创 初次理解A*stra

A* star 算法第K短路问题链接A* star 特征:点数特别多。 此算法前置技能: Dijkstra 最短路该算法与Dijkstra算法不同:Dijkstra按照dist[s]排序,而该算法按照dist[s] + f(s) 排序。f(s) 为估价函数,只要 f(s) <= g(s) (g(s)为真实距离 ,即从s到目标点的真实距离), 就可以保证, 当某个状态s,第一...

2019-11-14 21:24:53 180

原创 acwing114.国王游戏

高精度乘除法的应用添加链接描述高精度乘法vector<int> mul(vector<int> a, int b) { vector<int> c; int t = 0; for (int i = 0; i < a.size(); i ++) { t += a[i] * b; c....

2019-11-10 09:15:33 139

空空如也

空空如也

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

TA关注的人

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