zoukankan      html  css  js  c++  java
  • 省选模拟17

    A.选择

    题意:给定n个点m条边的无向图以及q个操作,支持删边和询问u到v是否存在两条不相交路径。max(n,m,q)<=1e5
    操作2实质上就是问u和v是否在同一个边双内(去掉任一边仍连通)。
    套路式时光倒流,变为加边。
    问题转化为:维护支持加边的动态边双。
    用并查集维护边双和连通性,最多合并n次,可以暴力合并。
    然而没有码,去找题了,所以也不知道yy的对不对。

    B.划分序列

    题意:给定长度为n的序列A,把A分成恰好非空K段,最小化段内和的最大值。1<=K<=n<=5e4,(|A_i|)<=3e4
    权值有正负,对于部分分。
    (A_i)>0,二分+check贪心求至少t,t<=K则满足
    (A_i)<0,二分+check贪心求至多t,t>=K则满足
    根据以上可以猜想可行的段数是连续的,至少L至多R,满足L<=K<=R则满足
    L和R可以dp出来,bit优化求前缀最值。
    猜想的正确性是可证的:
    从dp的角度,每次取的是最优,现在取次优,一直松弛下去,可以连续逼近K
    从构造的角度,段内正数会使答案变差,负数会变优。
    所以段数过少正数分不开,过多负数分开。

    D.圆圈游戏

    原题略

    最近要把矩阵树刷下w

  • 相关阅读:
    使用vs2010编译 Python SIP PyQt4
    谷歌编程指南
    【转】微策略面经相关资料
    KMP 算法
    C++ 拷贝构造函数
    虚继承 虚表 定义一个不能被继承的类
    cache的工作原理
    背包问题
    【转】C/C++ 内存对齐
    【转】 Linux/Unix 进程间通信的各种方式及其比较
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12257617.html
Copyright © 2011-2022 走看看