清理垃圾

题目链接

描述

小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市——那座城市即将举行美食节!

但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票——他们只能够乘坐最为破旧的火车进行他们的旅程。

不仅如此,因为美食节的吸引,许多人纷纷踏上了和小Hi小Ho一样的旅程,于是有相当多的人遭遇到了和小Hi小Ho一样的情况——这导致这辆车上的人非常非常的多,以至于都没有足够的位置能让每一个人都有地方坐下来。

小Hi和小Ho本着礼让他们的心情——当然还因为本来他们买的就是站票,老老实实的呆在两节车厢的结合处。他们本以为就能够这样安稳抵达目的地,但事与愿违,他们这节车厢的乘务员是一个强迫症,每隔一小会总是要清扫一次卫生,而时值深夜,大家都早已入睡,这种行为总是会惊醒一些人。而一旦相邻的一些乘客被惊醒了大多数的话,就会同乘务员吵起来,弄得大家都睡不好。

将这一切看在眼里的小Hi与小Ho决定利用他们的算法知识,来帮助这个有着强迫症的乘务员——在不与乘客吵起来的前提下尽可能多的清扫垃圾。

小Hi和小Ho所处的车厢可以被抽象成连成一列的N个位置,按顺序分别编号为1..N,每个位置上都有且仅有一名乘客在休息。同时每个位置上都有一些垃圾需要被清理,其中第i个位置的垃圾数量为Wi。乘务员可以选择其中一些位置进行清理,但是值得注意的是,一旦有编号连续的M个位置中有超过Q个的位置都在这一次清理中被选中的话(即这M个位置上的乘客有至少Q+1个被惊醒了),就会发生令人不愉快的口角。而小Hi和小Ho的任务是,计算选择哪些位置进行清理,在不发生口角的情况下,清扫尽可能多的垃圾。

提示一:无论是什么动态规划,都需要一个状态转移方程!

提示二:好像什么不对劲?状态压缩哪里去了?

输入

每个测试点(输入文件)有且仅有一组测试数据。

每组测试数据的第一行为三个正整数N、M和Q,意义如前文所述。

每组测试数据的第二行为N个整数,分别为W1到WN,代表每一个位置上的垃圾数目。

对于100%的数据,满足N<=1000, 2<=M<=10,1<=Q<=M, Wi<=100

输出

对于每组测试数据,输出一个整数Ans,表示在不发生口角的情况下,乘务员最多可以清扫的垃圾数目。

样例输入

5 2 1
36 9 80 69 85 

样例输出

201
#include <cstdio>
#include <iostream>
#include <cstdlib>
using namespace std;
#define INF 0x3f3f3f3f//?иртсцсзmemset
 int n,m,q,wi[1005],how[1030],ans[1005][1030],ans2=0;
int main()
{
    how[1]=1;how[0]=0;
    for(int i=2;i<1030;i++)
        how[i]=how[i>>1]+(i&1);
    while(cin>>n>>m>>q)
    {
        for(int i=1;i<=n;i++)
            cin>>wi[i];
        int len=1<<m;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<len;j++)
            {
                if(how[j]<=q)
                    ans[i][j]=max(ans[i-1][j>>1],ans[i-1][(j>>1)+(1<<(m-1))])+wi[i]*(j&1);
                ans2=max(ans2,ans[i][j]);
               // cout<<ans[i][j]<<" "<<i<<" "<<j<<endl;
            }
        }
        cout<<ans2<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/carcar/p/8448934.html

时间: 2024-10-13 14:12:52

清理垃圾的相关文章

Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本

Atitit. 图像处理jpg图片的压缩  清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.outputQuality(0.9); 2 4. attilax框架的处理 code 2 5. 到一篇文章提到如何控制jpg图片后压缩的质量 3 6. 参考 4 1. 清理图片压缩图片尺寸 目标::300kb>>>10kb.. 处理流程:::scale,outputQuality(0.5) 裁

使用记事本清理垃圾

要轻松流畅上网你是否注意到你的电脑系统磁盘的可用空间正在一天天在减少呢?是不是像老去的猴王一样动作一天比一天迟缓呢? 在Windows在安装和使用过程中都会产生相当多的垃圾文件,包括临时文件(如:.tmp.._mp)日志文件(.log).临时帮助文件(.gid).磁盘检查文件(.chk).临时备份文件(如:.old.*.bak)以及其他临时文件.特别是如果一段时间不清理IE的临时文件夹"Temporary Internet Files",其中的缓存文件有时会占用上百MB的磁盘空间.这些

最近更新完电脑管家开机速度一下慢了好多有木有?$电脑管家-清理垃圾$.qmgc

最近更新完电脑管家开机速度一下慢了好多有木有? 以前开机速度是几十秒,自从前几天更新了电脑管家之后,开机时间一下就变成了一分几十秒! 桌面上还多了一个清理垃圾的图标! 右键菜单也看不到属性 需要到以下位置查看: $电脑管家-清理垃圾$.qmgc

手动清理垃圾测试

手动清理垃圾测试 1 package com.fry.FinalizeTest; 2 3 public class FinalizeTest extends java.lang.Object{ 4 @Override 5 protected void finalize() throws Throwable { 6 // TODO Auto-generated method stub 7 super.finalize(); 8 System.out.println("The object is g

window清理垃圾

新建clean.bat @echo off color 0atitle windows7系统垃圾清理---echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo.★☆ ☆★echo.★☆ ☆★echo.★☆ 清理系统垃圾文件,请稍等...... ☆★echo ★☆ ☆★echo.★☆ ☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★☆★☆ ★☆ ★☆ ★☆ ★☆★echo ★☆ ★☆ ★☆ ★☆ ★☆★

oracle 10G 清理垃圾表

一次边学边干的oralce运维经历, 步步是坑啊. 起因: 一套运行了5年的系统, 客户近期反映比较慢. 了解了一下运行环境: windows2003(16G + 4核) +  jdk(32) +tomcat  和 window2003(4G + 双核) + oracle10G 现场现象: 客户操作出入库单据, ie一片空白持续很长时间, 体验十分糟糕, 用客户的话说: 这一天做单的工作量对得起这份薪水. 初步判断: tomcat连接数据库时候十分缓慢, 而且tomcat各种cpu,内存显示都比

docker 如何清理垃圾呢

应用容器在宿主机上长期运行,应用实例启停容器,会产生大量的停止的容器,无容器使用的数据卷.网络配置,无容器依赖的镜像,这些垃圾日积月累,会影响到宿主机的运行状态,造成机子卡顿等现象.因此,需要对这些宿主机的垃圾进行清理. docker system prune -a -f  添加到 crontab 中,时间间隔一星期,例如:每星期一18:00运行一次 [[email protected] ~]$ crontab -e...00 18 * * 1 docker system prune -a -f

[JOYOI1468] 清理垃圾 - DP

题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 聚会结束,留下许多垃圾.Candy:“好多垃圾啊,飘飘乎居士,我们一起处理垃圾吧!” 题目描述 Candy家里总共有n个垃圾等待处理,每个垃圾对于Candy和飘飘乎居士处理的时间都是不同的,而且每个垃圾只需要一个人处理.当然,Candy和飘飘乎居士可以同时处理不同的垃圾.记两人中耗费最长时间为最后总时间.Candy希望能够尽快的处理完所有的垃圾,因此,他想要知道处理完这些垃圾最少

Win10电脑系统盘空间不足如何清理垃圾文件?

我们在使用电脑时,系统经常会产生许多垃圾文件,占用磁盘存储空间.在Win10系统中,我们可以通过清理系统盘的临时文件来释放一些存储空间.下面好系统U盘启动就来告诉你具体的方法步骤. Win10系统C盘清理临时文件的方法 1.在开始菜单中打开Windows设置,选择点击"系统"项.2.在左侧栏中选择点击"存储",在右侧栏中就可以看到电脑磁盘的存储情况了,我们选择点击C盘.3.点击进入后,电脑会扫描该磁盘中的文件存储情况并进行分类,分类过后,我们选择点击"临时