[Usaco 再次除草]

时间:2024-11-04 16:34:38

以后都用自己的号交吧 免得掉人品 Noip2016就是一个见证 一步一个脚印的刷

noip没把前两题稳拿就刷牛头..

 

bzoj1230 线段树打翻转标记,练手感

bzoj1231 状态压缩 预处理一下 时间$O(2^N*N*N)$记得开LongLong

bzoj1232 题目看死人 把原图割成生成树 每个点经过的时候都要加上权值 而且还会返回 那么发现一条边的花费就是$Cost=Val[u]+Val[v]+edge[k].d*2$ 然后跑最小生成树 最后还要选一个最小的当起点度数+1

bzoj1233 这道是之前做的 单调队列 考虑前面到后面的话不能反悔 堆到一般发现有错误 那么就考虑从后面往前堆,合法的情况仅当$F[i]=F[j]+(G[j]<=Sum[j-1]-Sum[i-1])$ F是当前的层数 G是有多宽 最瘦的一定是最高的

bzoj1576 这道题拖了好长时间 高中停课一个月挺难受的 由于直接跑最短路松弛一下可能会经过这一条边再绕回回来 所以我们考虑 每个点都有一个固定前驱 建立最短路树 然后可以更新的边一定不是树上的边 然后一定是反主边和横叉边 做一遍树剖 答案为$D[x]+D[y]-D[p]+d$ 那么就把$D[x]+D[y]+d$拿去修改就好了 注意lca是不能修改的

bzoj1574 很容易猜到每个Report的点找最近的点肯定最优 然后找最近的点的意思是删掉这个点后最近的点还能去到1 理由我也不知道为什么 反正我画图就猜出来了 当然不可以一个个去找 那么就反过来想 让1去找即可

bzoj1575 简单dp,预处理一下然后F[i][k]表示前面i和i必选总共选了k个 最后统计答案加上后面一段即可

bzoj1583 考虑堆会超时 所以线性合并用两个指针

bzoj1590 简单的字典树 信息比密码长的 在搜密码下去的时候 搜到最下面记录子树 短的时候搜下去直接记录掉好了

bzoj1622 两个指针匹配就好

bzoj1613 dp F[i][j]第i个时刻j体力

bzoj3540 首先相等的时候只可能个数为偶数 连续的一段就从小到大 然后用树状数组找最前面可以继承的就好 分奇数和偶数的情况

bzoj1607 不是Nlogn吗 为什么网上的人都说是N..