博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #424 E. Cards Sorting 线段树/数据结构瞎搞/模拟
阅读量:5051 次
发布时间:2019-06-12

本文共 2013 字,大约阅读时间需要 6 分钟。

第一眼感觉是个水题

过程确实也无脑,但是细节麻烦。。。

就是循环找最小值,删除,算步数而已

不过转移位置的计算我试了好几种方法,才写出一个对的。。

提交时一度抱着求求你让我过吧这种心态(

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define ll long long#define pb push_back#define FOR(a) for(int i=1;i<=a;i++)const int inf=0x3f3f3f3f;const int maxn=1e5+9; const int mod=1e9+7;int arr[maxn];int now;struct NODE{ int minn;int minid;int cnt;}ST[maxn<<2];void pushup(int rt){ ST[rt].cnt=ST[rt<<1].cnt+ST[rt<<1|1].cnt; ST[rt].minn=min(ST[rt<<1].minn,ST[rt<<1|1].minn); if(ST[rt<<1].minn<=ST[rt<<1|1].minn)ST[rt].minid=ST[rt<<1].minid; else ST[rt].minid=ST[rt<<1|1].minid;}void build(int l,int r,int rt){ if(l==r){ST[rt].minn=arr[l];ST[rt].minid=l;ST[rt].cnt=1;return;} int m=l+r>>1;build(l,m,rt<<1);build(m+1,r,rt<<1|1);pushup(rt);}void update(int a,int l,int r,int rt){ if(l==r){ST[rt].minn=inf;ST[rt].cnt=0;return;} int m=l+r>>1;if(a<=m)update(a,l,m,rt<<1);else update(a,m+1,r,rt<<1|1); pushup(rt);}int query(int a,int b,int l,int r,int rt){ if(a<=l&&b>=r)return ST[rt].cnt; int m=l+r>>1; int ret=0; if(a<=m)ret+=query(a,b,l,m,rt<<1); if(b>m)ret+=query(a,b,m+1,r,rt<<1|1); return ret;}int query2(int a,int b,int l,int r,int rt){ if(a<=l&&b>=r && ST[rt].minn==ST[1].minn)return ST[rt].minid; else if(a<=l && b>=r)return -1; int m=l+r>>1; int a1=-1,a2=-1; if(a<=m)a1=query2(a,b,l,m,rt<<1); if(b>m)a2=query2(a,b,m+1,r,rt<<1|1); if(a1==-1 && a2==-1)return -1; else if(a1!=-1)return a1; else return a2;}int main(){ int n;scanf("%d",&n); FOR(n)scanf("%d",&arr[i]); build(1,n,1); now=0;ll ans=0; for(int i=1;i<=n;i++){ //删n轮 //int nex=ST[1].minid; int nex=query2(now,n,1,n,1); //if(now==10)cout<<"www"<
<
now){ ans+=query(now,nex,1,n,1); now=nex; update(nex,1,n,1); }else{ ans+=query(now,n,1,n,1)+query(1,nex,1,n,1); now=nex; update(nex,1,n,1); } } printf("%lld\n",ans);}

转载于:https://www.cnblogs.com/Drenight/p/8611284.html

你可能感兴趣的文章
“富豪相亲大会”究竟迷失了什么?
查看>>
控制文件的备份与恢复
查看>>
返回代码hdu 2054 A==B?
查看>>
Flink独立集群1
查看>>
iOS 8 地图
查看>>
20165235 第八周课下补做
查看>>
[leetcode] 1. Two Sum
查看>>
iOS 日常工作之常用宏定义大全
查看>>
PHP的SQL注入技术实现以及预防措施
查看>>
MVC Razor
查看>>
软件目录结构规范
查看>>
Windbg调试Sql Server 进程
查看>>
linux调度器系列
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>