Codeforces 360C Levko and Strings dp

Codeforces 360C Levko and Strings dp

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

题目链接:点击打开链接

题意:

给定长度为n的字符串s,常数k

显然s的子串一共同拥有 n(n-1)/2 个

要求找到一个长度为n的字符串t,使得t相应位置的k个子串字典序>s

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
#define N 2505
#define mod 1000000007
#define ll __int64
ll n,k;
ll dp[N][N];//dp[i][j]表示i位置产生的j对(1-i-1都是同样的)
char s[N];
ll num[N], sum[N];
ll work(){
	if(k==0)return num[1];
	dp[0][0] = 1;
	sum[0] = 1;
	ll ans = 0;
	for(ll i = 1; i <= n; i++){
		ll len = n-i+1;
		for(ll j = 0; j <= k; j++) {
			for(ll z = i-1; z>=0 && (i-z)*len<=j; z--) {
				dp[i][j] = (dp[i][j]+dp[z][j-(i-z)*len])%mod;
			}
			dp[i][j] = dp[i][j]*('z'-s[i])%mod;
		}
		ans = (ans+dp[i][k]*num[i+1]%mod)%mod;
		for(ll j = 0; j <= k; j++) {
			dp[i][j] = (dp[i][j]+sum[j]*(s[i]-'a')%mod)%mod;
			sum[j] = (sum[j]+dp[i][j])%mod;
		}
	}
	return ans;
}
int main(){
	ll i;
	while(cin>>n>>k){
		cin>>s+1;
		num[n+1] = 1;
		for(i=n;i;i--)num[i] = num[i+1]*(s[i]-'a'+1)%mod;
		cout<<work()<<endl;
	}
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118439.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月6日 上午7:00
下一篇 2021年12月6日 上午8:00


相关推荐

  • json字符串数组转json数组

    json字符串数组转json数组当需要把一串字符串转成一个json数组,并遍历其中的内容时。首先要导入net.sf.json.JSONArray和net.sf.json.JSONObject两个jar包<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><c

    2022年6月21日
    106
  • 转罗马字符_罗马字符是什么意思

    转罗马字符_罗马字符是什么意思publicclassNumToRoman{publicstaticstringToRomanNum(intpNum){string[,]a=newstring[3,10]{{“”,”I”,”II”,”III”,”IV”,”V”,”VI”,”VII”,”VIII”,

    2026年4月18日
    5
  • 手把手教你安装微信开发者工具

    手把手教你安装微信开发者工具1 登录小程序后台 选择普通小程序开发者工具 2 找到左侧下载 3 选择合适自己的版本下载 我选择的是稳定版 windows64 4 安装 安装过程比较简单 不用设置什么 按照提示来就行了 下面是每一步详细截图 5 安装完成 到此 已经安装成功 可以进行小程序代码开发了

    2026年3月18日
    4
  • 前端面试ajax考点汇总_javascript常见面试题

    前端面试ajax考点汇总_javascript常见面试题前端面试题总结(四)ajax篇1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识)什么是ajax:AJAX是“AsynchronousJavaScriptandXML”的缩写。他是指一种创建交互式网页应用的网页开发技术。Ajax包含下列技术:基于web标准(standards-basedpresentation)XH…

    2022年8月29日
    4
  • zip压缩报错解决:zip warning: name not matched: xxx/xxx/xxx

    zip压缩报错解决:zip warning: name not matched: xxx/xxx/xxx参考:“zipwarning:namenotmatched”whilecompressingadirectory-Unix&LinuxStackExchange这个报错的原因是要压缩的文件是个符号链接文件,但指向的文件不存在,解决方法是加上-y参数,意思是storesymboliclinksasthelinkinsteadoftherefe…

    2025年7月10日
    3
  • 分布式架构设计中的CAP原理

    分布式架构设计中的CAP原理https://blog.csdn.net/chancein007/article/details/53730991

    2022年5月19日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号