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 ...
随机推荐
- 教你如何将word中的表格完美粘贴到ppt中
经常操作办公软件的人一定有一个困惑,ppt本身表格编辑能力似乎很弱,如果从word里直接将一个编辑好的表格复制粘贴到ppt中,整个表格一定会发生让你没有预料的变化,还得重新花老大的劲去重新编辑,有人屛 ...
- 【CF903G】Yet Another Maxflow Problem 线段树
[CF903G]Yet Another Maxflow Problem 题意:一张图分为两部分,左边有n个点A,右边有m个点B,所有Ai->Ai+1有边,所有Bi->Bi+1有边,某些Ai ...
- [C#/Java] C#中调用Servlet示例
需求 通用消息接口使用servlet作为服务器端服务接口,第三方应用程序通过http post的方式调用servlet,实现与通用消息接口的调用连接. 参数说明如下: msgTitle:消息标题,描述 ...
- Fiddler 教程(转载,鉴于原作者关闭了访问fiddler系列文章)
阅读目录 Fiddler的基本介绍 Fiddler的工作原理 同类的其它工具 Fiddler如何捕获Firefox的会话 Fiddler如何捕获HTTPS会话 Fiddler的基本界面 Fiddler ...
- python的十进制与任意进制的转换
将任意进制转换成十进制 ", 8)) # 表示把8进制的54转换成十进制数并输出结果. # 8可以是2.8,10,16等进制数 将十进制转换成任意进制 def f(n,x): #n为待转换的 ...
- 51nod 1432 - 独木舟 - [贪心]
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1432 基准时间限制:1 秒 空间限制:131072 KB ...
- Spring的AOP编程
1.手动实现AOP编程(代理模式) AOP是面向切面的编程,主要功能就是实现"业务代码"和辅助业务代码的"关注点代码"分离.在一个方法中,出了核心的业务代码,其 ...
- HFTP Guide
Introduction(说明) HFTP is a Hadoop filesystem implementation that lets you read data from a remote Ha ...
- UNSIGNED command-line client
High Performance MySQL, Third Edition by Baron Schwartz, Peter Zaitsev, and Vadim Tkachenko There ...
- js之操作cookie
js通过document.cookie获取所有的cookie信息, cookie在存储的格式是键值对,key=value每个键值对之间用; (分号和空格隔开). 添加cookie和修改cookie的值 ...