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

题意:

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

分析:

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

 #include <bits/stdc++.h>

 using namespace std;

 int n;
int val[];
int cnt[];
int len; int dfs(int cur)
{
int ans = ;
if(cur>=len+) return ;
else
{
for(int i=; i<n; i++)
{
if(cnt[i]>)
{
cnt[i]--;
ans = max(ans,(cur+)*val[i]+dfs(cur+));
cnt[i]++;
}
}
}
return ans;
} int main()
{
int t;
scanf("%d",&t); while(t--)
{
scanf("%d",&n);
len = ;
for(int i=; i<n; i++)
{
scanf("%d%d",&val[i],&cnt[i]);
len+=cnt[i];
} printf("%d\n",dfs());
}
return ;
}

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

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

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

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

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

 #include <bits/stdc++.h>

 using namespace std;

 int main()
{
int t;
scanf("%d",&t);
while(t--) {
int n;
scanf("%d",&n); vector<int> v; for(int i=;i<n;i++) {
int val,cnt;
scanf("%d%d",&val,&cnt);
for(int i=;i<cnt;i++) {
v.push_back(val);
}
} sort(v.begin(),v.end()); int len = v.size(); int Ans[];
int sum[]; memset(Ans,,sizeof(Ans));
memset(sum,,sizeof(sum)); for(int i=len-;i>=;i--) {
sum[i] = sum[i+] + v[i];
} for(int i=len-;i>=;i--) {
Ans[i] = Ans[i+] + sum[i+] + v[i];
} int ans = ; //for(int i=0;i<len;i++) {
// ans = max(ans,Ans[i]);
//} for(int i=len-;i>=;i--) {
if(ans<Ans[i])
ans = Ans[i];
else break;
} printf("%d\n",ans);
} return ;
}

BestCoder Round #91 1001 Lotus and Characters的更多相关文章

  1. BestCoder Round #91 1002 Lotus and Horticulture

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012 题意: 这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望. Lotus ...

  2. 贪心 BestCoder Round #39 1001 Delete

    题目传送门 /* 贪心水题:找出出现次数>1的次数和res,如果要减去的比res小,那么总的不同的数字tot不会少: 否则再在tot里减去多余的即为答案 用set容器也可以做,思路一样 */ # ...

  3. 暴力 BestCoder Round #41 1001 ZCC loves straight flush

    题目传送门 /* m数组记录出现的花色和数值,按照数值每5个搜索,看看有几个已满足,剩下 5 - cnt需要替换 ╰· */ #include <cstdio> #include < ...

  4. 暴力 BestCoder Round #46 1001 YJC tricks time

    题目传送门 /* 暴力:模拟枚举每一个时间的度数 详细解释:http://blog.csdn.net/enjoying_science/article/details/46759085 期末考结束第一 ...

  5. 字符串处理 BestCoder Round #43 1001 pog loves szh I

    题目传送门 /* 字符串处理:是一道水题,但是WA了3次,要注意是没有加'\0'的字符串不要用%s输出,否则在多组测试时输出多余的字符 */ #include <cstdio> #incl ...

  6. BestCoder Round #75 1001 - King's Cake

    Problem Description It is the king's birthday before the military parade . The ministers prepared a ...

  7. BestCoder Round #92 1001 Skip the Class —— 字典树 or map容器

    题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1001 题解: 1.trie树 关 ...

  8. BestCoder Round #61 1001 Numbers

    Problem Description There are n numbers A1,A2....An{A}_{1},{A}_{2}....{A}_{n}A​1​​,A​2​​....A​n​​,yo ...

  9. BestCoder Round #87 1001

    GCD is Funny Accepts: 524 Submissions: 1147 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 655 ...

随机推荐

  1. HIVE 计算指定日期本周的第一天和最后一天

    -- 计算指定日期本周的第一天和最后一天 select day ,dayofweek(day) as dw1 ,date_add( - dayofweek(day)) as Su_s -- 周日_st ...

  2. 基础 —— ip地址与子网掩码的认识

    目录: 1.IP地址的作用 2.IP地址如何表示 3.IP地址的结构 4.子网掩码 5.IP地址的分类 6.私有IP地址 7.二进制与十进制的转换 8.练习题 IP地址的作用: 在一定范围内,唯一的标 ...

  3. call and apply

    apply()把参数打包成Array再传入: call()把参数按顺序传入. Math.max.apply(null, [3, 5, 4]); // 5 Math.max.call(null, 3, ...

  4. 【密码学】CSP的概念

    CSP加密服务提供者(Cryptographic Service Provider)具有一下几个特点: CSP是真正执行密码运算的独立模块 物理上一个CSP由两部分组成:一个动态连接库,一个签名文件 ...

  5. 为什么阿里云服务器的docker启动tomcat这么慢??

    https://blog.csdn.net/tianyiii/article/details/79314597 最近在阿里云服务器使用Docker启动Tomcat,发现tomcat服务器启动过程很慢. ...

  6. DEDE会员注册邮件验证时,用户无法收到邮件的解决方法

    本文以qq邮箱.163邮箱和易网库提供的企业邮箱为例,简要介绍在织梦(DEDECMS)中设置SMTP验证发送邮件的方法 一.在织梦中使用qq邮箱发送邮件 1.在织梦中使用qq邮箱发送邮件, 需要确保q ...

  7. ThinkPHP 统计数据(数字字段)更新 setInc 与 setDec 方法

    ThinkPHP 统计数据更新 ThinkPHP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 setInc() ThinkPHP ...

  8. NodeJS 开发应用

    NodeJS 开发应用 使用的 Node 版本: V8.11.4 开发工具: VSCode 1.27.1 系统: Deepin 15.7 Desktop x64 项目结构 项目结构 Project i ...

  9. Asp.Net Mvc: 应用BindAttribute

    环境: Windows 2008, VS 2008 SP1, Asp.Net Mvc RC1 ----------------------------------------------------- ...

  10. Sql 本周当天本期日期转换

    --查询当天: --查询24小时内的: --info为表名,datetime为数据库中的字段值 --查询当天: --查询24小时内的: select * from table where DateDi ...