AcWing 314. 低买 (线性DP)打卡
2024-10-07 13:40:26
题目:https://www.acwing.com/problem/content/316/
题意:求一个最长单调递减子序列,然后并且求方案数,如果序列完全一样就不要了
思路:我们肯定时修改LIS,我们在求得当前结尾得最长长度后,我们遍历前面是否有和当前数相等得数,如果有就把他的长度清零,避免重复方案数,然后我们再用一个数组记录以当前结尾得方案数有多少个
#include<bits/stdc++.h>
#define maxn 100005
#define mod 1000000007
using namespace std;
typedef long long ll;
ll f[maxn],g[maxn],a[maxn],n;
int main(){
cin>>n;
for(int i=;i<=n;i++){
cin>>a[i];
}
g[]=;
for(int i=;i<=n;i++){
for(int j=;j<i;j++){
if(j==||a[i]<a[j])
f[i]=max(f[i],f[j]+);
}
for(int j=;j<i;j++){
if(a[j]==a[i]){
f[j]=;
}
}
for(int j=;j<i;j++){
if((!j||a[j]>a[i])&&f[i]==f[j]+){
g[i]+=g[j];
}
}
}
ll mx=;
for(int i=;i<=n;i++){
mx=max(mx,f[i]);
}
ll sum=;
for(int i=;i<=n;i++){
if(f[i]==mx){
sum+=g[i];
}
}
/*for(int i=1;i<=n;i++){
cout<<g[i]<<" ";
}
cout<<"\n";*/
cout<<mx<<" "<<sum;
}
最新文章
- sqlite 数据类型
- Visual Studio 2012 主题下的代码配色方案
- redis的实现过程
- js调试技巧 Firefox调试技巧汇总
- sql一些命令
- Java引用类型变量
- [安全]PHP能引起安全的函数
- 新概念英语(1-119)who call out to the thieves in the dark?
- [ZooKeeper] 1 基本概念
- Android Multimedia框架总结(三)MediaPlayer中创建到setDataSource过程
- Java正则表达式应用
- 修改xshell的默认字间距和行间距
- mysql在查询中常见问题汇总
- 10个HTML5美化版复选框和单选框
- ICS 组件 for lazarus 1.0.12
- 想涨工资吗?那就学习Scala,Golang或Python吧
- codeblocks编译pthread问题
- excel 怎么添加超链接
- oracle 3大范式 理解
- java基础-迭代器(Iterator)与增强for循环
热门文章
- FCKEditor添加字体
- poj3253Fence Repair (Huffman)
- ScoutSuite:一款针对云集群环境的安全审计工具
- React后台管理手动封装图片上传组件
- 2019 年「计算机科学与工程学院」新生赛 暨ACM集训队选拔赛 # 1
- spring-第十三篇之零配置支持
- 重温位运算、原码、反码、补码、以及>;>;和<;<;<;区别
- mintUI修改toast样式的问题解决办法
- gulp run 报错 gulp[3192]: src\node_contextify.cc:628: Assertion `args[1]->;IsString()&#39; failed.
- php开启xdebug扩展及xdebug通信原理