BJWC2008 秦騰與教學評估

2022-05-05 18:00:06 字數 1205 閱讀 8863

傳送門

這道題是一道二分答案題……我估計很難看出這是二分答案……

題目要求求出序列中老師為奇數的是哪乙個點。

這道題它十分神奇,我們往往都會糾結在如何存下這麼多的點,如何處理老師的站位。但是這些並不是解題的關鍵,我們要注意乙個重點,就是序列中最多只有乙個位置有奇數個老師,這樣的話,我們能知道,包含這個位置的點,它的老師的數的字首和必然是奇數。而不包含這個位置的點,字首和必然是偶數。

所以我們可以二分這個位置!!然後我們只要求出來前面有多少個老師即可。這個是可以o(n)判斷的,因為老師的站位是等差數列,可以直接o(1)計算出每個區間對於這段字首和貢獻了多少老師。

之後我們就做完了……這個題的思維真是想不到……

#include#include

#include

#include

#include

#include

#include

#define rep(i,a,n) for(int i = a;i <= n;i++)

#define per(i,n,a) for(int i = n;i >= a;i--)

#define enter putchar('\n')

using

namespace

std;

typedef

long

long

ll;const

int m = 200005

;const

int n = 1005

;const

int inf = 2147483647

;int

read()

while(ch >= '

0' && ch <= '9'

)

return ans *op;

}struct

sega[m];

intt,n,pos;

ll l,r;

intcalc(ll x)

//printf("#%d %d\n",x,cur);

return

cur;

}

bool check(int

x)int

main()

if(!pos) printf("

poor qin teng:(\n");

else

}return0;

}

BJWC2008 秦騰與教學評估

嘟嘟嘟 二分好題。怎麼二分呢?反正我是沒想出來。看了題解。因為只有乙個為奇數的點,所以對於乙個位置x,求出區間 0,x 的教總和,如果為奇數,說明x取大了 否則x取小了 妙啊 雖然答案在int內,但是l r可能會爆int,導致有幾個點tle了,所以還是都開long long 吧。1 include2...

AcWing 秦騰與教學評估

第一次在乙個oj上發了篇題解,沒想到他們沒有題解審核機制,直接就出現在題解區了.那裡的markdown在這裡無效,我調了一下再發到這裡儲存一下.二分 時間複雜度 o nlogn 藍書而來.本題重點在於滿足條件的位置只會不存在或者有且僅有乙個,而這個點有乙個特殊性質 人數是奇數.設想 在連續的一段位置...

bzoj1271 秦騰與教學評估

有n個檢查小組,在乙個 0 2 31 1 的區間中檢查,每個小組的分布情況我們這樣描述 s代表起點,e代表終點,d代表從起點開始每隔d個位置安排乙個人到終點結束。詢問整個區間中有沒有乙個位置為奇數個人。有輸出這個位置和位置上的人數,否則輸出 poor qin teng 很機智的方法,用字首和表示奇偶...