习题课3-2(动态规划2、计算可行方案)

习题课3-2(动态规划2、计算可行方案)刷油漆n辆车排成1排,还有m种涂料,第i中涂料可以涂ai辆车,恰好可以涂n辆车,要保证相邻车辆油漆不同问题分析排成一排恰好涂完相邻车的油漆种类不同解法1(动态规划)令f(x,p,c1,c2,…,cm)表示第x辆车到第n辆车,第x-1辆车涂的油漆种类是p,第i种油漆还剩下ci次,得到的方案数f(n+1,p,0,…0) = 1f(x,p,c1,c2,…,cm) = f(x+1,q,c1,c2,…,cq-1,…,cm)求和 其中n等于ai求和
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题3-3(动态规划)

习题3-3(动态规划)倒水问题三种操作,倒满、倒空、把A杯中的水倒向B杯t<=4 搜索 t<=100的量级用DP(有一种是类似搜索记忆法) t<=200记录当前的状态,两个水杯的水量,操作数,当这三者相等时的操作,这两者是等价的,不管中间经历了什么,经过了若干次操作后,A杯和B杯最终的水量是各自相等的dp(i)(u)(v) 经过i次操作能否把A杯倒出u这么多水,或者把B杯倒出v这么多水标答demon=3 m=2[外链图片转存失败,源站可能有防盗链机制,建
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题课4-1(hash、回文串问题)

习题课4-1(hash、回文串问题)矩形给定两个矩阵,判断第二个矩阵在第一个矩阵哪些位置出现过输出位置的左上角有多个答案,按字典序输出解法1用一个数字来代替一个矩阵枚举两个矩阵,n4,,504是1亿以内的解法2哈希字符串ebacdhash(ebacd) = (5B4+2B3+B2+3B1+4B^0) mod moB是大于26的任意指数 mo为一个很大的质数如何尽量减少碰撞的可能取两套B mo,如果算出来的hash1和hash2都相等,则认为这两
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题课4-2(子串(动态规划)、前缀串问题(trie树))

习题课4-2(子串(动态规划)、前缀串问题(trie树))回文串比较正反hash值线性时间计算出hash值?后缀和计算邓老师数质数是除了1与自身不再有其他因数的正整数是一个合数质数用筛法求解代码解析i从2到n枚举把它的2倍到若干倍但是小于等于n的数标记为合数筛掉质数倍数的数(质数倍数的数不是质数,但是要判断一下)子序列解法1O(2^n)的时间吧所有的子序列求出来,然后去重解法2(动态规划)递推,在竞赛中也称为动态规划f(i)表示s(i)所拥有的不同
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题课4-3(哈希桶、KMP)

习题课4-3字符串匹配kmp算法1.构造next数组2.匹配next数组从第一位开始匹配,直到不相同,记录了最长长度的匹配,下次匹配,直接从这个位置开始匹配大串ababcabcaba 模式串abcabafori 从start开始,a匹配上,移动到a,b匹配,移动b,c不匹配,回到start,回到start,重新匹配,不匹配的话一直往回走,直到回到start,前两位匹配上,一直比较到最后一位,不匹配,回到模式串的倒数第二位b,一直回退到模式串的第三位c,发现匹配
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

限流初探

文章目录官方文档redis弱脚本令牌桶方法测试样本单机可套用模版单例可配置模版jemeter测试测试1输出结构测试2从请求链路入口做限流配置规则的持久化处理全链路压测特点gatling压测官方文档https://sentinelguard.io/zh-cn/docs/parameter-flow-control.htmlhttp://xiajunhust.github.io/2018/12/04/Sentinel-%E7%83%AD%E7%82%B9%E5%8F%82%E6%95%B0%E9%9
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题5-1(凸壳、拓扑排序)

习题5-1(凸壳、拓扑排序)凸包卷包裹求凸壳解法1求上下凸壳,类似卷包裹,但是不是极角排序(任取一个点,做极角排序)按照先x轴后y轴的方式升序排序,这是为了找到一个一定在凸包上的点然后求上凸壳和下凸壳,可以想象在y轴负无穷处有一个点,然后求凸包得到上凸壳,y轴正无穷有一个点,然后求凸包得到下凸壳单调栈代码解析convex函数,对a数组求凸包,求的结果存储在b数组中可以想象在y轴负无穷处有一个点,然后求凸包得到上凸壳,上凸壳加上y轴无穷远处的点,可以把内部
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题课5-2(最近点对、线段相交)

习题课5-2(最近点对、线段相交)最近点对给定n个二维平面的点,求距离最近的点对,并输出它们的距离分治子序列那道题,把序列分成两半,分别求解左右两边解法1分治算两边令solve(l,r)表示第l个点到第r个点的最近点对的距离solve(l,r) = min(solve(l,mid),solve(mid+1,r),cal(l,r,mid))mid = (l+r)>>1; call(l,r,mid)表示第一个点在(l,mid),第二个点在(mid+1,r)所得到的最近点
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题5-3(打牌问题、动态规划最大方案问题)

习题5-3(打牌问题、动态规划最大方案问题)纸牌给你n张牌,对手同样有n张牌所有的牌都互不相同每轮你和你的对手都打出一张牌牌的点数更小的获胜问你运气最好能获胜几轮分析n<=10^5怎么枚举不同的情况解法1我出一张牌,对方出一张牌,牌就没了可以用一张表格来表达流程,表格确定,比赛就比完了枚举完所有的表格,找到赢得最多的即为答案枚举我可能出的牌,枚举地方可能出的牌我的复杂度O(n!) 敌方O(n!)总共O((n!)^2)重要的是你的牌的对局对象,你这次牌第几轮打
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题课1-2(逆序对、哈希、哈夫曼树)

习题课1-2(逆序对、哈希、哈夫曼树)数字盒子维护一个集合S支持两种操作insert delete要求输出操作是否成功,操作次数5X10的5次方集合中元素不重复,使用一个bool数组记录每一个数是否出现过通过哈希函数把原数变小,对一个质数取余,但是并不是真的变小,而是作为原数的代号,代码实现Hash()vector<ll>::iterator ptr = table[h].end()删除时,没有进行元素的移动*ptr = tab
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

习题课1-3(并查集、BST)

习题课1-3(并查集、BST)等式第一行整数T,表示数据组数接下来会有T组数据,对于每组数据第一行是两个整数n,m,表示变量个数和约束条件个数接下来m行,每行三个整数a,b,e,表示第a个变量的和第b个变量的关系若e=0则表示第a个变量不等于第b个变量若e=1则表示第a个变量等于第b个变量将两个元素所在集合合并起来查询两个元素是否在同一个集合中注意e=1的操作要在e=0的操作之前解法1第i个元素所在集合ID(i)把=1的条件提到前面来
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

leetcode刷题奠基仪式

参考地址https://github.com/yuanguangxin/LeetCodehttps://blog.csdn.net/lingpy/article/details/88085446https://blog.csdn.net/CowBoySoBusy/article/details/82559651
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

并发编程10

并发编程10读写锁读读并发package BingFaBianCheng.DuXieSuo;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantReadWriteLock;@Slf4j(topic = "enjoy")publi
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

并发编程11

并发编程11t1释放锁之后,唤醒t2线程,t2线程从LockSupport.park()处唤醒,继续往下执行Thread.interrupted()并不是打断线程,只是清除打断标记线程打断sleep、wait、join这种线程如果被打断则会直接清除打断标记 --> 什么是打断标记1.怎么看打断标记? Thread.interrupted()2.打断标记是标记自己这个线程是否被别人打断过了例子1—sleep线程打断package BingFaBianCheng.bin
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

并发编程12

并发编程12–ReentrantLock解锁流程和读写锁源码{w thread=t1} ^ | V{r thread=t2 ws=-1} <-> {shared thread=null prev=null next=null}// 比普通独占锁中的节点多了shared属性,下一个节点是shared继续唤醒,直到遇到exclusive ^ | V{r thread=t3 ws=-1} <-> {share
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

并发编程13

并发编程13高性能读写锁StampedLock(jdk内部的)ReentrantReadWriteLock 的性能已经很好了但是他底层还是需要进行一系列的cas操作去加锁;StampedLock如果是读锁上锁是没有这种cas操作的性能比ReentrantReadWriteLock 更好也称为乐观读锁;即读获取锁的时候 是不加锁 直接返回一个值;然后执行临界区的时候去验证这个值是否有被人修改(写操作加锁)如果没有被人修改则直接执行临界区的代码;如果被人修改了则需要升级为读写锁(Reentrant
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

并发编程14

并发编程14定义一个线程池package BingFaBianCheng.bingFaBianCheng14.poolv1;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @Author 钢牌讲师--子路 **/@Slf4j(topic = "e")public class TestPo
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

并发编程15

并发编程15jdk内部线程池ExecutorServiceThreadPoolExecutorScheduledExecutorService线程池状态ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量状态value说明RUNNING(当线程池创建出来的初始状态)111能接受任务,能执行阻塞任务SHUTDOWN(调用shutdown方法)000不接受新任务,能执行阻塞任务 肯定可以 執行正在執
分类: 其他 发布时间: 02-11 10:20 阅读次数: 0

并发编程16

并发编程16ThreadPoolExcutor源码关闭线程池shutdown()public void shutdown() { final ReentrantLock mainLock = this.mainLock; mainLock.lock(); try { // 是否允许shutdown checkShutdownAccess(); // 设置成shutdown状态
分类: 其他 发布时间: 02-11 10:19 阅读次数: 0

并发编程17

并发编程17关于CPU 内存CPU(寄存器、缓存)、内存(内存条)、I/O 设备(磁盘、键盘、鼠标)都在不断迭代,在这个快速发展的过程中,有一个核心矛盾一直存在,就是这三者的速度差异。CPU 和内存的速度差异可以形象地描述为:CPU快于内存快于 I/O 设备,程序里大部分语句都要访问内存,有些还要访问 I/O所以程序整体的性能取决于最慢的操作——读写 I/O 设备,也就是说单方面提高 CPU 性能是无效的。为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构、操作系统、编译程序都做出了贡
分类: 其他 发布时间: 02-11 10:19 阅读次数: 0