日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU-Yuna's confusion 树状数组 Or Multiset

發(fā)布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU-Yuna's confusion 树状数组 Or Multiset 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

比賽的時候竟然沒有想到這題可以用樹狀數(shù)組過,由于數(shù)字的區(qū)間比較小,所以直接開設(shè)一個樹狀數(shù)組,定義sum(i) 表示小于i的數(shù)的總數(shù)。那么判定一個數(shù)是否有的條件就是計算sum(i+1) == sum(i) 便可以了,查找第K大的數(shù),也就可以直接二分了。

代碼如下:

#include <cstdlib> #include <cstring> #include <cstdio> #include <algorithm> #define MAXN 100000 using namespace std;int c[MAXN+5];int lowbit(int x) {return x & -x; }void modify(int x, int val) {for (int i = x; i <= MAXN; i += lowbit(i)) {c[i] += val;} }int sum(int x) {int ret = 0;for (int i = x; i > 0; i -= lowbit(i)) {ret += c[i];}return ret; }int bsearch(int l, int r, int k) {int mid, ret = -1;while (l <= r) {mid = (l + r) >> 1;// printf("mid = %d, sum() = %d\n", mid, sum(mid));// getchar();if (sum(mid) >= k) {ret = mid;r = mid - 1; }else {l = mid + 1; }}return ret; }int main() {int M, x, y, ret;char op[5];while (scanf("%d", &M) == 1) {memset(c, 0, sizeof (c));for (int i = 1; i <= M; ++i) {scanf("%s", op);if (op[0] == 'A') {scanf("%d", &x);modify(x, 1); }else if (op[0] == 'D'){scanf("%d", &x);// printf("%d %d\n", sum(x), sum(x-1));if (sum(x) == sum(x-1)) {puts("No Elment!");}else {modify(x, -1);}}else { // query通過二分查找來對付 scanf("%d %d", &x, &y);y += sum(x);ret = bsearch(x+1, MAXN, y);if (ret == -1) {puts("Not Find!");}else {printf("%d\n", ret);}}} }return 0; }

還有一種做法,就是直接用STL中的multiset.

代碼如下:

#include<iostream> #include<algorithm> #include<set> using namespace std;multiset<int> s; multiset<int>::iterator it;int main(){int Q;while( ~scanf("%d",&Q)){s.clear();char ope[10];int x,k;for(int i = 1; i <= Q; i++){scanf("%s", ope);if( ope[0] == 'A' ){scanf("%d",&x);s.insert(x); }else if( ope[0] == 'D' ){scanf("%d",&x);int cnt = s.count(x);if( cnt == 0 ){puts("No Elment!");continue; }s.erase(x);for(int i = 1; i <= cnt-1; i++)s.insert(x); }else {scanf("%d%d",&x,&k);it = s.upper_bound(x);if( it == s.end() ){//|| (it+(k-1) >= s.end() ) ){puts("Not Find!");continue;} int i=1;for(; it != s.end() && i < k; i++, it++); if( it == s.end() ){puts("Not Find!");continue;}printf("%d\n", *(it) );}} } }

轉(zhuǎn)載于:https://www.cnblogs.com/Lyush/archive/2012/08/12/2635387.html

總結(jié)

以上是生活随笔為你收集整理的HDU-Yuna's confusion 树状数组 Or Multiset的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲AV成人无码网站天堂久久 | 福利影院av | 一区二区不卡免费视频 | 三级av网址| 亚洲爱爱爱| 久久久久久久福利 | 免费国偷自产拍精品视频 | 天天5g天天爽免费观看 | a级片国产 | 日韩精品福利在线 | 国产精品久久久久久三级 | china国模大尺度pics | 臭脚猛1s民工调教奴粗口视频 | 成人免费一区二区三区 | 中出一区二区 | h视频免费在线 | 少妇被躁爽到高潮 | 奇米一区 | 嫩草影院菊竹影院 | 亚洲一区二区三区免费 | 国产网红在线 | 男人的天堂影院 | 公交顶臀绿裙妇女配视频 | 波多野结衣简介 | 亚欧美日韩 | 亚洲色图视频在线 | 毛茸茸毛片 | 黄色三级网 | 欧美做受视频 | 天堂av2018| 日啪 | 国产激情视频在线 | 亚洲精品国产精品国自产网站 | 含羞草一区二区 | 中文字幕97 | 中文字幕国产在线观看 | 强行挺进皇后紧窄湿润小说 | 成年人看的免费视频 | 成人片片 | 美女视频黄a视频全免费观看 | 精品久久久久成人码免费动漫 | 97国产成人无码精品久久久 | 性久久久久久久久久久 | 不卡一二三 | 浪荡奴双性跪着伺候 | 亲嘴扒胸摸屁股激烈网站 | 手机av电影在线 | 日韩欧美一区二区三区在线 | 男人添女人囗交视频 | 亚洲国产精品成人午夜在线观看 | 黑人玩弄人妻一区二 | 国产精品成人午夜视频 | 亚洲欧美日韩国产一区二区 | 超碰超碰97 | www.rihan | 午夜生活片 | 久久中文网 | 成人免费在线 | 摸摸摸bbb毛毛毛片 午夜爽爽影院 | 欧洲性生活片 | 91黄色免费网站 | 中国国产黄色片 | 国产人成在线观看 | 黄色片a | 波多野结衣av片 | 五月婷婷久 | 日韩亚洲精品在线 | 天堂在线视频观看 | 欧美不卡一二三 | 久久久资源网 | 欧美人体视频一区二区三区 | 中国女人内谢69xxxx免费视频 | 国产精品av在线播放 | 久久国产福利 | 色网综合 | 欧洲亚洲综合 | 日韩高清免费观看 | 色婷婷精品久久二区二区密 | 久久久精品中文字幕麻豆发布 | 无码精品人妻一区二区三区湄公河 | 黄色片在线免费 | 国产精品中文字幕在线观看 | 免费精品在线 | 日韩无码精品一区二区三区 | 精品成人在线 | 另类一区二区 | 99国产精品99久久久久久粉嫩 | 日韩在线观看免费全 | 激情综合网五月激情 | 日韩夜夜高潮夜夜爽无码 | 亚洲天堂无吗 | 欧美xxxx免费虐 | 国产一区二区三区18 | 国产在线专区 | 天堂中文在线视频 | 中文字幕23页 | 精品盗摄一区二区三区 | 日本不卡一区二区三区 | 亚洲欧美日韩另类 |