随笔分类 -  luogu

摘要:#include<iostream> using namespace std; const int N = 20; string g[N]; int n; int maxv; int st[N]; void dfs(const string &s, int len, int u){ for(int 阅读全文
posted @ 2020-10-14 16:59 yys_c 阅读(78) 评论(0) 推荐(0)
摘要:$f(i, j)$表示走到第j个点,走过的路径情况是i的所有走法的集合,存储最短距离属性。 $f(i, j) = min {f(i, j), f(i - { j }, k)}, k = 0, 1, ..., n - 1$其中k是当前路径i下走到j的上一个点。 #include<iostream> # 阅读全文
posted @ 2020-10-14 13:38 yys_c 阅读(156) 评论(0) 推荐(0)
摘要:这题预处理比较蛋疼,因为可能出现陨石攻击区域重合和同一个格子多个陨石的情况,要先看一下这个位置是否被其他陨石影响,如果已经被影响,就应该取两者时间的较小值,随后更新当前这个陨石的影响范围,注意:如果这个陨石影响的区域中如果存在已经被其他陨石影响的情况,就取两者最小值,否则设置为当前陨石的时间 #in 阅读全文
posted @ 2020-10-14 11:22 yys_c 阅读(185) 评论(0) 推荐(0)
摘要:凡是存在边的两个点,设它们的边权为0,其他不存在边的两点之间的距离按照欧拉距离来算,这样只要求一遍最小生成树就可以得到加边的最小值。 复杂度:\(O(n^2)\) #include<iostream> #include<cstring> #include<cstdio> #include<cmath 阅读全文
posted @ 2020-10-13 20:10 yys_c 阅读(113) 评论(0) 推荐(0)
摘要:题意:求从1到[2, n]中每一个点的最短路$k_i$,再求从[2, n]的每一个点出发到1的最短路$p_i$, 求所有$k, p$的和。 堆优化dijkstra \(O(nmlogn)\):40pts #include<iostream> #include<cstring> #include<qu 阅读全文
posted @ 2020-10-13 16:53 yys_c 阅读(86) 评论(0) 推荐(0)
摘要:历程 裸dijkstra \(O(QN^2)\),TLE 堆优化dijkstra \(O(QMlogN)\),TLE floyd \(O(QN^3)\),TLE floyd第一次优化 $O(QN^3) $, TLE floyd第二次优化 \(O(N^3)\), WA floyd第二次优化改写 \(O 阅读全文
posted @ 2020-10-13 14:19 yys_c 阅读(114) 评论(0) 推荐(0)
摘要:对于一个值x,如果能够满足牛之间的最短距离>= x,则所有小于等于x的值t均能够满足存在一种安排方法能够使奶牛之间的最短距离大于等于t。所以可以二分找最短距离的最大值。 复杂度:\(O(nlog(1e9))\) #include<iostream> #include<algorithm> using 阅读全文
posted @ 2020-10-12 18:13 yys_c 阅读(129) 评论(0) 推荐(0)
摘要:实数二分题,二分+贪心check 如果存在一种使用方法使得使用时间$\ge x$,那么所有小于等于x的时间t都能够满足条件。所以可以通过二分得到使用时间的最大值。 复杂度:\(O(nlog(T))\) #include<iostream> using namespace std; const int 阅读全文
posted @ 2020-10-12 17:09 yys_c 阅读(87) 评论(0) 推荐(0)
摘要:二段性:对于一个值x,如果能够通过添加不超过k个木棒使得最大距离小于等于x,那么所有大于x的值t都能够通过添加不超过k个木棍使得最大间距小于等于t. 复杂度:\(O(nlog(L))\) 还是类似的二分+贪心 #include<iostream> using namespace std; const 阅读全文
posted @ 2020-10-12 16:16 yys_c 阅读(186) 评论(0) 推荐(0)
摘要:坑点: 月利率可能大于1,二分范围要定在1~5 需要还的钱,随每个月的利息和还钱数变化 #include<iostream> using namespace std; double m, n; int k; int check(double v){ double sum = m; for(int i 阅读全文
posted @ 2020-10-12 12:19 yys_c 阅读(69) 评论(0) 推荐(0)
摘要:二段性:如果对于一个值x,存在一种M分段方法,能使得分段中的最大值满足$\le x$那么所有大于等于x的值t都存在M分段的方法使得分段最大值小于等于t。 题目要求分段最大值的最小值,所以可以用二分。 检查一个x值,能不能通过分M个段达到分段最大值$\le x$, 这个用贪心来做,让每一个分段尽可能大 阅读全文
posted @ 2020-10-12 11:29 yys_c 阅读(192) 评论(0) 推荐(0)
摘要:二段性:对于一个长度x,如果能够通过拿走不超过m个石头使得石头之间最短距离大于等于x,那么所有$\le x$的长度$t$都能够通过移动不超过m个石头达到最短距离大于等于$t$的要求。 所以可以求出移动不超过m个石头能够达到的最短距离的最大值,判断一个长度x是否满足的条件就是求出要求最短距离大于等于x 阅读全文
posted @ 2020-10-11 20:30 yys_c 阅读(93) 评论(0) 推荐(0)
摘要:实数二分的题。 第一次写的时候,发现这样的写法无法处理mid正好是根的情况,会重复输出mid。 巧就巧在这题的数据保证不会出现长度为1的区间内出现2个根的情况,所以可以改写代码。 原始代码 #include<iostream> #include<cstdio> using namespace std 阅读全文
posted @ 2020-10-11 16:26 yys_c 阅读(92) 评论(0) 推荐(0)
摘要:二段性:如果高度$h$满足要求,那么所有的满足$\le h$的高度都满足,若$h$不满足,那么所有$\ge h$的都不满足。 二分答案,找满足要求的最大$h$ 复杂度:\(O(nlog(1e9)) = O(n), n \le 1e6\) #include<iostream> using namesp 阅读全文
posted @ 2020-10-11 13:35 yys_c 阅读(70) 评论(0) 推荐(0)
摘要:对数组升序排序,枚举A $A-B=C$问题转化为对于A在A之前找等于$A-C$的值的个数,可以用二分做 复杂度:\(O(nlogn)\) #include<iostream> #include<algorithm> using namespace std; #define LL long long 阅读全文
posted @ 2020-10-11 12:54 yys_c 阅读(81) 评论(0) 推荐(0)
摘要:#include<iostream> using namespace std; const int N = 1024, M = 2048; char g[N + 1][M + 1]; int n; /* /\ /__\ */ void dfs(int n, int x, int y){ if(n = 阅读全文
posted @ 2020-10-11 10:46 yys_c 阅读(53) 评论(0) 推荐(0)
摘要:#include<iostream> #include<vector> using namespace std; typedef struct{ int x, y, c; }Node; vector<Node> res; void dfs(int k, int x, int y, int dx, i 阅读全文
posted @ 2020-10-10 21:12 yys_c 阅读(76) 评论(0) 推荐(0)
摘要:题意:给定一个序列s,用它能够生成一个无限长的序列 第一个序列:\(s1 = s\) 第二个序列:\(s2 = s1 + s1'\) 第三个序列:\(s3 = s2 + s2'\) ... 其中$si'$表示将$si$中的最后一个元素放到最前面形成的新序列。 思路:把一个序列看成前半部分和后半部分, 阅读全文
posted @ 2020-10-09 16:37 yys_c 阅读(211) 评论(0) 推荐(0)
摘要:状态转移方程:\(f(i) = f(i - 1) + f(i - 2) + s(i - 3) * 2\),其中$s(k) = f(1) + ... + f(k)$ #include<iostream> using namespace std; const int N = 1e6 + 10, mod 阅读全文
posted @ 2020-10-09 12:17 yys_c 阅读(123) 评论(0) 推荐(0)
摘要:01背包变形 \(f(i, j) = f(i - 1, j) + f(i - 1, j - v[i])\) 初始条件要注意:f[0~n][0] = 1; 代码 #include<iostream> #include<vector> using namespace std; const int N = 阅读全文
posted @ 2020-10-08 19:22 yys_c 阅读(73) 评论(0) 推荐(0)