zoukankan      html  css  js  c++  java
  • NEERC 16

    挑几道有意思的讲一下

    B

    将?换成(0/1)插到trie里面,建两棵tire,一棵表示子树是否有被选的(内向),一棵表示祖先是否有被选的(外向)

    D

    这题很有意思啊
    将两种操作定义为睡觉与工作
    首先假设先全部选睡觉的,令其价值为(s_i),那么将睡觉的调整为工作,价值为(e_i-s_i)
    令连续(k)小时至少睡(min_s),至少工作(min_w),那么等价于至多工作(k-min_s),则每(k)天工作的范围(in[min_w,k-min_s])
    为方便表示,写成([min,max])

    考虑建图:
    (Slongrightarrow S'(flow:max,cost:0))
    (S'longrightarrow i(iin[1,k],flow:infty ,cost:0))
    (ilongrightarrow i+1(flow:max-min,cost:0)),若(i+1>n)(i)连向(T)
    (ilongrightarrow i+k(flow:1,cost:e_i-s_i)),若(i+k>n)(i)连向(T)
    然后求一遍最大费用流,(ans=(sum s_i)+maxcost)

    正确性:
    最大流为(max),即能流满:全部沿(ilongrightarrow i+k)这种边流即可
    考虑中间的过程,若流满,充要条件为(ilongrightarrow i+1(ige k))这条边的流量假设从这条边跨过的边的流量(即(i'longrightarrow i+k)这种边)之和为(max)
    故跨过的边的流量最小为(max-(max-min)=min),最大为(max)
    至此,意义很明显了,每条边(ilongrightarrow i+1(ige k))是用来维护([i-k+1,i])

    E

    令当前借书的人有(x)个,若(x)为负数,则意义为库存(x)本书
    然后题意就变成(+k/-k),然后统计(x)为正之和
    将每个时间的(x)排序,然后二分即可得到正的后缀

    F

    首先先算第(i)张牌作为某一次的首张牌的概率
    (1)张牌:(1)
    往后算第(i)张牌作为(jin[1,i))张牌翻过来的概率
    (2)张牌:(1 imes frac{1}{n}=frac{1}{n})
    (3)张牌:(1 imes frac{1}{n}+frac{1}{n} imes frac{1}{n-1}=frac{1}{n-1})
    (4)张牌:(1 imes frac{1}{n}+frac{1}{n} imes frac{1}{n-1}+frac{1}{n-1} imes frac{1}{n-2}=frac{1}{n-2})
    (i)张牌:(frac{1}{n-i+1})
    然后dp,令(f_{i,0/1})为第(i)张牌是否被翻转了,(f_{i})(f_{i-1})推过来

    K

    考虑三张图左上角的雀斑
    那三个雀斑一定有两个是在一点的,然后分别检查这几个情况就好了

  • 相关阅读:
    Mybatis之批量更新操作
    Spring Quartz *.QRTZ_LOCKS' doesn't exist
    分析NTFS文件系统得到特定文件的内容
    设计模式笔记——设计模式原则总结
    android自己定义ViewPager之——3D效果应用
    Android混淆代码
    百度地图 Android SDK
    NYOJ17,单调递增最长子序列
    令人纠结的两行代码
    XCode中在提示窗体中对已弃用的API接口画上红线
  • 原文地址:https://www.cnblogs.com/Grice/p/13111543.html
Copyright © 2011-2022 走看看