传送门:https://www.nowcoder.com/acm/contest/79#question

说是比赛题解,其实我只会前三题;

后面的一定补

T1

题意,在一个长度为n的时间内,问如何选择存款期限,使得收益最大。

dp

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define fi first
#define se second
double r[];
double dp[];
double ll(int n,int id,double a)
{
double t=1.0;
for(int i=;i<=n;i++)
{
t=t*(+r[id]);
}
return t*a;
}
int main(){ int n;
scanf("%d%lf%lf%lf%lf",&n,&r[],&r[],&r[],&r[]);
memset(dp,,sizeof(dp));
dp[]=1.0;
for(int i=;i<=n;i++)
{
for(int j=;j<=;j++)
{
int nian=(j==)?:j;
if(i>=nian)
{
dp[i]=max(ll(nian,j,dp[i-nian]),dp[i]);
}
}
}
printf("%.5lf\n",dp[n]); return ;
}

T2

利用前缀和即可;

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
typedef long long ll;
using namespace std; const int maxn = ;
ll a[maxn],b[maxn];
ll n,m;
bool cmp(ll a,ll b)
{
return a > b;
}
int main(){
scanf("%lld%lld",&n,&m);
for(int i=; i<=n; i++)
{
scanf("%lld",&a[i]);
}
for(int i=;i<=n;i++)
{
scanf("%lld",&b[i]);
}
a[]=,b[]=;
sort(a+,a++n);
sort(b+,b++n,cmp);
for(int i=;i<=n;i++)
{
a[i]+=a[i-];
b[i]+=b[i-];
} ll ans = ;
ll ff=;
for(int i=;i<=n; i++)
{
if(i%==)
ff+=m;
ll tmp = b[i]-a[i]+ff;
if(tmp>ans)ans=tmp;
}
printf("%lld\n",ans);
return ;
}

T3

题意:操作一个只含a,b的字符串,问能最少删去字母个数,使得在最后的字符串中,相邻不同的个数少于m个;

思路:dp;这题关键就是把(且新的字符串的首字母必须是'a')这句话发挥得淋漓尽致,这也规定了答案字符串中,必须是一块a,一块b,一块a……

所以,如果 j 是偶数,表示后面就要接a,如果 j 是奇数,必须要有b才行;

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <queue>
#define pb push_back
typedef long long ll;
using namespace std; const int maxn = ;
ll dp[maxn][];
string s1;
int n,m;
int main(){
cin>>n>>m>>s1;
s1="*"+s1;
memset(dp,,sizeof(dp));
int flag=;
for(int i=; i<=n; i++)
{
for(int j=; j<=m; j++)
{
dp[i][j]=max(dp[i][j],dp[i-][j]);
}
for(int j=; j<=m; j++)
{
if(((j&)&&s1[i]=='b')||(((j&)==)&&s1[i]=='a'))
{
if(j!=)dp[i][j]=max(dp[i][j], dp[i-][j-]+);
dp[i][j]=max(dp[i][j], dp[i-][j]+);
}
}
if(s1[i]=='a')flag=; //最后尽然把全b的情况忘记了
}
ll ans = ;
for(int i=; i<=m; i++)
{
ans=max(ans, dp[n][i]);
}
if(flag)cout<<<<endl;
else cout<<ans<<endl;
return ;
}

    

【牛客Wannafly挑战赛12】 题解的更多相关文章

  1. 【牛客Wannafly挑战赛12】小H和圣诞树

    题目 可以考虑边分治,对于某一种颜色,我们处理出分治边左右两边所有以这个颜色为端点的路径长度,之后随便拼一拼就好了 但是这样对于每一组询问都需要边分一遍,这样做复杂度是\(O(nm+n\log n)\ ...

  2. 牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树)

    牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树) 链接:https://ac.nowcoder.com/acm/problem/15706 现在需要您来帮忙维护这个名册, ...

  3. 牛客~~wannafly挑战赛19~A 队列

    链接:https://www.nowcoder.com/acm/contest/131/A来源:牛客网 题目描述 ZZT 创造了一个队列 Q.这个队列包含了 N 个元素,队列中的第 i 个元素用 Qi ...

  4. 牛客Wannafly挑战赛23 B.游戏

    游戏 题目描述 小N和小O在玩游戏.他们面前放了n堆石子,第i堆石子一开始有ci颗石头.他们轮流从某堆石子中取石子,不能不取.最后无法操作的人就输了这个游戏.但他们觉得这样玩太无聊了,更新了一下规则. ...

  5. 牛客 Wannafly 挑战赛26D 禁书目录 排列组合 概率期望

    原文链接https://www.cnblogs.com/zhouzhendong/p/9781060.html 题目传送门 - NowCoder Wannafly 26D 题意 放一放这一题原先的题面 ...

  6. 牛客Wannafly挑战赛26E 蚂蚁开会(树链剖分+线段树)

    传送门 题面描述 一颗n个节点的树,m次操作,有点权(该节点蚂蚁个数)和边权(相邻节点的距离). 三种操作: 操作1:1 i x将节点i的点权修改为x.(1 <= i <= n; 1 &l ...

  7. 牛客Wannafly挑战赛11E 白兔的刁难

    传送门 如果大力推单位根反演就可以获得一个 \(k^2logn\) 的好方法 \[ans_{t}=\frac{1}{k}\sum_{i=0}^{k-1}(w_k^{-t})^i(w_k^i+1)^n\ ...

  8. 牛客Wannafly挑战赛23F 计数(循环卷积+拉格朗日插值/单位根反演)

    传送门 直接的想法就是设 \(x^k\) 为边权,矩阵树定理一波后取出 \(x^{nk}\) 的系数即可 也就是求出模 \(x^k\) 意义下的循环卷积的常数项 考虑插值出最后多项式,类比 \(DFT ...

  9. 牛客 Wannafly挑战赛27 D 绿魔法师

    传送门 \(\color{green}{solution}\) 分析下,在\(1e5+1\)内,一个数的约数个数最多为\(2^{6}\)个,所以我们可以考虑枚举约数 复杂度\(O(N^{2^{6 \t ...

随机推荐

  1. 最近很火的MySQL:抛开复杂的架构设计,MySQL优化思想基本都在这

    优化一览图 优化 笔者将优化分为了两大类:软优化和硬优化.软优化一般是操作数据库即可:而硬优化则是操作服务器硬件及参数设置. 1.软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCRIB ...

  2. Ubuntu下python安装mysqldb(驱动)

    最近在学习Django框架,需要使用到数据库,我使用的是mysql,跟java一样,需要安装驱动,这是驱动的下载网址http://sourceforge.net/projects/mysql-pyth ...

  3. ubuntu中设置python默认版本

    看/usr/bin中的Python文件,发现该文件是python2.7的链接文件 于是直接删掉这个软链接,然后重新创建python2.6的链接文件: 1 rm /usr/bin/python 2 ln ...

  4. 浅谈设计模式及python实现

    设计模式及Python实现   设计模式是什么? Christopher Alexander:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样你就能一次又一次地使用 ...

  5. nginx lua集成kafka

    NGINX lua集成kafka 第一步:进入opresty目录 [root@node03 openresty]# cd /export/servers/openresty/ [root@node03 ...

  6. Java虚拟机学习笔记(一)之初识

    一:特定 跨平台性.安全性.可移植性. 二:体系机构 Java 体系结构包括四个独立但相关的技术: Java程序设计语言 Java Class文件格式 Java 应用编程接口(API) Java 虚拟 ...

  7. restapi(3)- MongoDBEngine : MongoDB Scala编程工具库

    最近刚好有同事在学习MongoDB,我们讨论过MongoDB应该置于服务器端然后通过web-service为客户端提供数据的上传下载服务.我们可以用上节讨论的respapi框架来实现针对MongoDB ...

  8. Python基础编程 内置函数

    内置函数 内置函数(一定记住并且精通) print()屏幕输出 int():pass str():pass bool():pass set(): pass list() 将一个可迭代对象转换成列表 t ...

  9. 记我的一次 Java 服务性能优化

    背景 前段时间我们的服务遇到了性能瓶颈,由于前期需求太急没有注意这方面的优化,到了要还技术债的时候就非常痛苦了. 在很低的 QPS 压力下服务器 load 就能达到 10-20,CPU 使用率 60% ...

  10. Linux常用命令之权限管理

    在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录,这也让linux更安全.下面主要讲解下常用的权限命令chgrp,chmod,chown . 1.文 ...