【牛客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 ...
随机推荐
- .NET加水印/验证码的NuGet包
.NET加水印/验证码的NuGet包 我的在前两篇文章(水印,验证码)中,我介绍了使用Direct2D给图片加水印/验证码,今天我将其进行了封装,发布了一个NuGet包Sdcb.Imaging: &l ...
- 阿里技术面全A,终面却被产品经理拉下马。。。
大纲: 一.投递简历 二.准备面试 三.技术一面 四.健身房里的技术二面 五.产品经理的死亡三面 六.总结 一.投递简历 找内推.大公司投简历尽量找内推,无论是校招还是社招.校招可以去牛客网或知乎找, ...
- maven添加oracle驱动包
问题描述 项目用到了oracle,但由于oracle商业版权问题,maven在中心资源库直接下载jar包是要收费的 解决方法 第一步: 下载ojdbc6.jar 第二步: 将下载的jar放入项目的li ...
- Java 性能优化(一)
Java 性能调优(一) 1.衡量程序性能的标准 (1) 程序响应速度: (2) 内存占有情况: 2.程序调优措施 (1) 设计调优 设计调优处于所有调优手段 的上层,需要在软件开发之前进行.在软件开 ...
- lvs模式及算法
一.三种模式 (一).Virtual Servervia Network Address Translation(VS/NAT) 通过网路地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将 ...
- LeetCode :1.两数之和 解题报告及算法优化思路
最近开始重拾算法,在 LeetCode上刷题.顺便也记录下解题报告以及优化思路. 题目链接:1.两数之和 题意 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 ...
- java-web调用后台下载方法
后台下载指定文件必定会用到流, 无论使用poi还是使用jxl导出excel都需要用到流一种是outputstrean,另一种fileoutputstream第一种:如果想要弹出保存的提示框必须加入下列 ...
- JavaWeb——使用会话维持状态
1.会话的作用 使用会话是为了维持状态,维持的是请求域请求之间的状态.因为HTTP请求自身是完全无状态的.从服务器的角度来看,当用户发出第一个请求开始,服务器无法将新的请求与之前的请求关联起来,举例说 ...
- 对于微信UnionID在公众平台以及小程序里面的获取
首先介绍下UnionID的作用,在注册了微信开放平台(注意,这里是开放平台,不是微信公众平台)之后,同一个微信号在这个开放平台下的项目上面的UnionID都是统一的,通俗的说就是,小程序跟公众号项目在 ...
- pythonday02基础与运算符
今日概要 1.循环 2.字符串格式化 3.运算符 4.编码 if的嵌套 score = input('请输入成绩') score_int = int(score) if score_int >= ...