180E - Cubes DP 优先队列
来源:互联网 发布:渐飞财报数据 编辑:程序博客网 时间:2024/05/18 01:30
题意:最多去掉序列中的k个数字,使序列中有尽可能长的一部分,其中的数字都相同,求这种序列的最大长度。
做法:优先队列,发现所有情况都要记录下来的,而且第一个元素还有着重考虑一下WA翻...
#include <iostream>#include <deque>#include <cstdio>#include <algorithm>const int LMT=100005;using namespace std;deque<int>q[LMT];int a[LMT<<1],l[LMT],pro[LMT],d[LMT],pre[LMT];int main(){ int n,m,k,ans=0; cin>>n>>m>>k; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); q[a[i]].push_back(i); } for(int i=1;i<=n;i++)l[a[i]]=1; for(int i=1;i<=n;i++) { if(pro[a[i]]&&i<=pre[a[i]])//多了个分号,受不鸟... d[a[i]]-=i-pro[a[i]]-1; pro[a[i]]=i; if(!q[a[i]].empty()&&q[a[i]].front()==i) { q[a[i]].pop_front(); pre[a[i]]=i; l[a[i]]=1; } while(!q[a[i]].empty()) { if(d[a[i]]+q[a[i]].front()-pre[a[i]]-1>k) break; d[a[i]]+=q[a[i]].front()-pre[a[i]]-1; pre[a[i]]=q[a[i]].front(); q[a[i]].pop_front(); l[a[i]]++; } ans=max(l[a[i]],ans); l[a[i]]--; } cout<<ans<<endl; return 0;}
- 180E - Cubes DP 优先队列
- codeforces 731E (优先队列 DP)
- E. Cubes codeforce 180/E
- Anya and Cubes - CodeForces 525 E dp
- Codeforces Round #116 E-Cubes 180E
- codeforces 525E E. Anya and Cubes( dp+折中搜索)
- 507E (Dijkstra+优先队列)
- java 优先队列 PriorityQueue<E>
- Codeforces 767E 优先队列
- CodeForces Round #116 (180E) - Cubes
- la4327 优先队列优化dp
- codeforces 507E (dijkstra+优先队列)
- CodeForces 732E - Sockets(优先队列)
- codeforces 603E(LCT+优先队列)
- CodeForces 825E Educational #25 E:拓扑排序+优先队列
- CodeForces 180E Cubes--后续指针--当前个数
- CodeForces 180E Cubes(vector+尺取)
- codeforces 180E Cubes 双指针经典题
- DOS命令批量修改文件后缀名
- 对ACM的态度
- PHPUnit require_once()报错问题
- Windows Azure中文培训材料下载
- Machine Learning---LMS 算法
- 180E - Cubes DP 优先队列
- Android--DatePickerDialog日期控件
- BIT 1063 食物链
- Java冒泡排序
- 希腊字母的正确读音
- 中国一般高校本科IT类专业教育应全盘反思
- sed命令详解
- MFC 不要让Cdialog子窗体位于最前,取消子窗体位于父窗体前面,取消非模态对话框最前面
- 数据挖掘中的十大问题