自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [MAP][排序]451. 根据字符出现频率排序

451. 根据字符出现频率排序难度中等290收藏分享切换为英文接收动态反馈给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca.

2021-07-03 11:29:22 177

原创 [尺取]Leetcode 1438. 绝对差不超过限制的最长连续子数组

1438. 绝对差不超过限制的最长连续子数组难度中等141收藏分享切换为英文接收动态反馈给你一个整数数组nums,和一个表示限制的整数limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于limit。如果不存在满足条件的子数组,则返回0。示例 1:输入:nums = [8,2,4,7], limit = 4输出:2 解释:所有子数组如下:[8] 最大绝对差 |8-8| = 0 <= 4.[8,2] 最大绝对差 |...

2021-02-21 20:38:27 193

原创 [尺取法] leetcode 1004. 最大连续1的个数 III

1004. 最大连续1的个数 III难度中等224收藏分享切换为英文接收动态反馈给定一个由若干0和1组成的数组A,我们最多可以将K个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释: [1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转到 1,最长的子数组长度为 6。示例 2:输入:A = [0,0,1,1,0,0,1,1...

2021-02-19 21:59:06 182

原创 LeetCode 995. K 连续位的最小翻转次数

995. K 连续位的最小翻转次数难度困难172收藏分享切换为英文接收动态反馈在仅包含0和1的数组A中,一次K位翻转包括选择一个长度为K的(连续)子数组,同时将子数组中的每个0更改为1,而每个1更改为0。返回所需的K位翻转的最小次数,以便数组没有值为0的元素。如果不可能,返回-1。示例 1:输入:A = [0,1,0], K = 1输出:2解释:先翻转 A[0],然后翻转 A[2]。示例 2:输入:A = [1,1,0], K ...

2021-02-18 23:18:42 169

原创 GIT CodeReview 流程

转载https://blog.csdn.net/weixin_39706943/article/details/84260235

2020-05-27 11:06:31 348

原创 [设计模式]C++实现单例

单例指对象只能被创建一次,不可重复创建 利用C++ static 关键字实现静态局部变量,即使重复声明返回的也是第一次创建的对象 代码:int x = 20;​class Singleton{private: Singleton() { val = x++; cout << "Obeject Create!\n"; } //私有构造函数,只能通过...

2020-02-24 15:32:34 132

原创 [算法]parition求TopK

parition算法是用于解决TopK问题代价最小的算法之一时间O(n) 空间O(1)算法流程:引入随机化选取一个枢轴并与尾元素交换 将区间内元素排为小于枢轴在前,大于枢轴在后的形式 使得i-lst大于等于枢轴 比较i与k大小递归处理 返回元素class Solution {public: int findKthLargest(vector<int>&...

2020-01-30 18:03:46 287

原创 《剑指OFFER》刷题笔记

《剑指OFFER》刷题笔记未完待更新1.二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 暴力查找 复杂度O(nm) 对每行二分查找O(nlog(m)) 二维数组中的一个数,小于它的数一定在其左边,...

2020-01-28 13:54:23 341

原创 [归并] 合并K个排序链表

合并K个排序链表思路:暴力合并为一个链表后sort(误!)插堆还原(误!)每次选一个最小的插入(堆优化选择过程) 复杂度/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : va...

2020-01-01 19:58:50 150

原创 基于STL实现自动贪心寻路算法的贪吃蛇小游戏

基于STL实现自动贪心寻路算法的贪吃蛇小游戏写贪吃蛇小游戏的想法来自CometOJ-Contest#13的B题,当时用STL双端队列维护蛇身的时候觉得非常方便,现在用EasyX图形库实现一下。运行截图:脑残贪吃蛇欢迎界面:普通模式:无敌模式:实现思路:代码很短,写的时候基本上是想到哪写到哪。现在看的话大概要分成四部分。一、初始化,全局控制等...

2019-12-01 18:25:18 777

原创 [思维][虚点]Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid

题意:给定n个城市,求最小的权值使得所有城市都有电,对于每个城市要么建电站,要么连接到已经有电的城市,ij两点连接边权为(abs(arr[i].x - arr[j].x) + abs(arr[i].y - arr[j].y) ) * (arr[i].k + arr[j].k),建电站权值为arr[i].c解题思路:转换问题,把建电站也变为权值边,建电站代表连接虚点0的边,然后跑最小生成树即...

2019-11-02 22:11:41 153

原创 [思维] Codeforces Round #591 D. Sequence Sorting

题意:给定一序列,每次可以选择一个数,并将序列内所有数放在序列最前面/最后面,问使序列有序的最小操作数考虑最差情况肯定是不同数字个数 - 1(完全无序和区间交叉)考虑交换次数不容易思考,可以反向考虑最多的不用交换就有序的数字,思考发现,当两个数字x < y,数字区间无交叉且数值间没有第三个数字时,这两个数字不用动就有序,那么将题目数字抽象为线段并离散,使得最大连续数值不...

2019-11-02 20:31:43 176

原创 [换根DP] P1364 医院设置

其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为1。如上图中,若医院建在1 处,则距离和=4+12+2*20+2*40=136;若医院建在3 处,则距离和=4*2+13+20+40=81……对于每个根可以很容易的通过一遍dfs获得答案然后考虑换根,对于根u v 将根从u换...

2019-10-30 22:22:27 227

原创 [换根dp] Codeforces Round 67 (Rated for Div. 2) E - Tree Painting

题意:给定一颗树,第一次选一个点涂黑,贡献是与当前点相连的白点数量(联通分量),剩下每次只能选与黑点相邻的白点,直到整棵树涂黑,问最大能贡献多少考虑问题本质,相连的白点就是子树大小,不管选择方式如何只要根固定了答案是唯一的。并且考虑维护子树大小数组,可以发现对于根与根相邻的两点间子树大小非常好转移 (总数固定,另一个点的儿子数也知道)所以可以二次扫描对每个点做根重新转移统计答案即可...

2019-10-30 08:58:43 158

原创 [思维]Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) A B1 B2 C D

A.给定两个数字的开头的第一位字符,问能不能凑成两个数字使得x = y + 1while(cin >> a >> b){ if(a == 9 && b == 1) { cout << "99 100" << '\n'; return 0; } if(a == b) { cout << a << '1...

2019-10-28 20:49:46 169

原创 [Comet OJ - #13] [DQ] [并查集] B C

C 给定1000*1000的矩阵,每次将一个子矩阵内全部值赋值为1,问四联通块数量 Q 3e4首先考虑复杂度,3e4次操作的合并暴力肯定不行,并且要考虑已经为1的块不应该再次考虑1.考虑合并操作,对于一个0点,当他变为1对答案的影响只有几种情况周边都是0,总联通联通块数量加1周边有(1 - 4)个不同联通块,ans -= 不同联通块个数+1对于相同的联通块通过当前0点合并没...

2019-10-28 10:06:02 2049

原创 [二分] [计算几何] AtCoder Beginner Contest 144 D Water Bottle

题意:给定一底面积为正方形的方体并装入x体积的水,问最大倾斜角度使得水不流出如图所示只有两种情况且面积具有单调性 二分求解即可/* Zeolim - An AC a day keeps the bug away*/ //#pragma GCC optimize(2)//#pragma GCC ("-W1,--stack=128000000")#include &l...

2019-10-27 22:48:26 197

原创 [单调队列][前缀和][滑窗][Codeforces] Round #594 (Div. 2) D1 The World Is Just a Programming Task

问题:给定一括号序列,问交换任意一对括号后,使序列任意循环滚动,这len种滚动串最大有多少个合法序列首先若左括号不等于右括号必死无疑。剩下考虑枚举交换,对于相同括号交换后没意义,out对于不同括号交换后,假设序列已经合法,则滚动合法情况数就等于序列中满匹配的括号序列数定义满匹配:对于序列(())(()())满匹配有两个 1234 和 5678910,将这两个子串拆出来,前面...

2019-10-25 12:48:44 142

原创 [Codeforces] 592 div2 A B D E

A - Pens and Pencils emm题意忘了B - Rooms and Staircases 有两层房子,每层有k间 每间要么是0要么是1 0只能左右, 1可以上下 问最多能走多少间。不用考虑上下左右来回走,枚举每个转折上面走最大下面走最大更新极值即可,来回走必然不如这样优/* Zeolim - An AC a day keeps the bug aw...

2019-10-24 21:25:44 219

原创 [Codeforces] Round #595 (Div. 3) A B1 B2 C1 C2 D1 D2 E

A: 将数分为k组使得每组不包含数值差为1的数解:正整数可直接分为两组 奇数 偶数 符合题意, 所以给定数列有相邻就是2否则就是1B1 / B2: 给定一每个点出度为1的图问每个点走到自己需要多少步明显走到自己是个环, 并且环上答案都一样,递归求解即可#include <bits/stdc++.h>using namespace std;const int MAX...

2019-10-23 16:04:39 262

原创 [Codeforces] Global Round 5 A C1 C2 D

A题意:使得全部数初二上取整或下取整加和后用python取整输出就行import math n = int(input()) cnt = 0 while n : x = int(input()) if x & 1: if cnt & 1: print( math.floor(x / 2) ) ...

2019-10-22 20:30:30 174

原创 [主席树单点更新区间极值动态开点][最长上升子序列] CodeForces 474 F. Pathwalks

题意:给定一张图 联通或不联通, 求最大的路径长度使得路径边号递增且权值递增其实就是 线段树/树状数组 求最长上升子序列且限制转移条件为边两点时才能转移考虑建1e5棵线段树/树状数组进行维护 下标是权值 值是以下标为结尾的lis必然爆炸,所以用主席树动态开点维护查询即可 代码瞎搞一下就行#include <bits/stdc++.h>using nam...

2019-10-21 20:21:37 249

原创 [思维]挖矿

这个挖矿游戏会给出一个n*m个格子的地图,每个格子都有黄金。在游戏开始时小明会随机出现在地图的某一个格子当中。小明可以将他所在的格子的黄金收归囊中,并且还可以向下或者向右移动,然后继续收集黄金。地图上某些格子是障碍物,小明不能移动到有障碍物的格子上。不过,在游戏开始时,小明可以随意地在地图上放置传送门。传送门可以传送到地图上某一个确定的格子,传送门放置的位置和该传送门传送的位置在游戏开始之前必须...

2019-10-21 16:07:13 266

原创 [DP][bitset][线段树]练习赛53 A C E

A 超越学姐爱字符串 A:超越学姐非常喜欢自己的名字,以至于英文字母她只喜欢“c”和“y”。因此超越学姐喜欢只含有“c”和“y”的字符串,且字符串中不能出现两个连续的“c”。请你求出有多少种长度为n的字符串是超越学姐喜欢的字符串。答案对1e9+7取模。解题思路:设dp[MAXN][2] 代表第i个位置是c 或 y的情况数有dp[1][0] = dp[1][1] =1 则每...

2019-10-16 21:20:44 219

原创 [模板]莫队

https://www.luogu.org/blog/codesonic/Mosalgorithm讲的比较全面针对例题写将询问排序bool cmp(node a,node b){return pos[a.l]^pos[b.l]?pos[a.l]<pos[b.l]:pos[a.l]&1?a.r<b.r:a.r>b.r;}然后针对询问操作...

2019-10-09 20:33:46 142

原创 [树上DP] I 2019 P2634 [国家集训队]聪聪可可

求树上简单路径长度为2019倍数的路径条数解题思路 :二维状态dp[i][j]代表i节点的子树上所有点到i的距离为j的个数考虑两点u, v,两点间的贡献为ans += dp[u][i] * dp[v][(2019 - i - v + 2019) % 2019]; i =0 - 2018此时u的贡献会转移为dp[u][(i + val(边权)) % 2019] += d...

2019-10-08 20:54:07 197

原创 [Python语法练习]CF 591 C - Save the Nature

解题思路:二分check 代码比较长 所以拿来练习一下py语法总结:新建空listarr = []定义函数 def (参数1, 参数2, 参数3): return 任意类型列表python 默认向负无穷取整 整除 // 即为 C++ 的floor输入一个列表arr = [int(len) for len in input().split()]代...

2019-10-08 15:26:52 226

原创 [模板]BM求线性递推式

要求第n项时,直接linear_seq::(gao,n)即可,不放第0项的话,就是linear_seq::(gao,n-1)#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1e9+7;const int N=1024; ll modpow(ll a...

2019-10-07 22:31:14 187

原创 [模板]多边形面积交

1.必须逆时针给出多边形顶点2.面积并 = 面积和 - 面积交#include <bits/stdc++.h>using namespace std;const int maxn = 300;const double eps = 1e-8;int dcmp(double x){ //精度误差比较 if(x > eps) return 1...

2019-10-07 22:29:18 171

原创 [思维][RMQ] G Parenthesis

给一合法括号序列,交换xy位置的括号问交换后是否合法解题思路:左扩1右扩-1做前缀和数组当且仅到pre[i] >= 0 && pre[n] == 0时合法考虑交换, 若s[x] == s[y]交换无意义当前为'('后为')'则xy区间内差分值均要减二 所以区间极小值小于2则非法当前为')'后为'('交换后发现差分值只会变大,且原序列合法,则必然合法...

2019-10-07 22:27:06 104

原创 [树状数组]H千万别用树套树

解题思路:两棵bit分别存线段的开始点和结束点两个数组存开始点和结束点的线段数量针对每次询问用总线段数- 区间右边的线段(结尾小于等于x) - 区间左边的线段(开头大于等于x) - 当前线段内被完全包含 - 开头结尾在当前区间内即为答案在线更新询问 复杂度Onlogn/* Zeolim - An AC a day keeps the bug away*/...

2019-10-07 22:16:04 180

原创 [可持久化权值线段树上二分] Just h-index

求区间x,y内的h-index(最大的h有h篇论文引用量不小于h)解题思路:在树上x,y区间内二分答案check#include <bits/stdc++.h>typedef long long ll;using namespace std; const int MAXN = 2e5 + 10; int fst, lst; int N; str...

2019-10-07 22:10:38 183

原创 [大数] 组合数

解题思路:结合图式求min(C(n, m), 1e18)如果m > n / 2 则有 m = n - m计算可得当m大于40的时候C必然大于1e18所有只用大数暴力求解m较小部分的情况,或者用C++int128边算边约分ps: py的整数除运算要用// 不然会变为浮点数mx = 1000000000000000000 def gcd(a,b): if a...

2019-10-07 22:04:55 553

原创 [模板]离散化

struct lsh{ int v[MAXN], vl; lsh() { vl = 0; } void pb(int val) { v[vl++] = val; } //向后加元素 void init() { sort(v, v + vl); vl = unique(v, v + vl) - v; } //初始化排序,重置大小 int find(int val) { retur...

2019-09-15 17:47:00 111

原创 [树状数组] Galahad

题意:求给定区间内不同数的和经典例题https://vjudge.net/problem/HDU-3333解题思路:这两天有点傻,emmm离线操作扫一遍数组对于重复的值树状数组维护最靠近当前坐标的那一个,等同于把之前重复的元素删掉。这样再对询问进行前缀和计算则只能计算到最靠近当前点的每个只出现一次的元素不在区间的自然查询不到,树状数组快速求前缀和记录答案输出即可...

2019-09-15 17:40:46 164

原创 [可持久化权值线段树] hdu 6703 array

题意:给定一个1-n的排列,两种操作1.(1,pos),indicating to change the value ofapostoapos+10,000,000;2.(2,r,k),indicating to ask the minimum value which is **not equal** to anyai(1≤i≤r) and **not less ** ...

2019-09-12 09:13:09 308

原创 [可持久化权值树] Cutting Bamboos

题意:给定区间, 切y次将区间内的树全切完,每次切掉的所有和相同切每次都是高度为h的横刀(区间高于h的值全部变为h),求第x次切的高度解题思路:第x次切的高度不知道,但是第1 - x次一共切掉的高度和剩下的高度可以O1计算而出可持久化权值树记录cnt和sum二分枚举一个高度,使得区间内所有高于此高度的权值变为此高度, 剩下的和刚才O1算出的比较即可在权值树上查询等同于找...

2019-09-09 23:06:39 186

原创 [模板]序列自动机

仅作整理struct substr{ vector <int> st[256]; void init(char *x, int len) { for(int i = 0; i < len; ++i) { st[x[i]].push_back(i); } } bool isub(char *x, int len) { int now...

2019-09-06 21:38:33 146

原创 [模板] 负环

spfa求负环,玄学复杂度int head[MAXN] = {0}, tot = 0;void init(){ mem(head); tot = 0; }struct node { int from, to, val, nex; } edge[MAXN << 1];int add(int x, int y, int z){ edge[++tot].to = y;...

2019-09-04 16:46:07 133

原创 [DFS序上建可持久化字典树贪心异或最大值] Query on A Tree HDU - 6191

题意:给出一颗树和Q个询问对于每个询问 x y你需要搞出 x 节点 子树上一点 (包括自己) 与 y 值异或的最大值解题思路:套路题子树 → dfs序异或极值 → trie树dfs + trie → 可持久化trie按连续序列建树即可代码/* Zeolim - An AC a day keeps the bug away*/ ...

2019-09-03 20:44:14 230

空空如也

空空如也

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

TA关注的人

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