首页 > nico和niconiconi
头像 zitoLi
发表于 2020-02-21 16:17:30
我是如何想到用最简单易懂的解法的 #include<bits/stdc++.h> using namespace std; #define ll long long int n; ll a,b,c;//范围是1e9,但相加就要超,所以用ll ll f[300010]={0}; char 展开全文
头像 其实是牛哥
发表于 2021-10-19 15:13:22
nico和niconiconi 难度:3星 计 dp[i]dp[i]dp[i] 代表前 iii 个字符的计数最大值。 那么可得转移方程: 若取当前子串"nico": if(substring(i−3,i)==nico)thenif(substring(i-3,i)==nico)thenif(subs 展开全文
头像 小毅儿
发表于 2020-09-17 21:40:14
一个跟字符串相关的dp问题,还是挺简单的 #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <iostream> #includ 展开全文
头像 我能找到工作吗?
发表于 2021-10-21 17:08:25
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); String lin 展开全文
头像 文和906
发表于 2021-10-27 16:37:52
典型的线性动态规划。使用前缀和的思路,建立一个数组用于存储字符串str前i个字符中最大的值,然后寻找其递推关系。显然,每遍历一个字符,都要判断其前i个字符中最大的前缀和的a, b, c的状态,有可能仅是增加1个a, b, c,亦有可能增加3个a,减少一个c。最后,前缀和数组中的末项即为整个字符串最大 展开全文
头像 fred-coder
发表于 2021-11-03 00:19:45
利用动态规划思路求解,构建 dp 数组,设置初始值,根据转移状态方程进行遍历,dp[i] 表示字符串 s[:i + 1] 内的最有价值值,则当 i >= 3 时, 若 s[i - 3: i + 1] == "nico" 时,有价值即 dp[i] = max(dp[i], dp[i - 3] + 展开全文
头像 牛客484960258号
发表于 2021-12-30 11:02:19
while True: try: n,a,b,c = map(int,input().split()) chars = input() dp = [0]*n for i in range(3,n): dp 展开全文
头像 yc20
发表于 2021-10-24 16:45:31
import java.util.Scanner; public class Main{     public long maxNums(String nums, int num 展开全文
头像 bibibibi
发表于 2021-11-02 15:42:51
描述 给定三个字符串"nico","niconi","niconiconi",分别对应价值a,b,ca,b,ca,b,c,同时给定一个长度为nnn的字符串,选择该字符串中部分子串使得选择的子串的价值最大,每个字符仅能被选一次 思路 动态规 展开全文
头像 蘑菇睡不着
发表于 2021-10-17 18:52:12
描述 给定一个字符串 S ,定义三种有价值的字符串: A = "nico" ,B = "niconi" , C = "niconiconi" 其中,字符串 A 的价值为 a, 字符串 B 的价值为 b,字符串 C 的价值为 c 她拿到了一个长度为 n 的字符串,你需要在其中找到一些有价值的子串 (指 展开全文

等你来战

查看全部