上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页
摘要: #include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 3e3 + 10; int n,a[maxn]; int solve(int l,int r){ int minn = 1e9 + 阅读全文
posted @ 2020-05-02 19:43 Hazelxcf 阅读(132) 评论(0) 推荐(0)
摘要: 注意:题目说了,所有道路单行 所以了两次迪杰斯特拉 #include <bits/stdc++.h> using namespace std; const int nn = 1e3 + 5; const int mm = 1e5 + 5; int d[nn],head[nn],ver[mm],edg 阅读全文
posted @ 2020-05-02 12:14 Hazelxcf 阅读(155) 评论(0) 推荐(0)
摘要: 1 #include <bits/stdc++.h> 2 using namespace std; 3 #define int long long 4 const int maxn = 1e4 + 10; 5 int n,k,b[maxn],dp[maxn]; 6 struct node{ 7 in 阅读全文
posted @ 2020-04-30 10:18 Hazelxcf 阅读(98) 评论(0) 推荐(0)
摘要: 和LIS反着 本题直接做就行, 注意计算方案数,不是说找到最大的方案,然后再找比他小的就可以了,还要注意去重,所以再建立一个数组c;记录方案数目 1 #include <bits/stdc++.h> 2 using namespace std; 3 #define int long long 4 c 阅读全文
posted @ 2020-04-30 09:25 Hazelxcf 阅读(147) 评论(0) 推荐(0)
摘要: 参考的大佬的博客 求什么设什么,dp[l][r]为l到r堆范围的石子数量的最值 相邻合并为一堆,所以枚举最小值是2 这两堆又是由另外的两堆石子合并,可认为是由dp[l][k]和dp[k + 1][r] 根据k的值将对应范围分为了两部分,然后根据公式会分为更多部分 #include <bits/std 阅读全文
posted @ 2020-04-28 21:19 Hazelxcf 阅读(117) 评论(0) 推荐(0)
摘要: 链接 最少的反转次数使的点数只差最小 注意绝对值 dp[i][j]表示前i个物品达到j,可以反转,也可以不转 int g = a[i] - b[i]; 状态转移方程 dp[i][j] = min(dp[i - 1],[j - g + 5000],dp[j + g + 5000]+ 1); 为什么要加 阅读全文
posted @ 2020-04-26 16:38 Hazelxcf 阅读(173) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2020-04-26 07:50 Hazelxcf 阅读(0) 评论(0) 推荐(0)
摘要: 链接 刚开始想的是两次01背包,把第一次走过的给记录下来。好像不太好记录, 参考了大佬的博客,数据范围不是很大,四维数组就可以了, a,b第一个人走的,c,d代表第二个人 dp[a][b][c][d] = max{dp[a][b -1][c][d -1] , dp[a - 1][b][c -1][d 阅读全文
posted @ 2020-04-25 17:41 Hazelxcf 阅读(140) 评论(0) 推荐(0)
摘要: 难点:字符串处理 #include <iostream> #include <cstring> #include <cstdio> #include <map> using namespace std; char ss[100],s1[50],s2[50]; string s3; map<strin 阅读全文
posted @ 2020-04-22 20:38 Hazelxcf 阅读(107) 评论(0) 推荐(0)
摘要: KMP next数组:next[i]表示以i为终点的前缀的最长相同前后缀长度 拓展KMP extend数组: extend[i]表示文本串T中以i为起点的后缀与模式串S的最大相同前缀的长度 next数组:next[i]表示S以i为终点的最大相同前后缀长度 阅读全文
posted @ 2020-04-21 08:34 Hazelxcf 阅读(66) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页