Codeforces Round #243 (Div. 1)——Sereja and Two Sequences
- 题意:给两个长度分别为n和m的序列,如今有两种操作:1.分别选择两个序列的一个非空前缀,切两个前缀的最后一位同样,删除之。得到1分(仅仅累计),消耗e;2.直接删除两个序列,消耗值定于两个序列之前删除的元素个数之和,并且使得得到的分有效(之前没有有效分)
(1 ≤ n, m ≤ 105; 1 ≤ s ≤ 3·105; 103 ≤ e ≤ 104),s代表总能量,e表示一次操作的消耗 - 分析:
首先,问题事实上就是转化成,进行若干次操作1。然后进行操作2
还要找到一个判别标准。来评判较优的状态(贪心)
每次的消耗值比較大,事实上能够计算出最大的删除次数,这个值不是非常大状态表示:
简单的,一个状态能够表示为串A的位置、串B的位置、删除的次数
可是两个串都比較长,假设用串A的位置、串B的位置来作为状态,删除次数作状态值。那么状态集合太大。所以仅仅能以一个串为主串DP,那么删除的次数就应该作为状态,在B的位置应该作为状态的值
操作(状态转移):
假如对于A的每个位置,都找到一个B中的位置(仅仅有一个选择,必定是找最靠前的)并删除,那么有些状态是遍历不到的,并且非常显然这样的方法是错误的。正确的想法应该是。对于A的每个元素。我们的操作是有两种的,删掉或者不删
判别标准:
每个状态仅仅有一个值,当前串B的位置,看看能否够推断。对于处理到A的同样位置,删除次数同样,那么在B的位置越小越好。能够作为判别标准
const int MAXN = 100001;
int ipta[MAXN], iptb[MAXN];
int dp[2][310];
vector<int> vt[MAXN];
int main()
{
// freopen("in.txt", "r", stdin);
int a, b, all, c, cnt;
while (~RIV(a, b, all, c))
{
int cur = 0;
CLR(dp, INF);
REP(i, MAXN) vt[i].clear();
cnt = (all + c - 1) / c;
FE(i, 1, a) RI(ipta[i]);
FE(i, 1, b)
{
RI(iptb[i]);
vt[iptb[i]].push_back(i);
}
int ans = 0;
FE(i, 1, a)
{
dp[cur][0] = 0;
cur ^= 1;
CLR(dp[cur], INF);
FE(j, 1, cnt)
{
int pre = dp[cur ^ 1][j - 1];
int p = upper_bound(all(vt[ipta[i]]), pre) - vt[ipta[i]].begin();
if (p == vt[ipta[i]].size()) p = INF;
else p = vt[ipta[i]][p];
dp[cur][j] = min(dp[cur ^ 1][j], p);
if (dp[cur ^ 1][j] > p && p + i + j * c <= all)
ans = max(ans, j);
}
}
WI(ans);
}
return 0;
}
Codeforces Round #243 (Div. 1)——Sereja and Two Sequences的更多相关文章
- Codeforces Round #243 (Div. 2)——Sereja and Swaps
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012476429/article/details/24665103 题目链接 题意: 给定一个整数 ...
- Codeforces Round #243 (Div. 2)——Sereja and Table
看这个问题之前,能够先看看这个论文<一类算法复合的方法>,说白了就是分类讨论,可是这个思想非常重要 题目链接 题意: 首先给出联通块的定义:对于相邻(上下和左右)的同样的数字视为一个联通块 ...
- Codeforces Round #243 (Div. 1)——Sereja and Squares
题目链接 题意: 给n个点,求能组成的正方形的个数. 四边均平行与坐标轴 大神的分析: 经典题 我们考虑每一种x坐标,显然仅仅有<= sqrt{N}个x坐标出现了> sqrt{N}次,我们 ...
- DP Codeforces Round #FF (Div. 1) A. DZY Loves Sequences
题目传送门 /* DP:先用l,r数组记录前缀后缀上升长度,最大值会在三种情况中产生: 1. a[i-1] + 1 < a[i+1],可以改a[i],那么值为l[i-1] + r[i+1] + ...
- Codeforces Round #243 (Div. 2) Problem B - Sereja and Mirroring 解读
http://codeforces.com/contest/426/problem/B 对称标题的意思大概是.应当指出的,当线数为奇数时,答案是线路本身的数 #include<iostream& ...
- Codeforces Round #243 (Div. 1)A. Sereja and Swaps 暴力
A. Sereja and Swaps time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #243 (Div. 2) C. Sereja and Swaps
由于n比较小,直接暴力解决 #include <iostream> #include <vector> #include <algorithm> #include ...
- Codeforces Round #243 (Div. 2) B. Sereja and Mirroring
#include <iostream> #include <vector> #include <algorithm> using namespace std; in ...
- Codeforces Round #243 (Div. 2) A. Sereja and Mugs
#include <iostream> #include <vector> #include <algorithm> #include <numeric> ...
随机推荐
- SecureCRT保持连接,不会过一段时间关闭Session
[Options]->[Global Options]->[General]->[Default Session]点击[Edit default settings]按钮,在[Term ...
- 性能调优培训 windbg --woodytu
http://www.cnblogs.com/woodytu/p/4675479.html http://www.cnblogs.com/fjicn/p/3405716.html http://www ...
- Debugging a SQL Server query with WinDbg
Debugging a SQL Server query with WinDbg May 13, 2014 · Klaus Aschenbrenner · 5 Comments (Be sure to ...
- Manifest值冲突解决方法
FBI Warning:欢迎转载,但请标明出处:http://blog.csdn.net/codezjx/article/details/38669939,未经本人同意请勿用于商业用途,感谢支持! 整 ...
- nodejs session 设计
会话管理 { //保存会话 _data : {}, /** 会话基本操作 ***/ //查找会话 getSession : function(id){}, //创建会话 createSession : ...
- Win7如何解决内存不能为Read的批处理命令
将下面文件保存为"解决内存不能为Read的批处理命令.cmd"双击运行即可 for %%1 in (%WinDir%\system32\*.dll) do regsvr32.e ...
- 怎样mac上安装apk到连接数据线的手机
高大上的mac俺也用了一段时间了.不知道大家有木有同一个烦恼.曾经在win上的时候仅仅要安装了应用宝之类的手机助手.就能够双击APK,直接安装到连接数据线的手机上,非常方便哈,可是mac上不行.近期找 ...
- EVB-P6UL:一识庐山真面目
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验与正确的图片链接显示,请访问我的博客原文: 在爱板网上看到这个活动,昨晚确认,今 ...
- 应用程序之TableView简单总结1
UITableView的代理方法 修改Cell的状态 UITableView常见方法 一.UITableView的代理方法 #pragma mark 每一行的高度 - (CGFloat)tableVi ...
- mapreduce_template
Hadoop Tutorial - YDN https://developer.yahoo.com/hadoop/tutorial/module4.html import java.io.IOExce ...