摘要: 跟着书上的思路学习dp的单调性优化觉得还是很容易想的。 数据范围: dp,数据范围是百万,这应该是O(n)的算法了。 首先不难想到设f[i]表示到第i个百米所能达到的最大能量,那么f[n]即为所求。 f[i]=max(f[i],f[j]+s[i]-s[j]-cost[i]);这个地方s数组是能量的前 阅读全文
posted @ 2018-12-30 18:24 chdy 阅读(198) 评论(0) 推荐(0) 编辑
摘要: A*算法其实就是估价函数来优化搜索什么的,关键是估价函数的构建。 dij跑一遍bfs跑一遍即可。显然估价函数可以是由终点跑向各个点的最短路 #include<bits/stdc++.h> #include<iostream> #include<iomanip> #include<cstdio> #i 阅读全文
posted @ 2018-12-25 18:54 chdy 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 这道题算是一道需要考虑优化算法的题了。 读题,不难发现需要求出的答案是第一个满足不了的订单,所以可以考虑二分快速查找这时,不难想到一个普素算法30分,直接暴力check不就好了。 #include<iostream> #include<cstdio> #include<ctime> #include 阅读全文
posted @ 2018-12-22 16:42 chdy 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 学习了对拍,主要总结一下该咋么写,针对本人,出现了以下几点问题。 1.4个程序的文件名一定要起好,以后要固定分别为bf(暴力)brutal force 、sol(solution)、pai(对拍的程序)、random(随机数据的产生)。 2.然后是bf和sol的输入和输出位置的所在地。都为 输出的位 阅读全文
posted @ 2018-12-20 13:37 chdy 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 今年noip的题和去年绝对是比较坑的题了,但是打好的话就算是普通水准也能350分以上吧。 t1: 很显然这是一个简单的dp即可。 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<string 阅读全文
posted @ 2018-12-18 13:09 chdy 阅读(262) 评论(0) 推荐(0) 编辑
摘要: noip 2018 day1 t3听学长说是二分+树形dp+二分。但是暴力分给的还是挺足的55分。 20分是树的直径,无奈不会求,n^n暴力dfs只拿了10分,血亏一波。 1.树形dp求树的直径 设当前节点为x,d[x]表示以x为节点所能到达的最长链。显然对于穿过x的树的直径=d[x]+d[tn]+ 阅读全文
posted @ 2018-12-17 13:48 chdy 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 重学并查集,该会的一些操作还是得会。。。 1.路径压缩 2.按秩合并 都略了,一道亲戚两者都用,代码: 听说这样每次getfather都是常数级别的,炒鸡快诶! 然后带边权的并查集,银河英雄传大家都听说过,还是不太好相同的代码丢一波。 #include<iostream> #include<cstd 阅读全文
posted @ 2018-12-14 18:42 chdy 阅读(285) 评论(0) 推荐(0) 编辑
摘要: euler路问题也称一笔画问题。 1.一张无向图,若存在一条从节点s到节点t的路径,恰好不重不漏地经过每条边一次(可以重复经过图中节点,最终回到节点s。 这条路径称该路径为s到t的euler回路。其实通过图中所有边的简单路就叫euler路。 2.特别的,如果存在一条从s出发的路径,恰好不重不漏地经过 阅读全文
posted @ 2018-12-10 21:09 chdy 阅读(841) 评论(0) 推荐(0) 编辑
摘要: 做了很多关于树上dp的题有些使用了nm^2的算法来进行dp,可是当m过大时方法不大试用,又可以对这种算法进行优化,如dfs序或者直接树上合并背包。当输出方案时又需要多叉转二叉进行dp寻找方案,很多方法于是乎总结一下。 w[i]表示第i个节点的重量,v[i]表示第i个节点的价值,f[i][j]表示以i 阅读全文
posted @ 2018-12-10 12:36 chdy 阅读(1284) 评论(1) 推荐(0) 编辑
摘要: 树状数组是一种较为高级的数据结构,下面总结一下具体应用(按照树神讲的顺序: 树状数组Binary Indexed Trees简称BIT。其平摊了修改和查询的时间复杂度,使他们都成为O(logN)的级别! 1.单点修改区间查询。(大家都会不再赘述。 2.区间修改单点查询,然后利用树状数组进行差分的求和 阅读全文
posted @ 2018-12-08 12:33 chdy 阅读(464) 评论(0) 推荐(0) 编辑