E. The Fair Nut and Strings

题目链接:https://codeforces.com/contest/1084/problem/E

题意:

输入n,k,k代表一共有长度为n的多少个字符串。然后给出一个最小字符串s,最大字符串t,满足对于所有的k个字符串有s<=S<=t。

最后求满足条件的k个字符串(自己构造)的不同前缀数量的和。

题解:

这题很巧妙,设dp(i)表示长度为i的前缀的数量和,一开始有dp(1)=0。

后来随着长度的增加,我们每次可以在最后加一个a或者b,所以转移方程为dp(i)=2*dp(i-1)。

但是由于有最大最小字符串的限制,当si=b时,dp(i)会多加一个;当ti=a时,dp(i)也会多加一个。减去即可。

可以用归纳法来证明,假设当前循环到第i层,前缀长度i-1满足限制条件。那么si=b时,dp(i-1)中,只有一个后面加上a时(这个长度为i-1的字符串等于字符串s的前i-1位),会小于s;对于ti=a也同理。(考虑共同前缀)

最后输出求和min(dp(i),k)。(k个字符串任意长度的前缀最多也只有k个)

注意一下代码的细节。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e5+;
ll n,k;
char s[N],t[N];
ll dp[N];
int main(){
cin>>n>>k;
scanf("%s%s",s,t);
dp[]=;
ll ans = ;
for(int i=;i<=n;i++){
char sc = s[i-],tc = t[i-];
dp[i]=2ll*dp[i-];
if(sc=='b') dp[i]--;
if(tc=='a') dp[i]--;
if(dp[i]>=k){
dp[i]=k;
ans+=(n-i)*k;
break ;
}
}
for(int i=;i<=n;i++) if(dp[i]) ans+=dp[i];
printf("%I64d",ans);
return ;
}

还有一种就是把字符串看为二进制的,那么数量就为两个二进制相减。

直接给代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 ;
char s[N],t[N];
ll n,k;
int main(){
cin>>n>>k;
scanf("%s %s",s,t);
ll a=,b=;
ll ans =;
for(int i=;i<n;i++){
ll now;
a<<=;b<<=;
if(s[i]=='b') a++;
if(t[i]=='b') b++;
now = b-a+;
if(now>=k){
ans+=(n-i)*k;
break ;
}
ans+=now;
}
printf("%I64d",ans);
return ;
}

最新文章

  1. s5pv210 cpu运行debian
  2. MyEclipse运行前自动保存
  3. c#事件与委托
  4. 微信小程序「官方示例代码」浅析【上】
  5. Linux下挂载NTFS格式的U盘或硬盘
  6. The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.问题解决
  7. HighCharts基本用法
  8. Big Data Security Part One: Introducing PacketPig
  9. 一道google面试题(dp)
  10. 主成分分析PCA详解
  11. winform项目导入数据
  12. | dp-the Treasure Hunter
  13. 2018年山东省省队集训 Round 1 Day 2简要题解
  14. 2018-2019-2 20165313《网络对抗技术》Exp1 缓冲区溢出实验
  15. [android] 调用系统照相机和摄像机
  16. TCP端口转发(centos7)
  17. Online
  18. HDU1260(KB12-H DP)
  19. MYSQL数据库的参数文件
  20. echo、print、print_r、var_dump

热门文章

  1. Fibonacci使用递归和循环实现
  2. golang的加法比C快?
  3. SGU 495
  4. .NET中调用不安全代码
  5. 掘金 Android 文章精选合集
  6. 【廖雪峰老师python教程】——模块
  7. 第三十四篇 Python面向对象之 反射(自省)
  8. The Erdös-Straus Conjecture 题解
  9. python基础训练营04-函数
  10. Drools 7.4.1.Final参考手册(八) 规则语言参考