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

    A. 杨柳

    如果没有棋子不能重叠的限制,那么显然可以费用流跑匹配(虽然二分图不能A)。
    考场上到这我就不会了。
    实际上可以忽略这个限制。可以让被卡住的先走,或者交换目标。
    如果拎出棋子和红格建二分图,边数可达到(n^2)级别。费用流边数是极大影响因素。
    所以直接在棋盘上建边,S向棋子连1流0费边,红格向T连1流0费边,可以转移的格子间连inf流1费边。
    费用只有01,跑zkw费用流。

    B. 景中人

    分析可知矩形在横坐标上只有相离和包含两种关系。
    考虑区间DP,f[i][j][k]为[i,j]区间内>k的点都被覆盖过的最小矩形数。
    对于相离,有转移f[i][j][k]=min(f[i][p][k]+f[p+1][j][k])
    对于包含,由于区间DP的转移顺序,可以规定只在i,j为两端点处放置矩形,这样可以得到包含关系。
    贪心可知每次一定放能放置的最大矩形,用单调指针对于不同的横坐标之差预处理下。
    设h[i]为横坐标之差为i能放置的最大高度,那么f[i][j][k]=min(f[i][j][k],f[i][j][h[x[j]-x[i]]]+1)
    复杂度为(O(Tn^4))

    C. 钦点

    暴力考虑边复杂度不允许,这种情况下考虑生成树之类减少边数或者建虚点把等价点一起考虑。
    性质1,对于合数d,d|a[k],所有k形成完全图。
    对d建虚点,和d|a[k]的k连边,在新图上考虑非虚点与原图等价。相当于是只考虑不同等价类。
    性质2,可以选取只有两个质数组成的d,仍然成立。因为可以只取极大完全图。
    在新图上考虑答案是什么,删点使图不连通即割点,且该割点一定存在于最大的连通块中,断开后最大的连通块最小,然后和总图的次大连通块取max。
    线筛预处理每个数的最小质因子,可以在(O((质因子个数)^2))内得到d,然后用Tarjan找割点顺便处理答案。
    复杂度两个小log,我写的还带有一个map的log

  • 相关阅读:
    POJ 3140 Contestants Division (树dp)
    POJ 3107 Godfather (树重心)
    POJ 1655 Balancing Act (树的重心)
    HDU 3534 Tree (经典树形dp)
    HDU 1561 The more, The Better (树形dp)
    HDU 1011 Starship Troopers (树dp)
    Light oj 1085
    Light oj 1013
    Light oj 1134
    FZU 2224 An exciting GCD problem(GCD种类预处理+树状数组维护)同hdu5869
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/12615310.html
Copyright © 2011-2022 走看看