摘要: 划分 很好的dp优化题 考虑最简单的dp,设f[i][j]表示上一位置为j,当前位置为i,j+1~i为划分的一段,得到的最小值 这样可以的到36分,\(O(n^3)\) #include<bits/stdc++.h> #define fi first #define se second #defin 阅读全文
posted @ 2020-07-30 18:43 行zzz 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 引水入城 可以从每一个第一行的位置出发记忆化搜索记录可以到达那些最后一行节点,但是空间开不下 感性理解一下,每一个出发点到达的最后一行节点是连续的,所以只要记录$(l,r)$即可 在覆盖的时候,找到可以覆盖当前点中可以覆盖到最右边的点进行覆盖 #include<bits/stdc++.h> #def 阅读全文
posted @ 2020-07-30 18:30 行zzz 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 旅行 考虑树上因为不能回溯,贪心即可 基环树暴力删边后变成树再遍历一遍,复杂度$O(n^2)$ 更快的做法还不会。。。 #include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp 阅读全文
posted @ 2020-07-30 18:24 行zzz 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 宝藏 枚举每个点为起点,用一个dfs框架去状态压缩dp #include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp make_pair #define SZ(x) ((int)x 阅读全文
posted @ 2020-07-30 18:20 行zzz 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 奶酪 直接用并查集维护连通性 然而我用了连边后bfs,较慢 #include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp make_pair #define SZ(x) ((int 阅读全文
posted @ 2020-07-30 18:17 行zzz 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 小凯的疑惑 #include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp make_pair #define SZ(x) ((int)x.size()) #define ALL(x 阅读全文
posted @ 2020-07-30 18:15 行zzz 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 愤怒的小鸟 n很小考虑用状态压缩,先预处理出每两个坐标得到的抛物线可以打掉那些点(用状压) $O(n22n)$的较为简单 考虑一个优化,在没每个状态在转移的时候,用二进制下第一位为0(因为这个猪一定需要被打掉不管先后)(其实先做第二位为0,第三维..都一样) 这样就可以优化掉一维 注意要适当卡精度, 阅读全文
posted @ 2020-07-30 18:09 行zzz 阅读(111) 评论(0) 推荐(0) 编辑
摘要: Hankson 的趣味题 简单推一下式子,发现$gcd(x/a1,a0/a1)=1,gcd(b1/b0,b1/x)$ 直接枚举会超时 设$x=k*a1$则$k|(b1/a1)$,枚举$b1/a1$的约数就可以了 #include<bits/stdc++.h> #define fi first #de 阅读全文
posted @ 2020-07-30 18:00 行zzz 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 换教室 概率期望dp的模板题 状态较好设计,转移的时候注意要把所有的可能性都考虑到并加起来 #include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp make_pair #de 阅读全文
posted @ 2020-07-30 17:55 行zzz 阅读(74) 评论(0) 推荐(0) 编辑