HDOJ 3732 Ahui Writes Word

2024-05-05 12:58
文章标签 word hdoj writes 3732 ahui

本文主要是介绍HDOJ 3732 Ahui Writes Word,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



杭电OJ 3732;l链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732

Ahui Writes Word

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1977    Accepted Submission(s): 731


Problem Description
We all know that English is very important, so Ahui strive for this in order to learn more English words. To know that word has its value and complexity of writing (the length of each word does not exceed 10 by only lowercase letters), Ahui wrote the complexity of the total is less than or equal to C.
Question: the maximum value Ahui can get.
Note: input words will not be the same.


Input
The first line of each test case are two integer N , C, representing the number of Ahui’s words and the total complexity of written words. (1 ≤ N ≤ 100000, 1 ≤ C ≤ 10000)
Each of the next N line are a string and two integer, representing the word, the value(Vi ) and the complexity(Ci ). (0 ≤ Vi , Ci ≤ 10)


Output
Output the maximum value in a single line for each test case.


Sample Input
  
5 20 go 5 8 think 3 7 big 7 4 read 2 6 write 3 5


Sample Output
  
15
Hint
Input data is huge,please use “scanf(“%s”,s)”
题目分析:
首先,我们可以明确一点,输入数据中的字符串是没有作用的。然后,还有一点要注意,这道题目乍看上去像是01背包(注意数据量N≤ 100000,C ≤ 10000,直接套用01背包显然会超时),但是实际上是多重背包(0 ≤ Vi , Ci ≤ 10, (Vi,Ci)的组合最多就是121个,但是N最大是100000,所以里面会出现很多重复的(Vi,Ci),也就是多重背包了)。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define max(x,y) x>y?x:yint dp[10010], num[12][12], weight[100010], value[100010];int main()
{int n, c;while(~scanf("%d%d", &n, &c)){int valuea, price, count = 0;char s[20];memset(dp, 0, sizeof(dp));memset(num, 0, sizeof(num));memset(weight, 0, sizeof(weight));memset(value, 0, sizeof(value));for(int i = 1; i <= n; i++){scanf("%s%d%d", s, &valuea, &price);num[valuea][price]++;}for(int i = 0; i <= 10; i++){for(int k = 0; k <= 10; k++){int tmp = num[i][k];for(int j = 1; j <= tmp; j = j*2) // 二进制拆分         {            weight[count] = j * k;            value[count++] = j * i;             tmp -= j;        }if(tmp > 0)        {            weight[count] = tmp * k;             value[count++] = tmp * i;         } }}for(int i = 0; i < count; i++){for(int j = c; j >= weight[i]; j--){dp[j] = max(dp[j], dp[j-weight[i]]+value[i]);}    }printf("%d\n", dp[c]);}return 0;
}

这篇关于HDOJ 3732 Ahui Writes Word的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961776

相关文章

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Python实现一键PDF转Word(附完整代码及详细步骤)

《Python实现一键PDF转Word(附完整代码及详细步骤)》pdf2docx是一个基于Python的第三方库,专门用于将PDF文件转换为可编辑的Word文档,下面我们就来看看如何通过pdf2doc... 目录引言:为什么需要PDF转Word一、pdf2docx介绍1. pdf2docx 是什么2. by

如何Python使用设置word的页边距

《如何Python使用设置word的页边距》在编写或处理Word文档的过程中,页边距是一个不可忽视的排版要素,本文将介绍如何使用Python设置Word文档中各个节的页边距,需要的可以参考下... 目录操作步骤代码示例页边距单位说明应用场景与高级用China编程途小结在编写或处理Word文档的过程中,页边距是一个

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方