【牛客Wannafly挑战赛12】 题解
传送门: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】 题解的更多相关文章
- 【牛客Wannafly挑战赛12】小H和圣诞树
题目 可以考虑边分治,对于某一种颜色,我们处理出分治边左右两边所有以这个颜色为端点的路径长度,之后随便拼一拼就好了 但是这样对于每一组询问都需要边分一遍,这样做复杂度是\(O(nm+n\log n)\ ...
- 牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树)
牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树) 链接:https://ac.nowcoder.com/acm/problem/15706 现在需要您来帮忙维护这个名册, ...
- 牛客~~wannafly挑战赛19~A 队列
链接:https://www.nowcoder.com/acm/contest/131/A来源:牛客网 题目描述 ZZT 创造了一个队列 Q.这个队列包含了 N 个元素,队列中的第 i 个元素用 Qi ...
- 牛客Wannafly挑战赛23 B.游戏
游戏 题目描述 小N和小O在玩游戏.他们面前放了n堆石子,第i堆石子一开始有ci颗石头.他们轮流从某堆石子中取石子,不能不取.最后无法操作的人就输了这个游戏.但他们觉得这样玩太无聊了,更新了一下规则. ...
- 牛客 Wannafly 挑战赛26D 禁书目录 排列组合 概率期望
原文链接https://www.cnblogs.com/zhouzhendong/p/9781060.html 题目传送门 - NowCoder Wannafly 26D 题意 放一放这一题原先的题面 ...
- 牛客Wannafly挑战赛26E 蚂蚁开会(树链剖分+线段树)
传送门 题面描述 一颗n个节点的树,m次操作,有点权(该节点蚂蚁个数)和边权(相邻节点的距离). 三种操作: 操作1:1 i x将节点i的点权修改为x.(1 <= i <= n; 1 &l ...
- 牛客Wannafly挑战赛11E 白兔的刁难
传送门 如果大力推单位根反演就可以获得一个 \(k^2logn\) 的好方法 \[ans_{t}=\frac{1}{k}\sum_{i=0}^{k-1}(w_k^{-t})^i(w_k^i+1)^n\ ...
- 牛客Wannafly挑战赛23F 计数(循环卷积+拉格朗日插值/单位根反演)
传送门 直接的想法就是设 \(x^k\) 为边权,矩阵树定理一波后取出 \(x^{nk}\) 的系数即可 也就是求出模 \(x^k\) 意义下的循环卷积的常数项 考虑插值出最后多项式,类比 \(DFT ...
- 牛客 Wannafly挑战赛27 D 绿魔法师
传送门 \(\color{green}{solution}\) 分析下,在\(1e5+1\)内,一个数的约数个数最多为\(2^{6}\)个,所以我们可以考虑枚举约数 复杂度\(O(N^{2^{6 \t ...
随机推荐
- Thinkphp 3.2.3 parseWhere设计缺陷导致update/delete注入 分析
目录 分析 总结 分析 首先看一下控制器,功能是根据用户传来的id,修改对应用户的密码. 13行把用户传来的id参数送入where()作为SQL语句中的WHERE语句,将pwd参数送入save()作为 ...
- Linux学习笔记04
文件查找命令find 文件查找命令: which locate find which:查找命令字所在的位置 locate:模糊匹配(只要包含关键字的文件都查找出来) 不是实时的,基于数据库查找, up ...
- .NET读写DBF
C# 读写DBF分为两种模式,一种为OLEDB驱动,需要安装一个文件“VFPOLEDBSetup.msi”: 一种为Odbc模式,这种几乎上不需要安装Odbc驱动 我这边用的是第一种. /// < ...
- Unittest 支持 case 失败后自动截图功能的另外两种方式
原生的unittest框架是不支持case失败后自动截图的功能的,网上看了大家的解决办法,大体上分为两种:1.要么加装饰器2.也有人封装断言这里我们看看还有没有其他的更加方便的方法值得大家一起探讨一下 ...
- SonarQube+Jenkins安装工程中遇到的吭
1. SonarQube是不是有点飘了,居然要java11+才能运行 解决方案: 重新下载老版本 也不知道哪个版本才好用,就下载了7.0 和6.6,这两个版本用jdk1.8就可以用 2. 配置数据库u ...
- JAVA基础知识(七)存根类
存根类是一个类,它实现了一个接口,它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法.但是一个类从业务来说,可能只需要其中一两个方法.如果直接去实现这个接口,除了实现所需的方法 ...
- Web开发中的相对路径和绝对路径
在学习HTML的时候一定会遇到引入文件和链接跳转页面,比如:JS文件.CSS文件.Image图片.我们就会考虑是相对路径和绝对路径的问题.下面PHP程序员雷雪松就详细讲解下Web开发中的相对路径和绝对 ...
- 减谈迷宫C++
今天老师让做了个迷宫问题,我一看到就发现和我之前写过的一个程序是一样 的,但是在后来编写的时候有一个地方搞错了,最后下课了我还是没有正确的编写好,然后今天回来之后自己有看了一下,现在已经解决了. #i ...
- spark源码阅读---Utils.getCallSite
1 作用 当该方法在spark内部代码中调用时,会返回当前调用spark代码的用户类的名称,以及其所调用的spark方法.所谓用户类,就是我们这些用户使用spark api的类. 2 内部实现 2.1 ...
- Tomcat源码分析 (六)----- Tomcat 启动过程(一)
说到Tomcat的启动,我们都知道,我们每次需要运行tomcat/bin/startup.sh这个脚本,而这个脚本的内容到底是什么呢?我们来看看. 启动脚本 startup.sh 脚本 #!/bin/ ...