随笔分类 - CSP/CCF
摘要:压缩编码 "201612 4" 一开始看这题还以为是哈夫曼编码的题目,结果是哈夫曼题目的变形。 哈夫曼编码是每次合并任意两堆石子,而这里的题目是合并相邻的两堆石子,而且这里的合并花费是合并两堆石子加上所有的叶子结点。 参考图解:https://blog.csdn.net/more_ugly_less
阅读全文
摘要:引水入城 "201703 5" 这从题目分析来看很像最大流的问题,只需要增加一个超级源点和一个超级汇点就可以按照题意连边再跑最大流算法。 因为数据量太大了,肯定会超时。但是没有想到可行的解决方法。 include using namespace std; const long long INF=0X
阅读全文
摘要:地铁修建 "201703 4" 这题就是最短路的一种变形,不是求两点之间的最短路,而是求所有路径中的最长边的最小值。 这里还是使用d数组,但是定义不同了,这里的d[i]就是表示从起点到i的路径中最长边中的最小值。 在松弛的时候,注意是d[i] max(d[u],cost),max保证了是所有路径中的
阅读全文
摘要:除法 "201709 5" 这道题有很多种方法来做,最常用的就是线段树和树状数组。 如果使用线段树来做,就会想到区间修改的update函数。但是这里可能会涉及到v是1或者a[j]是0的情况,所以用这种方法会超时,最多50分。 可以修改一下代码,使用点修改来做这道题。在main函数里面增加一个循环,用
阅读全文
摘要:通信网络 "201709 4" 一看到题目分析了题意之后,我就想到用floyd算法来求解每一对顶点的最短路。如果一个点和任意一个点都有最短路(不为INF),那么这就是符合的一个答案。可是因为题目超时,只能拿60分。 另一种解法就是使用dfs把图简单的遍历一遍就可以了。这里要用到两遍dfs反着也要建图
阅读全文
摘要:JSON查询 "201709 3" 纯字符串模拟,考的就是耐心和细心。可惜这两样我都缺。。。 include include include include include include include using namespace std; const int maxn=102; int n,
阅读全文
摘要:公共钥匙盒 "201709 2" 这题的思路一开始不是很清晰,一开始想用贪心去做。但是发现按照题目的思路不对。所以这里采用的是类似于多项式的加减的处理。 include include include include include include include using namespace s
阅读全文
摘要:URL映射 "CCF201803 3" include include include include include include include include include using namespace std; const int maxn=101; const int maxm=10
阅读全文
摘要:#管道清洁 ##201812-5 需要清洁的管道下界为1, 不需要清洁的管道下界为0, 可重复经过的管道上界为正无穷, 不可重复经过的管道上界为1。 这属于无源无汇的有容量下界的最小费用可行流。解决的方法就是首先增加一个源点和一个汇点,然后对每一条有下限的弧进行改造,改成容量下限为0,上限为c-b的
阅读全文
摘要:元素选择器 "201809 3" 这里我只考虑了没有后代选择器的情况 include include include include include include using namespace std; string s[101]; int n,m; int main(){ cin n m; g
阅读全文
摘要:消息传递口 "201903 4" 本题主要是利用队列进行模拟,因为一开始我没有注意到要按照顺序,所以一开始的解法错误。 include include include include include include include using namespace std; const int max
阅读全文
摘要:数据中心 "201812 4" 这里就是最小生成树的应用 include include include include include using namespace std; const int maxn=50004; const int maxm=100005; int n,m,root; s
阅读全文
摘要:201809 4 "再卖菜" 我使用的是爆搜解决,只得了60分。 "记忆化搜索" "差分约束" include include include include include using namespace std; int n; int a[303]; int b[303]; bool flag=
阅读全文
摘要:201803 4 "棋局评估" 这题主要使用对抗搜索,也就是每一步寻找可以下棋的位置,通过在这一步下棋看最后会取的什么样的分数。 include include include include include using namespace std; const int INF=0x3f3f3f3f
阅读全文
摘要:317号子任务 "201903 5" 为了过前60分,想使用dijikstra优化算法的,但是最后还是只过了35分。这里的思路只需要先将所有的行星据点进行一次dijikstra,分别存储所有点到行星的最短距离,最后使用一个优先队列存储所有的距离就可以了。 include include includ
阅读全文