zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 28 简单题解

    A

    给出一个01数组,问这个数组至少去掉多少个数,相对位置不变,

    并且要求:每一个1后面的所有数都是1

    要不把所有1去掉

    要不数组是0...01...1形式,这种只需要枚举1的位置,就行了

    B

    有n个问题,每个问题有k个子问题,1 <= n,k <= 45

    做出任何一个问题的第i个子问题需要t[i]时间,得1分

    如果某个问题的k个问题全部解决了,还会再奖励1分

    现在你有M的时间,0 <= M <= 2 * 10^9,问最多能得多少分

    贪心

    枚举解决了x个问题,得了x * (k + 1)分,把剩余的子问题按照t的大小排序,然后用剩余的时间贪心去做,看能做多少子问题,能得多少分

    C

    有一个数组,长度n,1 <= n <= 5000,元素可能是负数,数组从0开始

    sum(l,r)表示数组区间[l,r)的元素之和

    现在要你找3个数,x,y,z,满足:

    1.0 <= x <= y <=z <= n

    2.sum(0,x) - sum(x,y) + sum(y,z) - sum(z,n)最大

    注意,这道题目i == j时,sum(i,j)表示[i,i),没有元素,值为0

    我们枚举y的位置,把数组分成[0,y),[y,n),然后对2个部分都要找一个分隔点,其实就是2个相同的子问题

    所以,先枚举y,对每一部分再求分隔点就可以了

    D

    有一个n * m的矩阵,开始时矩阵元素都为0,有q个操作,第i个操作xi,yi,ti,表示从ti时间开始a[xi][yi] = 1

    问最少什么时间,矩阵有一个k * k的子矩阵,子矩阵全为1

    二分时间,就行了

    E

    题意不想说了

    树dp,就行了

    F

    给出一个数组

    f(l,r) = 数组[l,r]区间中的不同的数的个数,现在随机选择l,r,求f(l,r)的期望


    1.从题意看,if l != r,则选到l,r的概率是2 / n / n if l == r,则选到l,r的概率是1 / n / n

    2.pre[i]记录a[i]上一次出现的位置,直接算出每一个位置对期望的贡献

       每一个位置对期望的贡献 = 这个位置有贡献的概率 * 1

  • 相关阅读:
    Entity Framework 和NHibernate的区别
    Windows 2008 的TCP/IP原理
    Mono 2.0正式发布了
    自定义Unity对象生命周期管理集成ADO.NET Entity Framework
    Entity Framework(EF)数据查询
    WCF采用 netTcpBinding 发生的Socket errors
    ADO.NET 实体框架概述
    IronPython 2.0 beta 5
    用sp_change_users_login消除Sql Server的孤立用户
    微软修改了Managed Extensibility Framework(MEF)的协议
  • 原文地址:https://www.cnblogs.com/-maybe/p/7496435.html
Copyright © 2011-2022 走看看