UVA 2 NOI2014 起床困難綜合症

2022-09-15 06:30:11 字數 2616 閱讀 7350

21 世紀,許多人得了一種奇怪的病:起床困難綜合症,其臨床表現為:起床難,起床後精神不佳。作為一名青春陽光好少年,atm 一直堅持與起床困難綜合症作鬥爭。通過研究相關文獻,他找到了該病的發病原因:在深邃的太平洋海底中,出現了一條名為 drd 的巨龍,它掌握著睡眠之精髓,能隨意延長大家的睡眠時間。正是由於 drd 的活動,起床困難綜合症愈演愈烈,以驚人的速度在世界上傳播。為了徹底消滅這種病,atm 決定前往海底,消滅這條惡龍。

歷經千辛萬苦,atm 終於來到了 drd 所在的地方,準備與其展開艱苦卓絕的戰鬥。drd 有著十分特殊的技能,他的防禦戰線能夠使用一定的運算來改變他受到的傷害。具體說來,drd 的防禦戰線由 nn 扇防禦門組成。每扇防禦門包括乙個運算 opop 和乙個引數 tt,其中運算一定是 or,xor,andor,xor,and 中的一種,引數則一定為非負整數。如果還未通過防禦門時攻擊力為 xx,則其通過這扇防禦門後攻擊力將變為 x op tx op t。最終drd 受到的傷害為對方初始攻擊力 xx依次經過所有 nn 扇防禦門後轉變得到的攻擊力。

由於 atm 水平有限,他的初始攻擊力只能為 00 到 mm 之間的乙個整數(即他的初始攻擊力只能在 0,1,…,m0,1,…,m 中任選,但在通過防禦門之後的攻擊力不受 mm 的限制)。為了節省體力,他希望通過選擇合適的初始攻擊力使得他的攻擊能讓 drd 受到最大的傷害,請你幫他計算一下,他的一次攻擊最多能使 drd 受到多少傷害。

第一行包含兩個整數,依次為 n,mn,m,表示 drd 有 nn 扇防禦門,atm 的初始攻擊力為 00 到 mm 之間的整數。

接下來 nn 行,依次表示每一扇防禦門。每行包括乙個字串 opop 和乙個非負整數 tt,兩者由乙個空格隔開,且 opop 在前,tt 在後,opop 表示該防禦門所對應的操作,tt 表示對應的引數。

一行乙個整數,表示 atm 的一次攻擊最多使 drd 受到多少傷害。

input

3 10

and 5

or 6

xor 7

output

1
explanation

atm可以選擇的初始攻擊力為 0,1,…,100,1,…,10。

假設初始攻擊力為44,最終攻擊力經過了如下計算

4 and 54 or 66 xor 7===4614 and 5=44 or 6=66 xor 7=1

類似的,我們可以計算出初始攻擊力為 1,3,5,7,91,3,5,7,9 時最終攻擊力為 00,初始攻擊力為 0,2,4,6,8,100,2,4,6,8,10 時最終攻擊力為 11,因此 atm 的一次攻擊最多使 drd 受到的傷害值為 11。

所有測試資料的範圍和特點如下表所示

測試點編號

n,mn,m的規模

約定備註

12≤n≤100,m=02≤n≤100,m=0

0≤t<2300≤t<230

opop一定為or,xor,andor,xor,and中的一種

22≤n≤1000,1≤m≤10002≤n≤1000,1≤m≤100034

2≤n,m≤1052≤n,m≤105

存在一扇防禦門為and 0and 0

5所有防禦門的操作均相同67

2≤n≤105,2≤m<2302≤n≤105,2≤m<230

所有防禦門的操作均相同89

10在本題中,選手需要先將數字變換為二進位制後再進行計算。如果操作的兩個數二進位制長度不同,則在前補 00 至相同長度。

oror 為按位或運算,處理兩個長度相同的二進位制數,兩個相應的二進位制位中只要有乙個為 11,則該位的結果值為 11,否則為 00。

xorxor 為按位異或運算,對等長二進位制模式或二進位制數的每一位執行邏輯異或操作。如果兩個相應的二進位制位不同(相異),則該位的結果值為 11,否則該位為 00。

andand 為按位與運算,處理兩個長度相同的二進位制數,兩個相應的二進位制位都為 11,該位的結果值才為 11,否則為 00。

例如,我們將十進位制數 55 與十進位制數 33 分別進行 oror,xorxor 與 andand 運算,可以得到如下結果:

0101 (十進位制 5)

or 0011 (十進位制 3)

= 0111 (十進位制 7)

0101 (十進位制 5)

xor 0011 (十進位制 3)

= 0110 (十進位制 6)

0101 (十進位制 5)

and 0011 (十進位制 3)

= 0001 (十進位制 1)

時間限制:1s1s

空間限制:512mb512mb

#include#include#include#include#define m 100100

using namespace std;

struct abcd

}a[m];

int n,m;

char s[100];

int cross(int x)

int main()

for(now=1;now<=m;now<<=1);

for(now>>=1;now;now>>=1)

printf("%d\n",cross(ans));

}

NOI2014 起床困難症

題意 有n個關卡,你有乙個初始攻擊值,這個值初始不能超過m,每個關卡有乙個攻擊型別op 位運算 和引數t 現在問你通過這些關卡最後你的攻擊值最大是多少。最開始直接看到這道題直接就先打了o nm 的暴力列舉,m 2 30.所以顯然知道自己過不了,依舊抱著好玩的態度去水了30分暴力,然後想正解。最開始是...

bzoj3668 Noi2014 起床困難綜合症

21 世紀,許多人得了一種奇怪的病 起床困難綜合症,其臨床表現為 起床難,起床後精神不佳。作為一名青春陽光好少年,atm 一直堅持與起床困難綜合症作鬥爭。通過研究相關文獻,他找到了該病的發病原因 在深邃的太平洋海底中,出現了一條名為 drd 的巨龍,它掌握著睡眠之精髓,能隨意延長大家的睡眠時間。正是...

NOI2014 起床困難綜合症

noi2014 起床困難綜合症 又刷了一道水題qwq 它給你n扇門,每扇門都有乙個值和乙個操作,這個操作為or and xor之間的某乙個。你需要從m中任意選取乙個數,使得這個數依次經過n扇門之後的值最大。n是1e5的,m是1e9的,如果你直接暴力列舉每乙個數,求最大值,複雜度顯然是1e14的,了。...