BestCoder Round #91 1001 Lotus and Characters

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6011

题意:

Lotus有nn种字母,给出每种字母的价值以及每种字母的个数限制,她想构造一个任意长度的串。 定义串的价值为:第1位字母的价值*1+第2位字母的价值*2+第3位字母的价值*3…… 求Lotus能构造出的串的最大价值。(可以构造空串,因此答案肯定\geq 00)

分析:

做这个题目的时候,第一感觉回溯算了,不用想,肯定T了。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int n;
 6 int val[30];
 7 int cnt[30];
 8 int len;
 9 
10 int dfs(int cur)
11 {
12     int ans = 0;
13     if(cur>=len+1) return 0;
14     else
15     {
16         for(int i=0; i<n; i++)
17         {
18             if(cnt[i]>0)
19             {
20                 cnt[i]--;
21                 ans = max(ans,(cur+1)*val[i]+dfs(cur+1));
22                 cnt[i]++;
23             }
24         }
25     }
26     return ans;
27 }
28 
29 int main()
30 {
31     int t;
32     scanf("%d",&t);
33 
34     while(t--)
35     {
36         scanf("%d",&n);
37         len = 0;
38         for(int i=0; i<n; i++)
39         {
40             scanf("%d%d",&val[i],&cnt[i]);
41             len+=cnt[i];
42         }
43 
44         printf("%d\n",dfs(0));
45     }
46     return 0;
47 }

 

后来想DP,直觉告诉我,正权值的放后面。每次计算后面的数值,又不知道前面有多少位,怎么解决这个问题呢?

就类似于前缀和,写一个后缀和,之前的位数不确定,怎么解决呢?

Ans[i] = Ans[i+1] + sum[i+1] +v[i];

状态转移就是多加了一遍后缀和,和首位。最后找一下最好的切割点。

其实这个切割点也可以从后往前找。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int t;
 8     scanf("%d",&t);
 9     while(t--) {
10         int n;
11         scanf("%d",&n);
12 
13         vector<int> v;
14 
15         for(int i=0;i<n;i++) {
16             int val,cnt;
17             scanf("%d%d",&val,&cnt);
18             for(int i=0;i<cnt;i++) {
19                 v.push_back(val);
20             }
21         }
22 
23         sort(v.begin(),v.end());
24 
25         int len = v.size();
26 
27         int Ans[10010];
28         int sum[10010];
29 
30         memset(Ans,0,sizeof(Ans));
31         memset(sum,0,sizeof(sum));
32 
33         for(int i=len-1;i>=0;i--) {
34             sum[i] = sum[i+1] + v[i];
35         }
36 
37         for(int i=len-1;i>=0;i--) {
38             Ans[i] = Ans[i+1] + sum[i+1] + v[i];
39         }
40 
41         int ans = 0;
42 
43         //for(int i=0;i<len;i++) {
44         //    ans = max(ans,Ans[i]);
45         //}
46 
47 
48         for(int i=len-1;i>=0;i--) {
49             if(ans<Ans[i])
50                 ans = Ans[i];
51             else break;
52         }
53 
54         printf("%d\n",ans);
55     }
56 
57     return 0;
58 }

 

转载于:https://www.cnblogs.com/TreeDream/p/6339982.html

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

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

相关文章

Calendar的那些神坑

参考我的博客&#xff1a;http://www.isedwardtang.com/2017/08/31/java-calendar-bug/转载于:https://www.cnblogs.com/EdwardTang/p/7476781.html

mkyaffs2image的用法

在Ubuntu中第一次使用mkyaffs2image命令时&#xff0c;会提示 mkyaffs2image&#xff1a;找不到命令 还需要安装mkyaffs2image http://code.google.com/p/fatplus/downloads/detail?nameyaffs2-source.tar&can2&q 下载yaffs2-source.tar 解压后&#xff0c;进入util…

全景图像拼接——基本流程

图像拼接技术是数字图像处理技术一个重要的研究方向,它即是将两幅或多幅相互有部分重叠的场景照片拼接成具有超宽视角、与原始图像接近且失真小、没有明显缝合线的高分辨率图像。可以很好地解决广角镜、鱼眼镜头等全景图获取设备的不足。如下图: 图像拼接产生的图像不…

SmartRaiden 和 Lighting Network 进行去中心化跨链原子资产交换

SmartRaiden 和 Lighting Network 进行去中心化跨链原子资产交换 前言 如果能够进行以太坊和比特币跨链原子资产交换&#xff0c;是不是一件很酷的事情&#xff1f; 目前链下的扩容方式有很多&#xff0c;最广为人知的就是比特币的闪电网络和以太坊的雷电网络&#xff0c;今天我…

WPF 带CheckBox、图标的TreeView

WPF 带CheckBox、图标的TreeView 在WPF实际项目开发的时候&#xff0c;经常会用到带CheckBox的TreeView&#xff0c;虽然微软在WPF的TreeView中没有提供该功能&#xff0c;但是微软在WPF中提供强大的ItemTemplate模板功能和自定义样式&#xff0c;那我们可以自己写一个这样的控…

win32框架,GDI图形编程写一个HelloWorld游戏_c语言

1.如图&#xff0c;实现功能: Hello World!字符串跟随鼠标移动鼠标左击Hello World!颜色为红色鼠标右击Hello World!颜色为蓝色鼠标滚轮滚动改变Hello World!颜色的RGB中的G值 2.实现工具: vs20133.实现步骤: 新建一个win32项目 如图,看到HelloWorldGame.cpp中 _tWinMain()的函…

全景图像拼接——图像融合

图像融合技术就是将配准过后的图像融合成一幅宽视角、大场景的图像。但由于图像采集过程中各种因素的影响,例如光照、角度、距离等,从而导致图像间的光照不均匀、颜色上不连续。 经过配准以后,参考图像和输入图像已经在同一个坐标系下,如果只是取某一幅图像的信息或者简单地…

极详细的ECC讲解 -OOB与ECC

http://blog.csdn.net/dongzhichen/article/details/8249228 详细的ECC讲解 -OOB与ECC 在网络编程中 OOB&#xff08;out of band&#xff09;带外数据 在MTD设备中 OOB 如下所示&#xff1a; http://www.cnblogs.com/bcxx_qin/archive/2009/06/11/1501271.html 极详细的ECC…

前端进阶(8) - 前端开发需要了解的工具集合:webpack, eslint, prettier, ...

前端开发需要了解的工具集合&#xff1a;webpack, eslint, prettier, ... 前端开发需要了解的一些工具&#xff0c;这些工具能够帮助你在项目开发中事半功倍。 1. nrm: npm registry 管理器 registry: npm 远程仓库的地址。 由于众所周知的原因&#xff0c;npm 官方仓库在国内特…

CMOS图像传感器——TOF 图像传感器

一、3D成像技术概述 图像传感器一直以来都是人类研究的热点。但随着当代科学技术发展, 人类对于传统的 2D 图像传感器的要求越来高,不仅期望着更高分辨率,更快速度,更大的动态范围,人类加希望能够获得物体深信息,但是 2D 成 像技术现在已经不能满足人类的需求,所以应运…

AndroidStudio创建jinLibs文件夹

在文件中的buildTypes节点下添加 sourceSets.main { jniLibs.srcDir libs } 如图 转载于:https://www.cnblogs.com/kim-liu/p/7479360.html

内嵌Tomcat的Connector对象的静态代码块

在排查问题的过程中发现Connector对象有一个静态代码块&#xff1a; static {replacements.put("acceptCount", "backlog");replacements.put("connectionLinger", "soLinger");replacements.put("connectionTimeout", &quo…

YAFFS2文件系统在嵌入式LINUX系统中的应用

YAFFS2文件系统在嵌入式LINUX系统中的应用 2011-03-31 19:59 181人阅读 评论(0) 收藏 举报 1&#xff0e;文件系统简述 随着32位CPU价格不断下跌&#xff0c;片上存储设备的容量相比越来越大&#xff0c;越来越多的嵌入式系统开始应用各种嵌入式操作系统。一般在嵌入式领域&am…

【Python爬虫学习笔记1】网络协议及请求基础

http协议与https协议 HTTP协议(全称为HyperText Transfer Protocol&#xff0c;超文本传输协议)&#xff0c;是发布和接收HTML页面的方法&#xff0c;其服务端口号为80。 HTTPS协议为HTTP协议的加密版本&#xff0c;其在HTTP下加入了SSL层&#xff0c;服务端口号为443。 URL结构…

快速上手SpyGlass——基本流程

SpyGlass&#xff0c;这是一个很强大的RTL验证级工具。它不仅仅能检查sdc的错误&#xff0c;还能做以下各种检查&#xff1a;Low Power, DFT&#xff0c;CDC&#xff08;Cross Domain Check&#xff09;。 一、基本概念 1、方法学相关 Rule: 是SpyGlass 进行RTL分析的最小单…

NAND FLASH ECC

NAND需要ECC以确保数据完整性。NAND闪存的每一个页面上都包括额外的存储空间&#xff0c;它就是64个字节的空闲区(每512字节的扇区有16字节)。该区能存储ECC代码及其它像磨损评级或逻辑到物理块映射之类的信息。ECC能在硬件或软件中执行&#xff0c;但是&#xff0c;硬件执行有…

快速上手SpyGlass——CDC检查

随着技术的发展&#xff0c;数字电路的集成度越来越高&#xff0c;设计也越来越复杂。很少有系统会只工作在同一个时钟频率。一个系统中往往会存在多个时钟&#xff0c;这些时钟之间有可能是同步的&#xff0c;也有可能是异步的。如果一个系统中&#xff0c;异步时钟之间存在信…

laravel session redis 设置

Laravel 在使用 Redis 作为 Session 驱动之前&#xff0c; 需要通过 Composer 安装 predis/predis 扩展包 (~1.0)。 当然也可以用原生自带的&#xff0c;具体使用见 https://laravel-china.org/docs/laravel/5.6/redis/1402#phpredis 操作即可。 然后在database 配置文件中配置…

数字后端——低功耗单元库

在之前的文章中&#xff0c;介绍了低功耗设计物理实施的方案&#xff1a; 数字后端——低功耗设计物理实施_沧海一升的博客-CSDN博客_低功耗设计低功耗设计方案所涉及到的物理实施相关内容https://blog.csdn.net/qq_21842097/article/details/119918312 为了实现例如门…

【CUDA开发】CUDA面内存拷贝用法总结

【CUDA开发】CUDA面内存拷贝用法总结 标签&#xff08;空格分隔&#xff09;&#xff1a; 【CUDA开发】 主要是在调试CUDA硬解码并用D3D9或者D3D11显示的时候遇到了一些代码&#xff0c;如下所示&#xff1a; CUdeviceptr g_pRgba 0; CUDA_MEMCPY2D memcpy2D { 0 }; memcp…