04 2021 档案

摘要:传送门 有3个城市,'.'表示空地,可以用于建桥,'#'是城墙。 然后求至少需要建几个桥才能使得3个城市连通。 思路是用01bfs 建立一个数组dis[k][i][j]表示从第k个城市出发到i,j至少要建筑几个桥。 然后进行3次01bfs,因为'.'需要花费,权值是1,所以放在双端队列的尾部,其他放 阅读全文
posted @ 2021-04-26 14:35 Emcikem 阅读(172) 评论(0) 推荐(0)
摘要:传送门 给出一个地图,有空地以及障碍物。可以往四个方向走,但是左走的次数不能大于x次,右走的次数不能大于y次。 普通的bfs是不能做到最有的,因为有vis,那么到达一个点时可能存在两种走法: 右->上->左->上->右 左->上->右->下->右 也就说左走的次数太多了,导致浪费了右走的次数。 那么 阅读全文
posted @ 2021-04-25 14:17 Emcikem 阅读(74) 评论(0) 推荐(0)
摘要:给出5个长度为100的字符串 1表示有这个英雄,0表示没有 传送门 相当于就是5*100的矩阵,要求每一行选择一个下标且权值是1,且都不在同一列. 表示我方pick的情况,最后在剩下的那一部分,C(95,5)表示我方的部分 C(90,5)表示敌方ban的部分,C(85,5)表示敌方pick的部分,然 阅读全文
posted @ 2021-04-23 15:51 Emcikem 阅读(107) 评论(0) 推荐(0)
摘要:给出一个数组,长度是n,对于区间,长度至少为k 求最大区间中位数 传送门 用二分去求。 对于某个数字判断是否是中位数: 首先肯定的是大于等于中位数数的数的数字比小于中位数的数字要来的大。 那么就求出前缀和 如果这个数字比中位数小,那么权值就是-1,否则就是1 然后只需要去判断是否存在一个区间长度大于 阅读全文
posted @ 2021-04-22 20:31 Emcikem 阅读(133) 评论(0) 推荐(0)
摘要:给出元素,求区间次数次数大于一半的数字 传送门 莫队先统计数字个数,然后用随机化随即下标,因为出现次数大于区间一半,那么有大于$\frac{1}{2}$的概率能找到这个数字 进行随机化20次即可. 时间复杂度$O(20n\sqrt n)$,开个O(2)顺利过去 #include <bits/stdc 阅读全文
posted @ 2021-04-20 15:09 Emcikem 阅读(68) 评论(0) 推荐(0)
摘要:给你一堆物品,每个物品只能用一次,求物品能组合的所有情况 传送门 用01背包,初始化dp[0] = 1 然后01背包或取操作即可,时间复杂度$O(mn)$ int a[N], dp[N]; void solve(int kase){ int n = read(), sum = 0; for(int 阅读全文
posted @ 2021-04-19 11:10 Emcikem 阅读(54) 评论(0) 推荐(0)
摘要:吉老师线段树区间加操作 阅读全文
posted @ 2021-04-14 13:12 Emcikem 阅读(99) 评论(0) 推荐(0)
摘要:传送门 [l,r] 区间,把大于x的变成x 求区间最大值 求区间和 普通线段树不能做到区间取min操作,但是吉老师提出了一个方法传送门 在普通线段树基础上,每个结点维护的值有sum表示区间和,mx表示区间最大值,cnt表示区间最大值出现的次数,se表示区间次大值 其核心想法在于 当 \(m a \l 阅读全文
posted @ 2021-04-13 14:26 Emcikem 阅读(174) 评论(0) 推荐(0)
摘要:第一类斯特林数的模型转换 阅读全文
posted @ 2021-04-08 16:23 Emcikem 阅读(63) 评论(0) 推荐(0)
摘要:第二类斯特林数nb 阅读全文
posted @ 2021-04-06 19:29 Emcikem 阅读(63) 评论(0) 推荐(0)
摘要:洛谷 P1757 通天之分组背包 - 分组背包,最多只能选一个 就算分组背包模板,用vector把每个种类相同的存一起就行了 HDU 1712 ACboy needs your help - 分组背包,最多只能选一个 对于每一个course,只能选择一个使用日期。那么就把course进行分组,运用分 阅读全文
posted @ 2021-04-01 11:22 Emcikem 阅读(61) 评论(0) 推荐(0)