[wzoi]Help Bubu

题目描述:

Bubu的书架上乱成一团了!请帮助他一下吧!

他的书架上一共有n本书。我们定义混乱值是连续相同高度书本的段数。例如,如果输的高度是30,30,31,31,32,那么混乱值为3,30,32,32,31的混乱度也是3,但31,32,31,32,31的混乱度为5,这实在是太乱了。Bubu想尽可能的减少混乱度,但他有点累了,所以他决定最多取出k本书,在随意将它们放到书架上。你能帮助他吗?

输入格式:

最多会有20组测试数据。每组测试数据开头为两个整数n,k,表示总共有n本书,最多可以进行k次搬书操作。接下来一行有n个整数,表示每本书的高度,从左到右。每本书的高度是25到32间的整数。最后一组数据后有一行n=k=0。

输出格式:

对于每一组数据,输出Case标号和最终最小的混乱度。在每组数据后打印一个空行。

样例输入:
5 2 
25 25 32 32 25
5 1 
25 26 25 26 25
0 0 
样例输出:
Case 1: 2Case 2: 3
提示:

149913640565712371.png

时间限制: 1000ms
空间限制: 256MB

系统90分 :
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define rint register int
using namespace std;int n, m, st, u, ans, x;
int a[101], f[2][101][256][9], g[256];void se(int x)
{for(rint i = 0; i <= m; i++)for(rint j = 0; j < 256; j++)for(rint k = 0; k <= 8; k++)f[x][i][j][k] = inf;
}int main()
{for(rint i = 0; i < 256; i++)for(rint j = 0; j < 8; j++)if(i & (1 << j)) g[i]++;while(scanf("%d%d", &n, &m) != EOF){if(!n && !m) break;st = 0;for(rint i = 1; i <= n; i++){scanf("%d", &a[i]);a[i] -= 25;st |= (1 << a[i]);}u = 0;se(u);f[u][0][0][8] = 0;for(int i = 0; i < n; i++){int t = a[i + 1];u ^= 1;se(u);for(rint j = 0; j <= min(i, m); j++)for(rint k = 0; k < 256; k++)for(rint l = 0; l <= 8; l++){int tmp = f[u ^ 1][j][k][l];if(tmp == inf) continue;f[u][j + 1][k][l] = min(f[u][j + 1][k][l], tmp);if(l != t) f[u][j][k | (1 << t)][t] = min(f[u][j][k | (1 << t)][t], tmp + 1);else f[u][j][k][t] = min(f[u][j][k][t], tmp);}}ans = inf;for(rint i = 0; i <= m; i++)for(rint j = 0; j < 256; j++)for(rint k = 0 ; k <= 8; k++){if(f[u][i][j][k] == inf) continue;int t = st ^ j;if(f[u][i][j][k] + g[t] < ans) ans = f[u][i][j][k] + g[t];}printf("Case %d: %d\n\n", ++x, ans);}return 0;
}

优化100分:

太太太难了!!!!!!加个优化吧!!!(参考生姜666的CSDN吐槽一下!)

#include<bits/stdc++.h>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#define inf 0x3f3f3f3f
#define rint register int
using namespace std;

int n, m, st, u, ans, x;
int a[101], f[2][101][256][9], g[256];

void se(int x)
{
    for(rint i = 0; i <= m; i++)
        for(rint j = 0; j < 256; j++)
            for(rint k = 0; k <= 8; k++)
                f[x][i][j][k] = inf;
}

int main()
{
    for(rint i = 0; i < 256; i++)
        for(rint j = 0; j < 8; j++)
            if(i & (1 << j)) g[i]++;
    while(scanf("%d%d", &n, &m) != EOF)
    {
        if(!n && !m) break;
        st = 0;
        for(rint i = 1; i <= n; i++)
        {
            scanf("%d", &a[i]);
            a[i] -= 25;
            st |= (1 << a[i]);
        }
        u = 0;
        se(u);
        f[u][0][0][8] = 0;
        for(int i = 0; i < n; i++)
        {
            int t = a[i + 1];
            u ^= 1;
            se(u);
            for(rint j = 0; j <= min(i, m); j++)
                for(rint k = 0; k < 256; k++)
                    for(rint l = 0; l <= 8; l++)
                    {
                        int tmp = f[u ^ 1][j][k][l];
                        if(tmp == inf) continue;
                        f[u][j + 1][k][l] = min(f[u][j + 1][k][l], tmp);
                        if(l != t) f[u][j][k | (1 << t)][t] = min(f[u][j][k | (1 << t)][t], tmp + 1);
                        else f[u][j][k][t] = min(f[u][j][k][t], tmp);
                    }
        }
        ans = inf;
        for(rint i = 0; i <= m; i++)
            for(rint j = 0; j < 256; j++)
                for(rint k = 0 ; k <= 8; k++)
                {
                    if(f[u][i][j][k] == inf) continue;
                    int t = st ^ j;
                    if(f[u][i][j][k] + g[t] < ans) ans = f[u][i][j][k] + g[t];
                }
        printf("Case %d: %d\n\n", ++x, ans);
    }
    return 0;
}

AC啦!
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式AI STM32部署卷积神经网络的魔法棒

基于STM32部署卷积神经网络控制设备方案-AI项目-STM32部署卷积神经网络方案-红外信号复制方案-轨迹识别 项目包含下述内容 硬件部分、PCB制板、BOM表文件等等 (Hardware)外壳、3D打印文件 (3D_print)软件程序、用于电子法棒的软件程序 AI Keil等等(Software)QT上位机动作识别…

【代码分析】Unet-Pytorch

1&#xff1a;unet_parts.py 主要包含&#xff1a; 【1】double conv&#xff0c;双层卷积 【2】down&#xff0c;下采样 【3】up&#xff0c;上采样 【4】out conv&#xff0c;输出卷积 """ Parts of the U-Net model """import torch im…

[Leetcode] 最大子数组和 [击败99%的解法]

解法1&#xff1a; 暴力解法 遍历每个元素&#xff0c;从它当前位置一直加到最后&#xff0c;然后用一个最大值来记录全局最大值。 代码如下&#xff1a; class Solution {public int maxSubArray(int[] nums) {long sum, max nums[len-1];for (int i0; i<nums.length;…

系统压力测试助手——stress-ng

1、背景 在系统性能测试和压力测试中&#xff0c;stress-ng 是一个非常强大的工具&#xff0c;广泛应用于对 Linux 系统进行各种硬件和软件方面的负载测试。它能够模拟多种极端负载情况&#xff0c;帮助开发人员和运维人员检查系统在高负载下的表现&#xff0c;以便发现潜在的…

计算机网络500题2024-2025学年度第一学期复习题库(选择、判断、填空)

一、单选题 1、&#xff08; &#xff09;是实现两个同种网络互连的设备 A. 网桥 B. 网关 C. 集线器 D. 路由器 2、10M以太网有三种接口标准&#xff0c;其中10BASE-T采用&#xff08; &#xff09; A. 双绞线 B. 粗同轴电缆 C. 细同轴电缆 D. 光纤 3、HDLC是哪…

在JavaScript文件中定义方法和数据(不是在对象里定以数据和方法,不要搞错了)

在对象里定以数据和方法看这一篇 对象字面量内定义属性和方法&#xff08;什么使用const等关键字&#xff0c;什么时候用键值对&#xff09;-CSDN博客https://blog.csdn.net/m0_62961212/article/details/144788665 下是在JavaScript文件中定义方法和数据的基本方式&#xff…

基于SpringBoot的垃圾分类系统设计与实现【源码+文档+部署讲解】

系统介绍 基于SpringBootVue实现的垃圾分类系统设计了三种角色、分别是管理员、垃圾分类管理员、用户&#xff0c;实现了个人中心、用户管理、垃圾分类管理员管理、垃圾分类管理、垃圾类型管理、垃圾图谱管理、系统管理等功能 技术选型 开发工具&#xff1a;idea2020.3Webst…

今日总结 2024-12-28

今天全身心投入到鸿蒙系统下 TCPSocket 的学习中。从最基础的 TCP 协议三次握手、四次挥手原理重新梳理&#xff0c;深刻理解其可靠连接建立与断开机制&#xff0c;这是后续运用 TCPSocket 无误通信的根基。在深入鸿蒙体系时&#xff0c;仔细研读了其为 TCPSocket 封装的 API&a…

springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失

这个包丢失了 启动不了 起因是pom中加入了 <tomcat.version></tomcat.version>版本指定&#xff0c;然后idea自动编译后&#xff0c;包丢了&#xff0c;删除这个配置后再也找不回来&#xff0c; 这个包正常在 <dependency><groupId>org.springframe…

前后端分离(对话框的使用)

1.首先先定义两个按钮(一个添加按钮&#xff0c;一个修改按钮) <el-button type"primary" click"openDialog(true)">添加员工</el-button> <el-button size"mini" click"openDialog(false, scope.row)">编辑</…

doris集群存储目录切换

doris集群存储目录切换 1. 背景 3节点集群&#xff0c;BE存储目录&#xff0c;因为运维原因。存储盘系统放在了一一起。 需要增加硬盘&#xff0c;并替换原有目录。 3节点集群&#xff0c;如果各个表都是3副本&#xff0c;可以实现轮流停机&#xff0c;方式处理。 但是业务…

【Maven_bugs】The project main artifact does not exist

背景&#xff1a;我想使用 maven-shade-plugin 打一个 fat jar 时报了标题中的错误&#xff0c;使用的命令是&#xff1a;org.apache.maven.plugins:maven-shade-plugin:shade -pl :shade-project。项目结构如下图&#xff0c;我想把子模块 shade-project 打成一个 fat jar&…

Qt 的信号槽机制详解:之信号槽引发的 Segmentation Fault 问题拆析(上)

Qt 的信号槽机制详解&#xff1a;之因信号槽误用引发的 Segmentation Fault 问题拆析&#xff08;上&#xff09; 前言一. 信号与槽的基本概念信号&#xff08;Signal&#xff09;槽&#xff08;Slot&#xff09;连接信号与槽 二. 信号槽机制的实现原理元对象系统&#xff08;M…

贪心算法(常见贪心模型)

常见贪心模型 简单排序模型 最小化战斗力差距 题目分析&#xff1a; #include <bits/stdc.h> using namespace std;const int N 1e5 10;int n; int a[N];int main() {// 请在此输入您的代码cin >> n;for (int i 1;i < n;i) cin >> a[i];sort(a1,a1n);…

Docker 安装与配置 Nginx

摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时&#xff0c;探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外&#xff0c;文章还涵…

机器学习常用术语

目录 概要 机器学习常用术语 1、模型 2、数据集 3、样本与特征 4、向量 5、矩阵 6、假设函数与损失函数 7、拟合、过拟合与欠拟合 8、激活函数(Activation Function) 9、反向传播(Backpropagation) 10、基线(Baseline) 11、批量(Batch) 12、批量大小(Batch Size)…

微服务篇-深入了解 MinIO 文件服务器(你还在使用阿里云 0SS 对象存储图片服务?教你使用 MinIO 文件服务器:实现从部署到具体使用)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 MinIO 文件服务器概述 1.1 MinIO 使用 Docker 部署 1.2 MinIO 控制台的使用 2.0 使用 Java 操作 MinIO 3.0 使用 minioClient 对象的方法 3.1 判断桶是否存在 3.2…

第一个C++程序|cin和cout|命名空间

第一个C程序 基础程序 使用DevC5.4.0 写一个C程序 在屏幕上打印hello world #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 运行这个C程序 F9->编译 F10->运行 F11->编译运行 mai…

【大模型】wiki中文语料的word2vec模型构建

在自然语言处理&#xff08;NLP&#xff09;任务中&#xff0c;词向量&#xff08;Word Embedding&#xff09;是一个非常重要的概念。通过将词语映射到一个高维空间中&#xff0c;我们能够以向量的形式表达出词语之间的语义关系。Word2Vec作为一种流行的词向量学习方法&#x…

1.RPC基本原理

文章目录 RPC1.定义2.概念3.优缺点4.RPC结构5.RPC消息协议5.1 消息边界5.2 内容5.3 压缩 6.RPC的实现6.1 divide_protocol.py6.2 server.py6.3 client.py RPC 1.定义 远程过程调用(remote procedure call) 2.概念 广义:所有通过网络进行通讯,的调用统称为RPC调用 狭义:不采…