dp 优化 F2. Pictures with Kittens (hard version)
dp的优化可能是自己的弱项吧
F1中n*n*n的复杂度强行过去了
F2就无能为力了;
状态转移
dp[ i ] [ j ] 第一个i存的是位置 1-n; j是放入数字的个数 然后F1就暴力过去了
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=+;
int dp[maxn][maxn];
int a[maxn];
int32_t main()
{
int n,k,x; cin>>n>>k>>x;
for(int i=;i<=n;i++) cin>>a[i];
dp[][]=;
for(int i=;i<=n;i++)
{
//cout<<" "<<i<<endl;
//cout<<" "<<i-k+1<<endl;
for(int j=i-k;j<i;j++)
{
if(j<) continue;
for(int q=(i-)/k;q<x;q++)
{
if(dp[j][q]||i<=k) dp[i][q+]=max(dp[i][q+],dp[j][q]+a[i]);
}
} }
int maxn=;
for(int i=n;i>=n-k+;i--)
{
maxn=max(dp[i][x],maxn);
}
if(maxn) cout<<maxn<<endl;
else cout<<-<<endl;
}
暴力的F1
然后F2 gg了
看了别人的代码 大致有几种写法
双端队列优化 deque<pair<int,int> > de[maxn];
写的不难懂点 de[ ] [ ] [ ] 大致就是这样存的 de[ ] 这个表示的是 存的数字个数 第二个括号存的是 第i个位置j个数的最大值; 第三个括号存的是 位置
第i个位置是由 前[ i-k,i-1 ]位置的地方转移过来的;
从 de[j] 到 de[j+1] 必须确定 de[j+1] 已经转移了 所以第二层转移就是 j=x-1; j>=0;j--;
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5e3+;
int a[maxn];
deque<pair<int,int> > de[maxn];
int32_t main()
{
//priority_queue(int,vector<int>,greater<int>) qu;
int n,k,x; cin>>n>>k>>x;
for(int i=;i<=n;i++) cin>>a[i];
int ans=-;
de[].push_back({,}) ; // first cun zhi second pos;
for(int i=;i<=n;i++)
{
for(int j=x-;j>=;j--)
{
while(!de[j].empty() && de[j].front().second<i-k ) de[j].pop_front(); // i-k
if(de[j].empty()) continue;
int val=de[j].front().first+a[i]; // jia shang zhe ge shu
while(!de[j+].empty() && de[j+].back().first <=val ) de[j+].pop_back();
de[j+].push_back({val,i}); // di i ge wei zhi j+1 ge shu he zui da
if(j+==x&&i+k>n)
{
ans=max(val,ans);
}
}
}
cout<<ans<<endl; }
看的懂的代码
dp 优化 F2. Pictures with Kittens (hard version)的更多相关文章
- Codeforces 1077 F2 - Pictures with Kittens (hard version)
F2 - Pictures with Kittens (hard version) 思路: 单调队列优化dp 代码: #pragma GCC optimize(2) #pragma GCC optim ...
- Codeforces 1077F2 Pictures with Kittens (hard version)(DP+单调队列优化)
题目链接:Pictures with Kittens (hard version) 题意:给定n长度的数字序列ai,求从中选出x个满足任意k长度区间都至少有一个被选到的最大和. 题解:数据量5000, ...
- Codeforces 1077F1 Pictures with Kittens (easy version)(DP)
题目链接:Pictures with Kittens (easy version) 题意:给定n长度的数字序列ai,求从中选出x个满足任意k长度区间都至少有一个被选到的最大和. 题解:$dp[i][j ...
- Codeforces Round #521 (Div. 3) F1. Pictures with Kittens (easy version)
F1. Pictures with Kittens (easy version) 题目链接:https://codeforces.com/contest/1077/problem/F1 题意: 给出n ...
- NOIP2015 子串 (DP+优化)
子串 (substring.cpp/c/pas) [问题描述] 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个 互不重 叠 的非空子串,然后把这 k 个子串按照其在字 ...
- LCIS tyvj1071 DP优化
思路: f[i][j]表示n1串第i个与n2串第j个且以j结尾的LCIS长度. 很好想的一个DP. 然后难点是优化.这道题也算是用到了DP优化的一个经典类型吧. 可以这样说,这类DP优化的起因是发现重 ...
- 取数字(dp优化)
取数字(dp优化) 给定n个整数\(a_i\),你需要从中选取若干个数,使得它们的和是m的倍数.问有多少种方案.有多个询问,每次询问一个的m对应的答案. \(1\le n\le 200000,1\le ...
- dp优化1——sgq(单调队列)
该文是对dp的提高(并非是dp入门,dp入门者请先参考其他文章) 有时候dp的复杂度也有点大...会被卡. 这几次blog大多数会讲dp优化. 回归noip2017PJT4.(题目可以自己去百度).就 ...
- loj6171/bzoj4899 记忆的轮廊(期望dp+优化)
题目: https://loj.ac/problem/6171 分析: 设dp[i][j]表示从第i个点出发(正确节点),还可以有j个存档点(在i点使用一个存档机会),走到终点n的期望步数 那么 a[ ...
随机推荐
- Unity3D在C#编程中的一些命名空间的引用及说明
System包含用于定义常用值和引用数据类型.事件和事件处理程序.接口.属性和处理异常的基础类和基类.其他类提供支持下列操作的服务:数据类型转换,方法参数操作,数学计算,远程和本地程序调用,应用程序环 ...
- Springboot+MyBatis+mysql+jsp页面跳转详细示例
SpringBoot与MyBatis搭建环境,底层数据库为mysql,页面使用JSP(官网上不推荐使用jsp),完成从数据库中查询出数据,在jsp页面中显示,并且实现页面的跳转功能. 项 ...
- linux系统中不同颜色的文件夹及根目录介绍
文件颜色的代表含义: 蓝色:目录 绿色:可执行文件 红色:压缩文件 蓝绿色:链接文件 灰色:其他文件 黄色:设备文件,其中包括block,char,fifo. 白色:表示普通文件 红色闪烁:表示链 ...
- dos命令:文件操作
文件操作 一.assoc命令 1.介绍 显示或修改文件扩展名关联 2.语法 ASSOC [.ext[=[fileType]]] .ext 指定跟文件类型关联的文件扩展名 fileType 指定 ...
- REST easy with kbmMW #17 – Database 6 – Existing databases
kbmMW已经包含了非常精细的功能来确定和解释数据库中表的元数据. 在下一版本中,这个功能将得到进一步加强,可以导入现有数据库中的表,自动创建与表相匹配的ORM实体类. 这意味着你能够使用kbmMW的 ...
- 再谈kbmMW垃圾回收
很早就写了关于kbmMW Server如何实现的垃圾回收,但最近一段时间还是为此遇到问题,实现的Server不能稳定运行,发生问题后不响应客户端的查询请求,在客户端得到服务端返回地址错误信息,只能重启 ...
- Day15作业及默写
1.整理今天内容 PASS 2.现有列表alist = [3,1,-4,2,-6] 按照元素的绝对值大小进行排序 alist = [3,1,-4,2,-6] sorted(alist,key=lamb ...
- 2019-03-11-day009-函数定义
什么是函数 函数就是将许多冗余的代码进行整合统一调用的内存地址 函数怎么定义 def make(): print('掏出手机') print('打开微信') print('摇一摇') print('聊 ...
- Diamorphine rootkit的使用
仅作LKM rootkit研究之用,滥用后果自负. 查看支持版本是否为2.6.x/3.x/4.x: uname -r 下载代码: git clone https://github.com/m0nad/ ...
- scp 脚本
#!/bin/bash ty=$ local_dir=$ remote_ip=$ remote_dir=$ showUsage() { echo -e "\033[31m ty local_ ...