zoukankan      html  css  js  c++  java
  • 模拟22

    T1

    式子拆开之后套龟速乘随便写。

    T2

    最开始看错题了,以为只要有一组分配方案合法即可,这样就不是很好做因为不能贪心的取,后来看到分配方案必须任意分都满足就可以一眼写了,二分的时候检验的时间复杂度有点高,所以必须要尽量减少不合法的检验,于是最开始倍增出二分的区间即可。

    T3

    挺不好想的一道题,首先要明确题意,小B可以在小A走到某个地方的时候断掉一条边,让小A走的距离更远,所以直接枚举删哪条边然后跑最短路是不对的。

    首先我明白题意之后最开始想到的是定义(f_{u,0/1})表示走到节点(u),已经用过或没用过限制的最短路是什么,发现这样没法转移,因为以后的最短路径可能经过之前走过的某条边,然后就没办法了。

    题解给出的做法很妙,定义(f_u)为从(u->n)路径上使用过限制的最短路径,那么这样转移是很好转移的,要么当前这条边不删去,要么删去,写成式子就是(f_u=min(max(f_v+w,d))),其中(d)表示删除这条边后从(u)(n)的最短路径,其中的那个(min,max)的嵌套表示先由(B)决策,再由(A)取最优决策,看起来挺对的,但是仔细想想其实还是会有问题,因为这样只可以保证每条路径上只删去一条边,但是在一个点上进行决策时,有可能是删除了多条边的,因为中间取的是(max),好像错了?其实并不是,容易发现,只有当这条边是最短路径上的边时删去才会有用,不然我直接走最短路多好,所以实际上只会在最短路上断掉,如果最短路只有一条,相当于只取了一次最大值,好像挺对的,但是如果最短路有两条或以上,好像又不对,不过继续思考可以发现,如果有多条最短路,在当前节点删去一条边一定不优,具体就体现在(d<f_v+w),所以还是没有影响。故这样写是对的。

    剩下的就随便写写就可以了,但是注意每次往上跳的时候要路径压缩,直接跳的时间复杂度是不对的。

    T4

    不是很难想但是考场上挂了,直接首尾相加然后发现变化量最多为一,把变化的减去就行。

  • 相关阅读:
    12345679*81=?
    怪异,漂亮的几个数学恒等式(转)
    道路着色问题
    一组数学算式的欣赏(转)
    数学中奇妙的“金蝉脱壳”(转)
    数学中的分分合合(转)
    四方定理和卡布列克常数(转)
    简单的题目 有趣的现象
    Android学习笔记 第三节 基本控件学习
    Android学习笔记 第二节 HelloWorld程序
  • 原文地址:https://www.cnblogs.com/anyixing-fly/p/13872477.html
Copyright © 2011-2022 走看看