The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored E.Sequence in the Pocket(思维题)
题意:
给出一个序列,你可以将任意一个数移到最前面;
求最少需要移动多少次,可以是此序列变成非递减序列;
思路:
定义 (ai,aj) 为逆序对 ( i < j , ai > aj ), 求出 aj 的最大值,用变量 curMax 存储;
遍历一遍数组,求解 ans;
对于∀ i ∈[1,n]
①如果 ai < curMax , ans++;
②如果 ai == curMax , 那么需要特殊判断:
(2.1)如果 ai 之前不曾出现比 curMax 大的数,不需要移动;
(2.2)反之,ans++;
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+; int n;
int a[maxn];
int preMax[maxn];///preMax[i]:[1,i]的最大值 int Solve()
{
int curMax=;
for(int i=n;i >= ;--i)
if(a[i] < preMax[i-])///找逆序对(x,y)的最大的y
curMax=max(curMax,a[i]);
int ans=;
bool flag=false;
for(int i=;i <= n;++i)
{
if(a[i] > curMax)///判断[1,i]有无比curMax大的数出现
flag=true;
if(a[i] < curMax)///情况①
ans++;
if(flag && a[i] == curMax)///情况2.2
ans++;
}
return ans;
}
int main()
{
int test;
while(~scanf("%d",&test))
{
while(test--)
{
scanf("%d",&n);
preMax[]=;
for(int i=;i <= n;++i)
{
scanf("%d",a+i);
preMax[i]=max(preMax[i-],a[i]);
}
printf("%d\n",Solve());
}
}
return ;
}
求逆序对(x,y)中最大的y 需要树状数组求么????
答案是否定的,直接遍历一遍,记录一下前i个数得最大值就好了;
but,比赛的时候,用的是树状数组求最大的y;
按理说,树状数组求逆序对是树状数组最基本的操作(quq,逃);
代码写搓可还行(debug俩小时,然鹅,还没该对,以至于我都开始怀疑数据了);
经过这次debug,这辈子都不会写搓树状数组求逆序对得代码了;
学弟思路(tql):
遍历一遍数组 a ,判断最多有多少个连续得最大值,假设有 x 个,输出 n-x;
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+; int n;
int a[maxn];
int b[maxn]; int Solve()
{
memcpy(b+,a+,sizeof(int)*n);
sort(b+,b+n+);
int ans=n;
for(int i=n;i >= ;--i)
if(b[ans] == a[i])///判断最多的连续的最大值
ans--;
return ans;
}
int main()
{
int test;
while(~scanf("%d",&test))
{
while(test--)
{
scanf("%d",&n);
for(int i=;i <= n;++i)
scanf("%d",a+i);
printf("%d\n",Solve());
}
}
return ;
}
The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored E.Sequence in the Pocket(思维题)的更多相关文章
- The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored(E F G H I)
http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=392 E:Sequence in the Pocket 思路:从 ...
- The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple (Mirror)
B题 思路 因为 \[ x=\sum\limits_{k=1}^{n}ka_k\\ y=\sum\limits_{k=1}^{n}ka_{k}^{2} \] 我们设交换前和交换后的这两个等式的值设为\ ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - L Doki Doki Literature Club
Doki Doki Literature Club Time Limit: 1 Second Memory Limit: 65536 KB Doki Doki Literature Club ...
- 2018浙江省赛(ACM) The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple
我是铁牌选手 这次比赛非常得爆炸,可以说体验极差,是这辈子自己最脑残的事情之一. 天时,地利,人和一样没有,而且自己早早地就想好了甩锅的套路. 按理说不开K就不会这么惨了啊,而且自己也是毒,不知道段错 ...
- The 16th Zhejiang provincial collegiate programming contest
今天我挺有状态的,看过的题基本都给了正解(可能是昨晚cf div3打得跟屎一样,人品守恒,不好意思发题解了),自己也给队伍签了很多水题(不敢让队友写,怕出锅). 最后6题滚了,有点可惜.还差B和K没做 ...
- The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - F 贪心+二分
Heap Partition Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge A sequence S = { ...
- The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - C 暴力 STL
What Kind of Friends Are You? Time Limit: 1 Second Memory Limit: 65536 KB Japari Park is a larg ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - M Lucky 7
Lucky 7 Time Limit: 1 Second Memory Limit: 65536 KB BaoBao has just found a positive integer se ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - J CONTINUE...?
CONTINUE...? Time Limit: 1 Second Memory Limit: 65536 KB Special Judge DreamGrid has clas ...
随机推荐
- Vue开发插件
(一)Vue.js的插件应该有一个公开方法:install. 这个方法的第一个参数是Vue构造器,第二个参数是一个可选的选项对象,一般是如下操作: MyPlugin.install = functio ...
- U813.0操作员功能权限和数据权限的设置
操作员的权限有功能权限.数据权限.金额权限. 1. 给操作员设置功能权限,操作员才能进入系统进行相关业务操作. Admin用户登录无法修改账套,但可以新建.引入.输出.Demo用户每次只能进入一个账套 ...
- arcgis api 3.x for js 入门开发系列十八风向流动图(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- 生鲜配送管理系统_升鲜宝 V2.0 小程序辅助系统工具矩阵系列相关说明
随着微信红利的进一步释放,使用人群的不断增加,小程序从2017年01月第一批开发者出现后,2018年小程序得到快速的提升,小程序开发的相关应用小工具得到了市场的青咪,社会化大分工.协同.共享.协作的思 ...
- UE3中Object和Actor的创建与销毁
创建Object ① 在uc脚本中使用new运算符来创建 /********************************************************************** ...
- Websocket-Sharp获取客户端IP地址和端口号
//OnOpen事件 protected override void OnOpen() { string IPAddress = base.Sessions.Sessions.First().Cont ...
- 教你一招 | 用Python实现简易可拓展的规则引擎
做这个规则引擎的初衷是用来实现一个可序列号为json,容易拓展的条件执行引擎,用在类似工作流的场景中,最终实现的效果希望是这样的: 简单整理下需求 执行结果最终返回=true= or false 支持 ...
- python-重载
重载概念 重载是对继承的父类方法进行重新定义.重载可以重新定义方法还可以重新定义运算符.因为通过继承的类不一定能满足当前类的需求.在当前类中只需要修改部分内容而达到自己的需求. 重载特点 减少代码量和 ...
- ClickOnce一项Winform部署
先建一个Winform 控制台程序 建好后从工具箱里拖出来个 文本框 在属性中把TEXT改了 鼠标放到项目上点击右键——>属性 如下图所示,有两个发布位置. 发布位置可以选择本地文件夹,也可以选 ...
- mysql(mariadb)主从配置
环境: 内核版本:uname -r 系统版本:cat /etc/redhat-release