bzoj 2083 (二分查詢)

2021-07-10 11:06:02 字數 1532 閱讀 8590

time limit: 10 sec  

memory limit: 259 mb

submit: 352  

solved: 157 [

submit][

status][

discuss]

霸中智力測試機構的一項工作就是按照一定的規則刪除乙個序列的數字,得到乙個確定的數列。lyx很渴望成為霸中智力測試機構的主管,但是他在這個工作上做的並不好,俗話說熟能生巧,他打算做很多練習,所以他希望你寫乙個程式來快速判斷他的答案是否正確。

第一行為乙個整數m(1<=m<=1000000)第二行包括m個用空格分開的整數ai(1<=ai<=1000000),組成了最初的序列,第三行為乙個整數n(1<=n<=1000000),表示n個lyx經過一系列刪除得到的序列,每個序列兩行,第一行給出長度l(1<=l<=m),然後下一行為l個由空格分開的整數bi(1<=bi<=1000000)。

共n行,如果lyx的序列確實是由最初的序列刪除一些數得到,就輸出tak,否則輸出nie。

71 5 4 5 7 8 645

1 5 5 8 6

32 2 2

35 7 8

41 5 7 4

taknie

taknie

解題思路:先對原數列進行排序,然後開始處理,對於每個數,

記入他前面乙個數所對應的數在s中的位置,於是當前這個數要在s中找與自己相同且位置在前乙個後的數,

二分查詢。

#include

#include

#include

#include

using namespace std;

struct ss

a[1100001];

int n,lg,rg,og;

int g[1100001];

inline int read()

while (y>='0' && y<='9')

return x*f;

}bool cmp(ss x,ss y)

l=lg+1; r=n;

while (lint ug=l; int uh=r;

int mid=(l+r)/2;

if (a[mid].zhi==x) l=mid+1;else r=mid;

if (ug==l && uh==r) break;

}if (a[l].zhi==x)++l;

rg=l-1; return true;

}bool find(int x)

og=a[r].dui;

return true;

}int main()

sort(a+1,a+n+1,cmp);

int m=read();

for (int i=1;i<=m;++i)

int opp=g[j-1];

if(!find(opp))

g[j]=og;

}if (mg==true) 

else}}

BZOJ 2083 vector的巧用 二分

time limit 10 sec memory limit 259 mb submit 469 solved 227 submit status discuss 霸中智力測試機構的一項工作就是按照一定的規則刪除乙個序列的數字,得到乙個確定的數列。lyx很渴望成為霸中智力測試機構的主管,但是他在這個...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...