题目传送门

解题思路:

背包,f[i]表示计算器位数为i时,可获得的最大分值.

本题与01背包不同的地方在于,物品的摆放顺序对答案是有影响的,例如两个字符串a,b,那么就会出现a+b和b+a两种情况(注意这是字符串),

而这又违背了DP的无后效性

因为我们先转移的i物品一定是在后转移的i+1物品的前面,就是说串i+1一定是加在了串i的后面某个位置(如果能加的话)。

所以显然也有可能是i+1这个串出现在i这个串的前面,所以显然现在是有后效性的.

那怎么办呢?排序!(请看代码cmp函数)

还有就是因为本题的f不是int,所以重新定义了一下max.

AC代码:

 #include<iostream>
#include<cstdio>
#include<map>
#include<algorithm> using namespace std; int d,n,ppp;
string g[],f[];
map<char,int> a; inline void make_map() {
a['O'] = a['D'] = ;
a['G'] = ;
a['B'] = ;
a['L'] = ;
a['q'] = ;
a['S'] = ;
a['h'] = ;
a['E'] = ;
a['Z'] = ;
a['I'] = ;
} inline bool cmp(string l,string b) {
string x = l + b;
string y = b + l;
return x < y;
} inline string _max(string l,string b) {
int u = l.length();
int o = b.length();
if(u == ) return b;
if(o == ) return l;
if(l[] != '' && b[] != '')
if(u > o) return l;
else if(u < o) return b;
if(l < b) return b;
return l;
} int main() {
scanf("%d%d",&d,&n);
make_map();
for(int i = ;i <= n; i++) {
string p;
cin >> p;
for(int j = p.length();j >= ; j--)
g[i] += (a[p[j-]] + '');
}
sort(g+,g+n+,cmp);
for(int i = n;i >= ; i--)
for(int j = d;j >= g[i].length(); j--)
f[j] = _max(f[j],f[j-g[i].length()] + g[i]);
if(f[d][] == ''){
printf("0.");
ppp++;
}
for(int i = ppp;i < f[d].length(); i++)
cout << f[d][i];
return ;
}

洛谷 P2549 计算器写作文的更多相关文章

  1. 洛谷 P2614 计算器弹琴

    P2614 计算器弹琴 题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参看洛谷P2549) 小A发现了一个计算器的另一个隐藏功能——弹琴. http://www.bilib ...

  2. 洛谷 P1022 计算器的改良

    题解:字符串模拟 坑点: 1) 0/-1=-0. 这是因为(来自洛谷讨论区某大犇) double下存储的数字会有精度误差,比如0可能被存成0.000000000...01然而如果你乘上或者除以一个负数 ...

  3. [NOIP2000] 提高组 洛谷P1022 计算器的改良

    题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先生. ...

  4. 洛谷—— P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...

  5. 洛谷P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...

  6. 洛谷——P1022 计算器的改良

    https://www.luogu.org/problem/show?pid=1022#sub 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在 ...

  7. 洛谷 [P2485] 计算器

    快速幂+同余方程+BSGS 同余方程在解的时候要注意,在将exgcd求出的解变换为原方程的解的时候,要取模 BSGS的原理就是用分块+hash优化暴力,要注意特判 a 和 b 是 p 的倍数的时候. ...

  8. (水题)洛谷 - P1022 - 计算器的改良

    https://www.luogu.org/problemnew/show/P1022 服了,居然还有+0.000和-0.000的不同,真的服了. #include<bits/stdc++.h& ...

  9. bzoj2242,洛谷2485----SDOI2011计算器(exgcd,qsm,bsgs模板)

    就是一道模板题! 这里再强调一下 BSGS 考虑方程\(a^x = b \pmod p\) 已知a,b,p\((2 \le p\le 10^9)\),其中p为质数,求x的最小正整数解 解法: 注意到如 ...

随机推荐

  1. Linux centosVMware NFS介绍、NFS服务端安装配置、NFS配置选项

    一.NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版 ...

  2. Day11 - J - Brave Game HDU - 1846

    十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻.今天,大家选择上 ...

  3. python中对闭包的理解

    运行环境声明:本人的代码在sublime text 3中写的,可以Ctrl+b运行.python版本是python3.6.如果您直接运行的,请自觉加入if __name__ == '__main__' ...

  4. Django线上项目后台admin不显示问题

    记一次django项目的线上部署错误,django+nginx 一.问题描述 在将django项目部署到阿里云(nginx作为web服务器)上之后发现出现后台管理界面admin不显示样式. 二.问题分 ...

  5. 十一 队列 Queue

    队列:  一种先进先出的数据结构  FIFO 数组队列的实现:

  6. Linux系统chmod命令的含义和权限详解

    许多喜欢使用chmod命令的用户,对chmod命令的含义和权限仍然不是很清楚,因此在使用的时候对它们造成了一定的麻烦.为了解决这些用户的迷惑,今天小编就和大家一起分享下chmod命令的含义和权限. 对 ...

  7. 第2节 storm路由器项目开发:8 - 9、集群监控软件ganglia的安装和使用

    Ganglia监控Hadoop集群的安装部署 详情请参见 http://boendev.iteye.com/blog/1750615 一. 安装环境 CentOS6.5x86_64 安装gmetad的 ...

  8. Oracle数据库自带了decode()函数

    Oracle数据库自带了decode()函数,函数的使用方法如下:   SELECT   emp.ename,   emp.job,   emp.sal,   decode(job, 'manager ...

  9. 7.2 Varnish 模式

  10. 前端学习笔记系列一:11@vue/cli3.x中实现跨域的问题

    由于浏览器的同源访问策略,vue开发时前端服务器通常与后端api服务器并非是相同的服务器,因此需要使用一个代理服务器实现跨域访问.在@vue/cli3.x根目录下创建一个vue.config.js文件 ...