
算法与数据结构
而生也无涯
这个作者很懒,什么都没留下…
展开
-
python 小知识
import bisect as bsarr=[1,2,3,3,3,5,6]print(bs.bisect(arr,3))print(bs.bisect_left(arr,3))print(bs.bisect_right(arr,3))print(bs.bisect(arr,4))print(bs.bisect_left(arr,4))print(bs.bisect_right(arr,4))525555import heapq as hpclass Xxm:原创 2021-06-05 00:23:34 · 110 阅读 · 0 评论 -
python线段树
class Node: def __init__(this,l,r,vMax,vSum): this.l=l this.r=r this.vMax=vMax this.vSum=vSum this.fSum=0 this.fMax=0 def __init__(this): passclass SegTree: def __init__(this,n,arr):原创 2021-06-05 00:19:21 · 269 阅读 · 0 评论 -
【贪心】蓝桥杯-完美的代价
问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。 交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换 md : madma 第三次交换 ma : madam (回文!完美!) n<=8000思路:首先,对是否能构成回文串进行判定:若每个字母出现次数均为偶数,则能构成若有且仅有一个字母出原创 2021-04-17 20:33:42 · 136 阅读 · 0 评论 -
DP 计蒜客-墙壁涂色
蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 3 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 n 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。首先建立DP数组 dp[60][3],dp[i][0]表示第i个位置放置红色,以此类推。则如果不考虑墙壁的循环性带来的最后一块与第一块的冲突,有如下状态转移: dp[i][1]=dp[i-1][2]+dp[i-1][0]; dp[i][2]=dp[i-1][0]+dp[i-1.原创 2021-01-10 11:06:35 · 241 阅读 · 0 评论 -
图论相关
int par[MAX_N];int rank[MAX_N];void init(int n){ for(int i=0;i<n;i++){ par[i]=i; rank[i]=0; }}int find(int x){ if(par[x]==x){ return x; }else{ return par[x]=find(par[x]); }}void unite(int x,int y){ x=find(x); y=find(y); if(x==y) r原创 2020-10-14 21:51:25 · 94 阅读 · 0 评论