传送门

文章目录

  • 题意:
  • 思路:

题意:

给你nnn个人,一开始位置分别为1,2,...,n1,2,...,n1,2,...,n,让后mmm个操作,每次都将某个人移动到最前面,其他人依次顺延,求每个人能到的最小位置和最大位置。

思路:

可以发现一个人iii的最小的位置要么是111,要么是iii,所以直接判断就好啦。
一个显然的事情就是一个人前面有几个人,排名就是几个人+1+1+1。我们只需要实现一下这个就好啦。将每个人的位置都+m+m+m,让后让tot=mtot=mtot=m,当将一个人移动到前面的时候,就把它移动到tottottot的位置,让后tot−1tot-1tot−1,每次都求一下前缀和即可。单点修改,前缀查询,显然树状数组就可以胜任啦。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
#define lowbit(x) ((x)&(-x))
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m,tot;
int a[N],tr[N];
int ans1[N],ans2[N],pos[N];void add(int x,int c)
{for(int i=x;i<N;i+=lowbit(i)) tr[i]+=c;
}int sum(int x)
{int ans=0;for(int i=x;i;i-=lowbit(i)) ans+=tr[i];return ans;
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d%d",&n,&m);for(int i=1;i<=m;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++) ans1[i]=ans2[i]=i,pos[i]=i+m,add(i+m,1);tot=m;for(int i=1;i<=m;i++){int id=a[i]; ans1[id]=1;ans2[id]=max(ans2[id],sum(pos[id]));add(pos[id],-1);pos[id]=tot--;add(pos[id],1);}for(int i=1;i<=n;i++) ans2[i]=max(ans2[i],sum(pos[i]));for(int i=1;i<=n;i++) printf("%d %d\n",ans1[i],ans2[i]);return 0;
}
/**/

Educational Codeforces Round 80 (Rated for Div. 2) E. Messenger Simulator 思维 + 树状数组相关推荐

  1. Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

    传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...

  2. Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest 思维 + 差分

    传送门 文章目录 题意: 思路: 题意: 给你三个长度分别为k1,k2,k3k1,k2,k3k1,k2,k3的数组a,b,ca,b,ca,b,c,其中k1+k2+k3=nk1+k2+k3=nk1+k2 ...

  3. Educational Codeforces Round 80 (Rated for Div. 2)SZU cf集训round2 C~E(dp,状压+二分,树状数组+逆向思维)

    C. Two Arrays 题目大意:就是给定两个整数n和m.计算数组对的数量(a,b),使得: 1 .两个阵列的长度都等于m: 2 .每个数组的每个元素都是1到n(包括1和n)之间的整数: 从1到m ...

  4. Educational Codeforces Round 80 (Rated for Div. 2) 二分 + 状压

    传送门 文章目录 题意: 思路: 题意: 给你nnn个长度为mmm的数组,选出两个来,让他们每一位取maxmaxmax构成新数组bbb,让后最大化bbb的最小值. 思路: 看到m=8m=8m=8,也就 ...

  5. Educational Codeforces Round 80 (Rated for Div. 2) C. Two Arrays 组合数|dp

    传送门 文章目录 题意: 思路: 题意: 给你n,mn,mn,m,让你构造两个数组a,ba,ba,b满足:1<=ai,bi<=n1<=a_i,b_i<=n1<=ai​,b ...

  6. Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp

    传送门 文章目录 题意: 思路: 题意: 给你一个打乱的排列,每个位置都各有一个价值,让你选择一个分界点,分成p1,p2,...,prp_1,p_2,...,p_rp1​,p2​,...,pr​和pr ...

  7. Educational Codeforces Round 101 (Rated for Div. 2) D. Ceil Divisions 思维 + 根号数

    传送门 题意: 给一个数组ai=ia_i=iai​=i,每次可以进行操作ax=⌈axay⌉a_x=\left \lceil \frac{a_x}{a_y} \right \rceilax​=⌈ay​a ...

  8. Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water (思维,数学)

    题目链接 题意: 给你一杯热水和一杯冷水,问你最少用几杯水,使得混合后的温度与给定的t温度最相近. (这里至少要用一杯水,并且,交替使用,比如:第一杯只能用热水,第二杯只能用冷水,第三杯只能用热水依次 ...

  9. Educational Codeforces Round 113 (Rated for Div. 2) D. Inconvenient Pairs 思维

    题目大意 给你n条竖直线 m条水平线 k个点 这些点一定在刚才给出的线上 问你有多少个点对 满足之间的距离大于 曼哈顿距离 题目思路 当点在竖直线和水平线的交汇处时 这个点与其他任何点的距离一定等于曼 ...

最新文章

  1. C语言的集成开发环境
  2. JDBC 学习(一)
  3. 利用js对页面数据进行排序
  4. Java:按值传递还是按引用传递详细解说
  5. WSDL2Java操作指南
  6. cbv继承view是哪个包_包你一眼就心动!两款帅爆国产轿车来袭,选谁都不错
  7. Windows使用tensorboard的一点小心得
  8. 北大青鸟学java是用什么课程_来自北大青鸟参加过JAVA课程的学长建议
  9. 红米Note8手机图纸-电路原理图+主板元件位号图
  10. 灵敏度和特异度计算方法
  11. Gmail企业邮箱让中小企业免费拥有企业邮箱
  12. 可能是讲分布式系统最到位的一篇文章
  13. 【做小游戏在Godot中遇到的问题第一篇】
  14. android测试类--Method setUp in android.test.AndroidTestCase not mocked
  15. ipad服务器的显示器,Air Display怎么用 iPad怎么分屏显示 值得收藏
  16. CSS3健身男孩平板卧推js特效
  17. 计算机硬件培训ttp,通信新技术优秀教学平台(TTP).doc
  18. iOS - navigationController简单使用
  19. 创建Vue项目的两种方法(镜像和官网)
  20. hdmi转双mipi转接_视频转换 HDMI 转 MIPI ADV7480

热门文章

  1. CLion 中使用 C++ 版本的 OpenCV
  2. php如何避免时间重复,如何避免/停止php和html的重复插入?
  3. 高空真人特技表演的这些冷知识,你都知道吗?
  4. 面对焦虑,我们能做什么?
  5. 河流为什么是弯曲的?
  6. 数理思维这样培养才有效,从小就赢在方法上,每本不足3元!!
  7. 《SAS编程与数据挖掘商业案例》学习笔记之三
  8. mysql select 反选_JQuery实现全选、全不选和反选功能
  9. php pdo 查询语句,PDO:预处理语句(参数化查询)
  10. php防止快速刷新代码(分享)_php防止网站被刷新的方法汇总