[Codeforces301E][DP]Yaroslav and Arrangements

【解题报告】Codeforces Round #301 (Div. 2) 简略的解题报告。 阅读详情

翻译

如果一个数列相邻两项之差的绝对值均为 1(我们认为首项和末项也相 邻),并且首项是数列中最小的元素之一,那么我们称之为良好数列。 如果一个数列单调不降且长度在 1 到 n 之间,数列中每个数的值在 1 到 m 之间,且重排后能得到至少 1 个至多 k 个良好数列,那么我们称之为优秀数列。 给出 n、m、k,求优秀数列的个数。 答案对 1000000007 取模

题解

这题有点东西…
把首项看成1,破环成链,a[n+1]=1
如果在最大值为i的情况下,最后乘一个m−i+1m-i+1m−i+1就好了
我们考虑如何设计状态
首先你至少要知道当前这个数列能组成多少个良好数列
从小往大加数
比如两个1之间如果有空格,他们之间至少要加一个2
所以我们再加入一个状态,当前必须要加多少个数
啊别忘了记录当前加入了多少个数
枚举当前加入的数的数量
设他为T
设至少要加K个数
显然,我们会有T-K个组合两两之间是空格
所以
f[i][j][k]−>f[i+1][j+T][T−K]f[i][j][k]->f[i+1][j+T][T-K]f[i][j][k]−>f[i+1][j+T][T−K]
等等,还没转移方案数
其实就相当于T个球要放入K个箱子中不允许有空
那不就是f[i][j][k][l]−>f[i+1][j+T][T−K][l∗CT−1K−1]f[i][j][k][l]->f[i+1][j+T][T-K][l*C_{T-1}^{K-1}]f[i][j][k][l]−>f[i+1][j+T][T−K][l∗CT−1K−1​]
然后枚举到一个最大值记录答案即可

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<ctime>
#include<map>
#define LL long long
#define mp(x,y) make_pair(x,y)
#define mod 1000000007
using namespace std;
inline int read()
{
    int f=1,x=0;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
inline void write(int x)
{
    if(x<0)putchar('-'),x=-x;
    if(x>9)write(x/10);
    putchar(x%10+'0');
}
inline void pr1(int x){write(x);printf(" ");}
inline void pr2(int x){write(x);puts("");}
int n,m,K;
int C[105][105];
int f[2][105][105][105];//当前最大值 已经加了多少个数 还必须要加多少个数 方案数 
void ad(int &x,int y){x+=y;if(x>=mod)x-=mod;}
int main()
{
    n=read();m=read();K=read();
    if(n==1)return puts("0"),0;
    C[0][0]=1;
    for(int i=1;i<=100;i++)
        for(int j=0;j<=100;j++)
        {
            C[i][j]=j?C[i-1][j]+C[i-1][j-1]:C[i-1][j];
            if(C[i][j]>K)C[i][j]=K+1;	
        }
    n++;
    int now=0,ans=0;f[now][0][1][1]=1;
    for(int i=0;i<=m;i++)
    {
        now^=1;int num=0;
        if(i)
        {
            for(int j=2;j<=n;j++)
                for(int k=1;k<=K;k++)
                    ad(num,f[now^1][j][0][k]);
            ad(ans,(LL)num*(m-i+1)%mod);
        }
        memset(f[now],0,sizeof(f[now]));
        for(int j=0;j<=n;j++)
            for(int k=1;k<=n;k++)
                for(int l=1;l<=K;l++)
                    if(f[now^1][j][k][l])
                        for(int t=k;t+j<=n;t++)
                            ad(f[now][j+t][t-k][min(K+1,l*C[t-1][k-1])],f[now^1][j][k][l]);
    }
    pr2(ans);
    return 0;
}
电池管理系统(BMS)系列—状态估计之SOH BMS系列文章,介绍了SOH估计 阅读详情

相关推荐

python知网爬虫论文pdf下载+立即可用(动态爬虫)

python实现动态爬虫知网论文,搜索+自动翻页+下载 收集数据利器

Braylon的博客 5380

【Codeforces301E】Yaroslav and Arrangements

题意: 给出n,m,kn,m,k,询问有多少个长度为nn的数组bb满足以下要求: b[i]≤b[i+1](1≤i<n)b[i] \leq b[i+1](1 \leq i < n) 1≤b[1]≤b[n]≤m1 \leq b[1] \leq b[n] \leq m 将bb数组排列后有大于等于一种小于等于kk种排列aa满足以下要求: |a[i]−a[i+1]|=1(1≤i<n)|a[i]-a[i+1

wzf_2000的博客 871

揭秘大型语言模型:从神经元到思维透明的奇妙旅程

这篇博客带你走进大型语言模型的内部世界,从神经元的小任务,到功能向量的团队合作,再到层间的协作和思维的透明化。掌握这些知识,能让你在开发中更高效地优化AI,在研究中更深入地探索模型的奥秘。建议多动手实践,把这些理论变成自己的能力!

数据与算法架构提升之路专栏 1521

【cf】Codeforces 题解等汇总

【cf】Codeforces Round #774 (Div. 2) 前4题 【cf】Codeforces Round #774 (Div. 2) 前4题_legend_yst的博客-优快云博客 【算法刷题】排序:CodeForces 984A,CodeForces 1132B,CodeForces 1015C 【算法刷题】排序:CodeForces 984A,CodeForces 1132B,CodeForces 1015C_一只小榨菜的博客-优快云博客 题目:codeforces 1

青少年趣味编程 3142

基于大模型的JMeter日志智能分析服务化实践

在软件性能测试领域,日志分析是定位系统瓶颈、评估稳定性的关键环节。传统基于规则或正则表达式的分析方法,在面对格式多变、上下文关联复杂的海量日志时,往往效率低下且难以深入。大语言模型(LLM)凭借其强大的自然语言理解与推理能力,为这一挑战提供了新的解决方案。其技术价值在于能够自动化地从非结构化文本中提取语义信息、关联分散的上下文,并生成可操作的根因分析与优化建议,从而将工程师从繁琐的日志筛查中解放出来,显著提升问题诊断的深度与效率。这一技术可广泛应用于自动化测试报告生成、实时监控预警、脚本调试辅助等工程实践场

weixin_28839549的博客 338

NOAA气象数据下载攻略

各方搜寻气象数据下载途径,发现网上最多的就是从NOAA下载,但是中途有尝试过很多次都没有下载到,每次都是显示不可用,今天终于下载成功了,特此记录。 首先我是从这个网址进入的:National Centers for Environmental Information (NCEI) formerly known as National Climatic Data Center (NCDC) | NCEI offers access to the most significant archives of oc

lianqian66的博客 3万+

Codeforces Round #301 (Div. 2) E. Infinite Inversions (分类讨论 逆序对)

题目链接 今天注定是不能补掉了,先把理解到的思路写一些。 一、题意 有一个无限长的序列{1, 2, 3, 4, ...}。现在给出n个操作,每个操作由a[i]和b[i]构成,表示第a[i]个数将和第b[i]个数交换位置。n不超过1e5,a[i]和b[i]不超过1e9。求操作后产生的逆序对总数。 二、思路 从官方题解(见E题部分)里面看了个大概,是将问题区分成两个部分。 可以知道,如果两...

xuzonghao的博客 265

计算机视觉之ResNet

RestNet是2015年由微软团队提出的,在当时获得分类任务,目标检测,图像分割第一名。该论文的四位作者何恺明、张祥雨、任少卿和孙剑如今在人工智能领域里都是响当当的名字,当时他们都是微软亚研的一员。实验结果显示,残差网络更容易优化,并且加深网络层数有助于提高正确率。在ImageNet上使用152层的残差网络(VGG net的8倍深度,但残差网络复杂度更低)。对这些网络使用集成方法实现了3.75%的错误率。获得了ILSVRC 2015竞赛的第一名。原文链接这是一篇计算机视觉领域的经典论文。

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎 2万+

A. Yaroslav and Permutations

time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Yaroslav has an array that consists of n integers. In one second

无知的我 2453

基于STM32设计的电能质量控制系统_353

本项目基于STM32F103RCT6微控制器设计了一套电能质量控制系统,实现了对火焰、烟雾、环境温湿度、电压、电流及功率等多项参数的实时监测与报警。系统通过MQ2烟雾传感器、火焰传感器、SHT30温湿度传感器及电力参数采集模块采集数据,采用高电平触发有源蜂鸣器进行异常报警。采集的数据通过ESP8266无线模块以AP+TCP模式上传至基于Qt开发的手机APP和电脑上位机,实现远程实时监控和历史数据管理。系统配备1.44寸LCD显示屏,实现本地数据显示。软件采用Keil5开发,采用寄存器编程方式,提高系统响应速

254

[VT虚拟化驱动]利用EPT实现无痕HOOK

本章利用讲EPT无痕HOOK

吾无法无天的博客 1万+

codeforces 301 E. Infinite Inversions

题目: time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There is an infinite sequence consisting of all posit...

weixin_30952535的博客 172

28、时间敏感网络中可靠性感知的综合路由与调度

本文针对时间敏感网络(TSN)中现有路由与调度机制主要关注时间触发(TT)流量而忽略其他类型流量效用的问题,提出了一种可靠性感知的综合路由与调度机制。通过将具有不同可靠性和延迟要求的各类流量的联合路由与调度问题形式化为基于优化模理论(OMT)的混合整数规划问题,设计了完整的路由约束与调度约束,并分析了不同类型流量的传输效用,设定了优化目标以提升整体网络性能。实验结果表明,该机制在满足TT流量严格时延与可靠性要求的同时,显著提高了AVB和BE等非关键流量的传输效用,实现了多类型流量的高效协同传输。

hhh00的博客 95

Codeforces Round #301 (Div. 2)E(树状数组+离散化)

E. Infinite Inversions time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There is an infinite sequence consis

u013268685的专栏(有一种幸福叫AC,有一种期待叫AK) 1417

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

codeforces 838D D. Airplane Arrangements 构造法 推公式

题意:航空公司卖机票。飞机座位是1~n的,卖m张票,m小于等于n,每张票上有三个信息,票号 i,座位号 j,登机入口 k,登机入口指的是从机头进入或者是从机尾进入。 乘客登飞机规则: 1. 乘客按照机票的编号从小到大依次登机。 2. 乘客登飞机时,从票上指定的入口进入,径直走到自己的位置处,如果有人,就看下一个位置有没有人,直到找到第一个空座位,便入座,如果一直走到头都没有位置,该乘客就会暴

亂丟程式碼的天空 817

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

codeforces 301a Yaroslav and Sequence

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=79857#problem/A 大意:给出一个数n, 然后给出2*n-1的整数。 每次操作可以对其中n数乘以-1, 可以操作任意次, 求2*n-1个整数的最大和 分析:        两种情况:            (1):n为奇数, 我们每次操作就可以增加或减少一个负数

weishengmingerfendou的专栏 463

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[Codeforces856C][DP]Eleventh Birthday

翻译 对于每组数据,给出n个数字,求有多少种排列方式,使得排列后的n个数字首尾相接形成的数字能被11整除。答案对998244353取模 题解 把位数是奇数和是偶数的数分开考虑 如果有i个奇数的数 显然有floor(i2)floor(\frac{i}{2})floor(2i​)个数的贡献必须取负 偶数的数不管怎么插入奇数的数里面 奇数的数的贡献都不会改变 可以直接dp f[i][j][k]f[...

Rose_max的博客 307

【构造策略】-CF-301A-Yaroslav and sequence

题目链接:http://codeforces.com/problemset/problem/301/A 题目描述:给出2*n-1个数,每次可以把n个数变成其相反数,可以进行任意次操作,问最后能得到的最大和是多少? 解题思路: 假设这些数里有k个负数,我们应该尽量减少负数的个数,显然k%n=0的时候我们能全翻成正数。否则的话,我们应该想办法让负数更少,显然每次“沾边”偶数个进行翻转不会改变负数

邂逅黛玛姑娘 1255

【jzoj5237】【GDOI2018模拟8.7】【最长公共子序列 】【动态规划】

题目大意解题思路设f[i][j]表示a考虑前i个字符,b考虑前j个字符的lcs,g[i][j]表示长度为f[i][j]的匹配的个数。g[i][j]可以由g[i-1][j],g[i][j-1],g[i-1][j-1]中f相同的转移过来,但是如果f[i][j]==f[i-1][j]==f[i][j-1]==f[i-1][j-1],g[i][j]=g[i-1][j]+g[i][j-1]-g[i-1][j-

inklutcuah’s blog 479

Codeforces Round #301

http://codeforces.com/contest/540 A. Combination Lock n = input() s1 = raw_input() s2 = raw_input() ans=0 for i in range(n): tmp1 = abs((int)(s1[i])-(int)(s2[i])) ans += min(tmp1, 10-t

嗯。 418

试题 算法训练 Yaroslav and Algorithm

主要考察大数运算 #include <iostream> #include<vector> #include<string> #include<cstring> using namespace std; char numTable[] = { '0','1','2','3','4','5','6','7','8','9' }; const int m...

qq_43642136的博客 1907

蓝桥杯~算法训练 Yaroslav and Algorithm

试题 算法训练 Yaroslav and Algorithm 提交此题 资源限制 时间限制:100ms 内存限制:128.0MB 问题描述   (这道题的数据和SPJ已完工,尽情来虐吧!) Yaroslav喜欢算法。我们将描述一个他最喜欢的算法。 1.这个算法接受一个字符串作为输入。我们设这个输入字符串为a。   2.这个算法由一些命令组成。i号命令的形式为"s[i]>>w[i]“...

韩绘锦的博客 2564

codeforces #301 D

传送门在这里题意:有a、b、c三种人,其中a克b(a和b同时出现a存活b消失),b克c,c克a,初始时abc分别有x,y,z个,每次随机出两个人(可能相同种也可能不同),经过无限次之后求每种人最后存活的概率。思路:裸的概率dp。比较通俗的想法是设dp[i][j][k]表示剩余的人中有i个a,j个b,k个c的概率,并且初始时dp[x][y][z]=1,最后只要算出sum(dp[i][0][0])就是

学如逆水行舟千帆过 649

【jzoj4901】【矩阵】【动态规划】

题目大意给出矩阵中每行每列的和,还有矩阵的每项都是非负整数。求满足这样条件的矩阵总共有多少种。解题思路由于一行最多只有3个数,只有125行,设f[i][j][k]为到第i行,第一列填了j,第二列填了k的方案数,直接dp剪一下枝就可以了。code#include<cstdio> #include<algorithm> #define LL long long #define min(x,y) ((x<

inklutcuah’s blog 391

Codeforces 301D Yaroslav and Divisors 题解

题意简述 给你一个[1,n][1,n][1,n]的排列,长度为nnn,多次查询一段区间中有多少对数满足其中一个是另一个的倍数。nnn是1e51e51e5,复杂度大约是log2log^2log2的,当然如果您能想出一个带根号的算法,那我开心死了。私信3348064478@qq.com,或者评论。 思路框架 离线询问,然后用合理的遍历顺序加上一个完美的树状数组维护,nlognnlognnlogn过这个...

LightningUZ的博客 283

【CF】CodeForces 301A Yaroslav and Sequence

A. Yaroslav and Sequence time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Yaroslav has an array, consisting

Song 985
上一篇: [NOIP模拟10.10][线段树维护树的直径]联盟
下一篇: [Codeforces264E][线段树][DP]Roadside Trees
Rose_max
博客等级 码龄10年 97粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值