自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 问答 (1)
  • 收藏
  • 关注

原创 Codeforces Round #826 (Div. 3)

cf Round 826 div3

2022-10-16 19:20:49 333

原创 一文带你入门并吃透状态压缩DP

【本文比较适合有一定动态规划基础的童鞋阅读】首先先讲讲什么是状态压缩状态压缩就是使用某种方法,简明扼要地以最小代价来表示某种状态,通常是用一串01数字(二进制数)来表示各个点的状态。这就要求使用状态压缩的对象的点的状态必须只有两种,0 或 1我们都知道二进制可以用来枚举子集,例如某个问题有8种情况,那么我们可以一个循环,从0到2^3-1,将所有情况枚举出来,这里拓展一个位运算的技巧(i>>j&1): 用来求十进制下的数i第j位是否为1,我们规定如果当前位为1就说明这一位应当被

2022-05-30 23:18:02 3096

原创 四平方和【枚举 + 哈希】

因为数据范围是5 * 1e6,每个数的范围都在(0,根号n)的范围,所以最多只能枚举两重循环(5 * 1e6开根号在2200左右,时间复杂度不能超过1e7,(2200)^2 约等于10的6次方),根据等式a ^ 2 + b ^ 2 + c ^2 + d ^2 == x,变换一下 等价于a ^ 2 + b ^ 2 == x - c ^ 2 - d ^ 2所以可以先循环枚举c和d,将x - (c ^ 2 + d ^2)的值作为数组的值,将c的取值作为数组的映射,再从小到大枚举较小的两个数,若平方和的..

2022-02-22 23:55:24 214

原创 手撕图论专题一 拓扑排序

aa拓扑排序是图论里非常重要一部分内容,它可以用来判断图内有无回路,还有非常重要的应用(之后会以oj题目形式展开)那么什么是拓扑排序--图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting)。(1)每个顶点出现且只出现一次;(2)若A在序列中排在B的前面,则在图中不存在从B到A的路径拓扑排序的实现思路:(1)从有向图中选取一个没有前驱的顶点,并输出之;(2)从有向图中删去此顶点以及所有以它为尾的弧;没有

2022-02-22 19:32:30 235

原创 前缀和的应用

一维前缀和 模板题https://www.acwing.com/problem/content/797/#include<iostream>using namespace std;int s[100100];int a[100100];int main(){ int n,m; cin>>n>>m; for(int i = 1;i <= n;i++) cin>>a[i]; for(int i = 1;i..

2022-02-22 19:30:20 171

原创 记录一下第五道省选难度蓝题八数码【BFS】洛谷P1379

#include<iostream>#include<string>#include<queue>#include<unordered_map>using namespace std;int dx[4] = {-1,0,1,0};int dy[4] = {0,1,0,-1};int bfs(string start){ queue<string> q; unordered_map<string,int> dis;//.

2022-01-13 13:44:16 193

原创 并查集模板

void init(){for(int i = 1;i<=n;i++) f[i]=i;}数组f[]存放各点的祖先int find(int x){ if(f[x] = x) return x;//递归出口 找到了祖先的位置 else { f[x] = find(f[x]); return f[x];//路径压缩 优化算法}}然后将两个点合并即产生共同的祖先void unionn(int i,int j){ i .

2021-12-04 00:05:52 75

原创 素数筛问题及poj相关例题

判定一个整数n是否为素数——试除法bool Isprime(long long n){ if(n==2||n==1) return false; for(int long long i = 2; i*i <=n;i++){ if(n%i==0) return false;} return true;}求出一个范围内所有素数---素数筛选问题第一种算法----埃式筛它利用了素数的性质算数定理:任何一个合数(非质数),都可以以唯一的形式被写成有限

2021-11-26 00:06:40 295

原创 二分模板及例题

二分查找的时间复杂度是0(logn),其实质是将一段数据分成两个不同性质子数据段,很多题都可以转换成二分的思想。模板如下(来自y总)模板一while(l<r){int mid = (l+r)>>1;if(mid>=check(k)) r = mid;//check(k)是我们要划分的问题,mid大于它说明mid需要左移,因此通过更新relse l = mid+1;}模板二while(l < r){int mid = (l+r+1)>>1

2021-11-24 13:34:39 353

原创 acwing第26周第三题题解

https://www.acwing.com/problem/content/description/4081/这题是用动态规划和前缀和的思想去做,首先要分析第i个位置的字符的状态,要么是1要么是0,如果是0,则它的01串的数量取决于第i-1个位置的优秀串(f[i] = f[i-1]),如果是1,那么它想要变成优秀串就只能是通过连续的k去变,所以f[i]取决于f[i-k]而且只有当i>=k时它才有优秀串的可能。再考虑初始状态,这里的f[0]比较特殊,需要通过f[1]去推出f[0],f[1] = f

2021-11-22 23:17:13 99

原创 acwing第25场周赛第二题题解

https://www.acwing.com/problem/content/4080/首先分析问题,我们要遍历这个字符串,把每一个字符每次出现的位置都记录下来,以便于最后再遍历字符串找出最小的k;因此需要一个二维数组记录是哪一个字符,这个字符出现的位置。int b[26][1000010];//定义二维数组;int k[26]//存储对于每个字符出现的次数int j;for(int i =0;i< s.size();i++){ j = s[i]-'a'//int型数组存储

2021-11-22 22:38:37 291

空空如也

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

TA关注的人

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