cf428c 模拟题
这题说的是给了 n个数然后又 k次 的交换任意位置的 数字的机会 计算最长的连续子序列的和
这要撸 模拟整个 过程 并不能就是算最长的递增序列 如果只是 找最长的 和序列的 话 会存在 很多问题 在替换的时候 每一个决策 都影响着 下一个决策 这样 存在谁与谁替换 这样的状态有 200!种 那就枚举每个区间这样就可以使得 我们所用替换方法得当 因为在替换中我们进行替换是对不同区间的 操作 比如 在替换序列之内的 数字的时候 其实操作的就是不同的区间 与外面的序列进行替换的时候 操作的 是不同的 区间 这样就可以 可以知道 每个区间都是有可能成为 最大区间的
#include <iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
struct inq{
int x;
inq(int a=){ x=a; }
bool operator <(const inq &A)const {
return x>A.x;
}
};
struct outq{
int x;
outq(int a=){ x=a; }
bool operator <(const outq &A)const{
return x<A.x;
}
};
priority_queue<inq>In;
priority_queue<outq>Out;
int d[],mav,GH,sum,k,n;
void jud(){
int num=k;
while(num){
bool falg=true;
int id=,od=,mi,mo;
if(In.size()!=){
id=; mi=In.top().x;
}
if(!Out.empty()){
od=; mo=Out.top().x;
}
if(id&&od&&mi<&&mo>){
falg=false;
sum+=mo-mi; In.pop(); Out.pop();
}
else if(id&&mi<){
falg=false;
sum+=-mi; In.pop();
}
else if(od&&mo>){
falg=false;
sum+=mo; Out.pop(); }else if(od&&id&&mo>mi){falg=false;
sum+=mo-mi; Out.pop(); In.pop();
}
--num;
if(falg) break;
}
mav=sum>mav?sum:mav;
}
int main()
{
mav=-;
scanf("%d%d",&n,&k);
for(int i=;i<n;++i)
scanf("%d",&d[i]);
for(int L=;L<=n;L++){
for(int S=;S+L<n;++S){
sum=;
for(int j=;j<n;j++)
if(j>=S&&j<=L+S) { sum+=d[j];In.push(d[j]); }
else Out.push(d[j]);
jud();
while(!In.empty()) In.pop();
while(!Out.empty()) Out.pop();
} }
printf("%d\n",mav);
return ;
}
cf428c 模拟题的更多相关文章
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
- CodeForces - 427B (模拟题)
Prison Transfer Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
- 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...
- UVALive 4222 Dance 模拟题
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
- cdoj 25 点球大战(penalty) 模拟题
点球大战(penalty) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/2 ...
- Educational Codeforces Round 2 A. Extract Numbers 模拟题
A. Extract Numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/600/pr ...
- URAL 2046 A - The First Day at School 模拟题
A - The First Day at SchoolTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...
随机推荐
- 搭建IPv4专有网络
搭建IPv4专有网络 版权归属:阿里云网站 本教程将指引您搭建一个具有IPv4地址块的专有网络,并为专有网络中的ECS实例绑定一个弹性公网IP(EIP)进行公网访问. 步骤一:创建专有网络和交换机 ...
- GDI+绘制半圆按钮
新建一个用户控件: public partial class UserControl1 : UserControl { public UserControl1() { InitializeCompon ...
- MFC学习单选框Radio使用
创建单选框Radio ,ID号IDC_RADIO_NAME 1.获取单选框内容 int RadioState = ((CButton *)GetDlgItem(IDC_RADIO_NAME))-> ...
- 提取ipa里面的资源图片
有时候发现个不错的UI,就想扒出来看看,ipa里的图片你知道的,都不能直接用,所以找到两个方法:一.用python转换1.将ipa文件后缀改为zip,然后解压缩.2.新建一个文件夹,将解压后的包里的p ...
- Mac下更新SVN
Mac下自带的SVN版本还是1.6的,而最新的Versions已经更新到支持1.7版本了,在Windows下面使用1.7版本久了所以也想更新下Mac版本. OK,废话不多说,简单描述操作步骤: 去Ap ...
- Html5游戏框架createJs组件--EaselJS(一)
现在html5小游戏越来越火爆了,由于公司业务的需要,也开发过几款微信小游戏,用canvas写的没有利用什么框架,发现性能一直不怎么好,所以楼主就只能硬着头皮去学习比较火的Adobe公司出的Creat ...
- iOS - 国际化语言切换
iOS国际化:如何切换语言 1.国际化就是将标签.提示信息等信息放到资源文件中,随着程序需要的语言提供对应的资源文件.以key/value对存储,每个资源的key值不变,value随着需求改变. ...
- thinkphp----替换写标签的方法
在用thinkphp写cmf的时候,考虑到一些方法的复用,所以考虑使用写标签. 写标签的好处在于:通用,而且比较容易看,但是封装一个标签,个人觉得还是比较麻烦,想了想 thinkcmf 调用文章的方式 ...
- zTree实现节点修改的实时刷新
一.应用场景 在实际应用中会遇到动态操作树各节点的需求,在增加树节点后如何实时动态刷新树就十分有必要了. 二.项目实践 比如要在test1234节点下新建子节点,首先要选中test1234节点,添 ...
- CodeForces - 586C Gennady the Dentist 模拟(数学建模的感觉)
http://codeforces.com/problemset/problem/586/C 题意:1~n个孩子排成一排看病.有这么一个模型:孩子听到前面的哭声自信心就会减弱:第i个孩子看病时会发出v ...