題目鏈結
【題意】
達達學習數學競賽的時候受盡了同仁們的鄙視,終於有一天......受盡屈辱的達達黑化成為了黑暗英雄怪獸達達。
就如同中二漫畫的情節一樣,怪獸達達打算毀掉這個世界。
數學競賽界的精英 lqr 打算阻止怪獸達達的陰謀,於是她集合了一支由數學競賽選手組成的超級行動隊。
由於隊員們個個都智商超群,很快,行動隊便來到了怪獸達達的黑暗城堡的下方。
但是,同樣強大的怪獸達達在城堡周圍布置了一條「不可越過」的堅固防線。
防線由很多防具組成,這些防具分成了 n 組。
我們可以認為防線是一維的,那麼每一組防具都分布在防線的某一段上,並且同一組防具是等距離排列的。
也就是說,我們可以用三個整數 s, e 和 d 來描述一組防具,即這一組防具布置在防線的 s,s + d,s + 2d,…,s + kd(k∈ z,s + kd≤e,s + (k + 1)d>e)位置上。
黑化的怪獸達達設計的防線極其精良。如果防線的某個位置有偶數個防具,那麼這個位置就是毫無破綻的(包括這個位置乙個防具也沒有的情況,因為 0 也是偶數)。
只有有奇數個防具的位置有破綻,但是整條防線上也最多只有乙個位置有奇數個防具。
作為行動隊的隊長,lqr 要找到防線的破綻以策劃下一步的行動。
但是,由於防具的數量太多,她實在是不能看出**有破綻。作為 lqr 可以信任的學弟學妹們,你們要幫助她解決這個問題。
【輸入格式】
輸入檔案的第一行是乙個整數 t,表示有 t 組互相獨立的測試資料。
每組資料的第一行是乙個整數 n。
之後 n 行,每行三個整數 si,ei,di,代表第 i 組防具的三個引數,資料用空格隔開。
【輸出格式】
對於每組測試資料,如果防線沒有破綻,即所有的位置都有偶數個防具,輸出一行 "there's no weakness."(不包含引號) 。
否則在一行內輸出兩個空格分隔的整數 p 和 c,表示在位置 p 有 c 個防具。當然 c 應該是乙個奇數。
【輸入樣例】:32
1 10 1
2 10 1
21 10 1
1 10 1
41 10 1
4 4 1
1 5 1
6 10 1
【輸出樣例】:
1 1 there's no weakness.
4 3
【資料範圍】
防具總數不多於10^8,
si≤ei,1≤t≤5,n≤200000,0≤si,ei,di≤2147483647
我們可以發現最多只有乙個位置有奇數,其他的位置的盾牌個數都是偶數,那麼我們做一遍字首和,那麼奇數個盾牌的位置以後的字首和都是奇數,很明顯我們可以\(o(n)\)的時間內算出\(0-i\)範圍內有多少個盾牌,那麼我們就二分一下,判斷字首和為奇數的最前的乙個位置,就是奇數盾牌的位置。
好題好題,反正我是不會做的。
#include#include#define n 210000
using namespace std;
struct node
a[n];int n;
inline int mymin(int x,int y)
if(ans>=0)printf("%lld %d\n",ans,check(ans)-check(ans-1));
else printf("there's no weakness.\n");
} return 0;
}
演算法競賽高階指南 0x00
快速冪模板,寫一下快速冪的原理。我們知道,乙個數 n 在二進位制 也可以是其他進製 下可以被表示為 a 1 a 2 2 1 a 3 2 2 a m 2 那麼我們可以考慮將其分拆成二進位制狀態下的每一位,然後做冪運算。這樣做的時間複雜度為 o log 2 n 實現的過程類似於倒過來的分治 當然也可以直...
推薦系統實踐 0x00 序
最後還是找到了自己算是滿意的工作,也準備開始新的研究領域,推薦演算法。由於我之前的研究內容主要是圍繞著cv展開,所以還是需要提前學習一下推薦演算法的知識。目前選擇了 推薦系統實踐 這本書,看中了它能夠將知識點和 相結合的優勢,並不枯燥也有一部分專案實踐等等。這篇文章就算作自己開始讀這本 推薦系統實踐...
0x00 什麼是作業系統
作業系統網課筆記 使用者視角 pc使用者 追求方便,易用 高效能 主機使用者 關注資源利用率 手持裝置使用者 關心方便 電池續航時間 正是由於不同使用者,不同的應用場景對作業系統有不同分要求,就需要設計不同的作業系統,以適合使用者和應用的需求。這也是作業系統多樣化的原因。系統視角 1 管理所有資源 ...