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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 页面左侧二级菜单20种案例「建议收藏」

    页面左侧二级菜单20种案例「建议收藏」 本文由码农网&amp;nbsp;–小峰原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!jQuery作为一款主流的JavaScript前端开发框架,深受广告开发者的亲睐,同时jQuery有着不计其数的插件,特别是菜单插件更为丰富,本文将要为大家介绍20个绚丽而实用的jQuery侧边栏菜单,这些侧边栏菜单可以用在不同风格的网页上,如…

    2022年5月4日
    67
  • hive 正则表达式详解[通俗易懂]

    hive 正则表达式详解[通俗易懂]hive中的正则表达式还是很强大的。数据工作者平时也离不开正则表达式。对此,特意做了个hive正则表达式的小结。所有代码都经过亲测,正常运行。1.regexp语法:AREGEXPB操作类型:strings描述:功能与RLIKE相同selectcount(*)fromolap_b_dw_hotelorder_fwherecreate_date_widnotregexp

    2022年5月13日
    56
  • smalldatetime mysql_SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005-6-…

    smalldatetime mysql_SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005-6-…SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-812:12:00和2005-6-614:02:02我用下面语句什么也搜不出来select*fromsoftwheresoft.savetimelike’%2005-3-8%’SQL帮助中说:”当搜索datetime值时,推荐使用LIKE,因为date…

    2022年5月12日
    33
  • petalinux-package_centos7安装详细图解

    petalinux-package_centos7安装详细图解PetalLinux是Xilinx公司推出的嵌入式Linux开发工具,专门针对Xilinx公司的FPGASoC芯片和开发板,用户可以在PetaLinux工具的帮助下进行完整的开发流程,包括设计,验证,仿真,下载等。本文将详细介绍PetaLinux的安装流程,虽然实际上基本就是把Xilinx的UG1144翻译一遍。

    2022年9月11日
    0
  • 计算机操作系统进程管理总结报告_进程的管理和控制实验报告

    计算机操作系统进程管理总结报告_进程的管理和控制实验报告计算操作系统进程管理一、进程与线程1.1、进程进程是资源分配的基本单位。进程控制块PCB(ProcessControlBlock)描述的是进程的基本信息以及进程的运行状态,我们说的创建及撤销进程都是对进程控制块PCB的操作。进程之间可以并发执行。一个程序中可以有多个进程。1.2、线程线程是独立调度的基本单位。一个进程中可以有多个线程,他们之间共享…

    2022年9月10日
    0
  • spring整合spring-data-redis和spring-session-data-redis通过shiro实现单点登录

    spring整合spring-data-redis和spring-session-data-redis通过shiro实现单点登录运行效果图缓存说明(本项目没有使用shiro的缓存管理器和session管理器)shiro_user_cache:permission:权限缓存,当前只有test用户shiro_user_cache:role:角色缓存,当前只有test用户shiro_user_kickout:保存被踢出的用户shiro_user_online:保存登录了的用户sprting:spr

    2022年5月3日
    97

发表回复

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

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