IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2022/7/15 每日一题(二分+dp+贪心思维) -> 正文阅读

[数据结构与算法]2022/7/15 每日一题(二分+dp+贪心思维)

D. River Locks
难度:1900
题意:每个水闸都能城防一定体积容量的水,每秒注入1单位体积的水,若第i个水闸被注满,则自动流向第i+1水闸。每次询问给出一个时间,若能在规定时间内注满每个水闸,则最少需要打开多少个水闸。
思路:每个水闸会受到前面水闸容量的影响,不难看出使dp需要设计状态。
1.题目中没说一个水闸向另一个水闸转移的时间,所以可默认为0.
2.转移不需要时间,因此在左边选择开水闸的数据量即可,开启水口数cnt==(S/T)(向上取整)
3.我们知道规定时间内需要开启水闸的数量,但由于水闸的体积不同,并不知道填满前i个水箱的所需的具体时间,比如若总体积是15,规定在4秒前注满所有水箱,则需要开启水口数[15/4]=4,若前4个水闸体积分布4 1 5 4,需要4s;1 1 1 1需要1秒;6 1 1 1,则需要6s,不满足题意。
4.用dp的方式记录灌满前i个水闸需要的最小时间数,可看作一个约束条件,需要小于等于规定的时间。
5.二分的方式实现前i个水闸需要的最小时间,需要满足t*s>=sum[i],s为开启 水闸数

代码:
要保证前i个水闸能在规定时间内t注满这个约束条件

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+6;
int n,v[N],dp[N],sum[N]; //注满前i个水闸至少需要多久
void pre()
{
    sum[1]=dp[1]=v[1];
    for(int i=2;i<=n;i++)
        sum[i]=sum[i-1]+v[i];
    for(int i=2;i<=n;i++)
    {
        int l=dp[i-1],r=1e9,mid,ans;
        while(l<=r)
        {
            mid=(l+r)>>1;
            if(mid*i<sum[i])
                l=mid+1;
            else
                r=mid-1,ans=mid;
        }
        dp[i]=ans;
    }
}
signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    pre();
    int q;cin>>q;
    while(q--)
    {
        int ti;cin>>ti;
        int k=(sum[n]+ti-1)/ti;
        if(k<=n&&dp[k]<=ti)
            cout<<k<<endl;
        else
            cout<<-1<<endl;

    }
    return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:09:52  更:2022-07-20 19:12:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:47:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计