zoukankan      html  css  js  c++  java
  • 第k小(东方化改题+等我研究一下代码)

    啊今天的题一道不会……

    所以只把标程代码放上来……

    当然如果有一天我研究明白了会给标程附上注释的……

    不要指望我自己写题解了(

    原题在这里↓

    (由于破pdf复制不出来所以纯手打的!知道吗!)

    题目描述

    给出一个长度为n的正整数数组A,有m次操作,操作有两种:修改和询问

    修改:修改A[i];

    询问:输出数组中第k小的正整数的值。

    输入输出格式

    输入格式

    第一行一个正整数n;

    第二行n个正整数,第i个数表示A[i]的值;

    第三行一个正整数m;

    接下来m行,首先读入一个整数op,

    op = 1表示修改,接下来读入两个正整数x,y表示把A[i]修改成y

    op = 2表示询问,接下来读入一个正整数k,然后输出第k小正整数的值

    输出格式

    包括若干行,每行一个正整数,表示每个询问的结果

    emmmmmm

    改题啊在这里(

    题目描述

    给出含有n个幻想乡少(da)女(ma)的年龄的数组A,有m次操作,操作有两种:修改和询问

    修改:修改第i个少女的年龄;

    询问:输出数组中第k小的年龄的值。

    输入输出格式

    输入格式

    第一行一个正整数n;

    第二行n个正整数,第i个数表示第i个少女的年龄;

    第三行一个正整数m;

    接下来m行,首先读入一个整数op,

    op = 1表示修改,接下来读入两个正整数x,y表示把第i个少女的年龄修改成y

    op = 2表示询问,接下来读入一个正整数k,然后输出第k小年龄的值

    输出格式

    包括若干行,每行一个正整数,表示每个询问的结果

    说明

    100%:A[i]∈(0,+∞sdfasdfdsgdasfdsgdsfkjhajkewhfkhkfhdkjhfkasjhfsdkfjs

    啊那个我也不知道最后怎么了说不定是紫m

    不等等我还没把标程题解放上来啊!

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #define N 500005
     5 using namespace std;
     6 int t[N*4],n,m,x,y,a[N],op;
     7 int query(int p,int k)
     8 {
     9     int l=1,r=500000,mid;
    10     while (l<r)
    11     {
    12     mid=(l+r)>>1;
    13     if (t[2*p]>=k) p=2*p,r=mid;
    14     else k-=t[2*p],p=2*p+1,l=mid+1;
    15     }
    16     return l;
    17 }
    18 void insert(int p,int x,int y)
    19 {
    20     int l=1,r=500000,mid;
    21     while (l<r)
    22     {
    23     mid=(l+r)>>1;
    24     t[p]+=y;
    25     if (x<=mid) p=2*p,r=mid;
    26     else p=2*p+1,l=mid+1;
    27     }
    28     t[p]+=y;
    29 }
    30 int main()
    31 {
    32     freopen("kth.in","r",stdin);
    33     freopen("kth.out","w",stdout);
    34     scanf("%d",&n);
    35     for (int i=1;i<=n;i++) scanf("%d",&a[i]),insert(1,a[i],1);
    36     scanf("%d",&m);
    37     while (m--)
    38     {
    39         scanf("%d",&op);
    40         if (op==2)
    41             scanf("%d",&x),printf("%d
    ",query(1,x));
    42         else scanf("%d%d",&x,&y),insert(1,a[x],-1),insert(1,a[x]=y,1);
    43     }
    44     return 0;
    45 }

    请不要管我 偷懒 因为我 还没吃饭

  • 相关阅读:
    html 中 #include file 的用法
    人人网FED CSS编码前端开发规范
    (转载)css垂直水平居中的整理
    CSS负边距自适应布局三例
    (转载)无缝滚动图片的js和jquery两种写法
    用css3实现鼠标移进去当前亮其他变灰
    应急响应
    扫描工具介绍
    入侵检测
    安全防护与加固
  • 原文地址:https://www.cnblogs.com/aristocrat/p/8465799.html
Copyright © 2011-2022 走看看