• ACM-ICPC 2018 南京赛区网络预赛


    ACM-ICPC 2018 南京赛区网络预赛


    B. The writing on the wall

    • 题意:
    • 给定一个n*m的矩形,1≤n≤10^5,1≤m≤100,矩形里有k个点被损坏,0≤k≤10^5,现在你需要计算出所有合法的矩形个数,合法是指矩形内不包括损坏的点。
    • sol:
    • 首先对于每一个点,都计算出一个sum值,代表从这个位置往下走(在列上走),往下走几格能走到坏点。这一部分可以预处理做完。
    • 然后,我们仅考虑只有两列的情况。此时,我们对sum[1][1],和sum[1][2]进行研究。刨去1×1的小矩形,考虑2×l的矩形。我们可以发现,包含第一行两个格子的所有矩形数为min(sum[1][1],sum[1][2])。然后考虑第二行,包含第二行两个格子的所有矩形数为min(sum[2][1],sum[2][2]),并且这里不包含第一行。所以这样就可以往下推了。
    • 那么考虑多列的情况,我们对第一行进行考虑,可以发现,如果当前位置左边那个sum比它小,那么左边的所有矩形数都被左边的数给控制了,简而言之,在左边已经被算过一次了,所以可以直接拿来用。计算出左边第一个比自己小的,单调栈即可。总复杂度O(n*m)。

    E. AC Challenge

    • 吐槽:这个题貌似lintcode都有啊。。
    • 题意:
    • 给定每门课的a,b值,一天只能修一门课,每门课可能有先修课程。在第t天修课程得到的价值是a×t+b。求这个价值最大值。(0<n≤20)
    • sol:
    • 看到这个n,就可以发现是一个状压了。预处理用一个数字表示第i门课的先修课程。dp[i]表示,已经修的状态数为i时的最大价值。__builtin_popcount() 一下t,随变转移一下即可。

    G. Lpl and Energy-saving Lamps

    • 吐槽:我们是冠军!!
    • 题意:
    • 当然跟lpl没什么关系。给定n个房间,每个房间都需要填充一定的球。开始你的球的数量为0,每次你都买m个球,然后从头开始,去找到是否有未被填充过的房间的球数可以一次性被填充满,若可以,填充。询问,每次买球,你填充完的房间数,和手头剩下的球数。
    • sol:
    • 二分+线段树。最多买100000次球。每一次买球之后,二分一下哪一个放间是最先被填满的。线段树记录区间最小值。找到房间之后,修改房间的属性为inf。复杂度n×log*log。

    L. Magical Girl Haze

    • 吐槽:假题。
    • 题意:
    • 有n个点,m条有向边,每条边有边权,现在要求从1走到n的最短路。你可以进行至多k次操作,每次都能将一条边的边权修改为0。
    • sol:
    • dp[i][j]代表到了第i个位置,使用了j次操作的最小值,然后往连着的边递推。加一下优先队列,保证每个状态至多往后递推一次。
  • 相关阅读:
    eclips搭建python开发环境
    win7下odoo服务启动又停止解决方法
    ubuntu14.04调节屏幕亮度
    在ubunut下使用pycharm和eclipse进行python远程调试
    读书笔记——乔布斯,做最好的自己,共创式教练
    压力测试工具——Galting
    番茄工作法和Bullet Journal笔记法
    Openstack Swift中间件编写
    《黑客》读书笔记
    用腻了bootstrap的可以试试semantic-ui
  • 原文地址:https://www.cnblogs.com/nowheretrix/p/9572368.html
Copyright © 2020-2023  润新知