1. 程式人生 > >【NOI2014】bzoj3668 起床困難綜合症

【NOI2014】bzoj3668 起床困難綜合症

Description

21 世紀,許多人得了一種奇怪的病:起床困難綜合症,其臨床表現為:起床難,起床後精神不佳。作為一名青春陽光好少年,atm
一直堅持與起床困難綜合症作鬥爭。通過研究相關文獻,他找到了該病的發病原因:在深邃的太平洋海底中,出現了一條名為 drd
的巨龍,它掌握著睡眠之精髓,能隨意延長大家的睡眠時間。正是由於 drd
的活動,起床困難綜合症愈演愈烈,以驚人的速度在世界上傳播。為了徹底消滅這種病,atm 決定前往海底,消滅這條惡龍。歷經千辛萬苦,atm
終於來到了 drd 所在的地方,準備與其展開艱苦卓絕的戰鬥。drd
有著十分特殊的技能,他的防禦戰線能夠使用一定的運算來改變他受到的傷害。具體說來,drd 的防禦戰線由
n扇防禦門組成。每扇防禦門包括一個運算op和一個引數t,其中運算一定是OR,XOR,AND中的一種,引數則一定為非負整數。如果還未通過防禦門時攻擊力為x,則其通過這扇防禦門後攻擊力將變為x
op t。最終drd
受到的傷害為對方初始攻擊力x依次經過所有n扇防禦門後轉變得到的攻擊力。由於atm水平有限,他的初始攻擊力只能為0到m之間的一個整數(即他的初始攻擊力只能在0,1,…,m中任選,但在通過防禦門之後的攻擊力不受
m的限制)。為了節省體力,他希望通過選擇合適的初始攻擊力使得他的攻擊能讓 drd 受到最大的傷害,請你幫他計算一下,他的一次攻擊最多能使
drd 受到多少傷害。

Input

第1行包含2個整數,依次為n,m,表示drd有n扇防禦門,atm的初始攻擊力為0到m之間的整數。接下來n行,依次表示每一扇防禦門。每行包括一個字串op和一個非負整數t,兩者由一個空格隔開,且op在前,t在後,op表示該防禦門所對應的操作,
t表示對應的引數。n<=10^5

Output

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

從高位到低位依次考慮答案的每一位,如果填上1以後超過m就只能填0,否則考慮填0或者1,進行暴力O(n)計算出結果。因為填0比填1對後面更有利,所以只有填1結果好於0時填1,否則填0。

#include<cstdio>
#include<cstring> int a[100010],op[100010],n; int cal(int x) { int i,p; for (i=1;i<=n;i++) { if (op[i]==0) x&=a[i]; if (op[i]==1) x|=a[i]; if (op[i]==2) x^=a[i]; } return x; } int main() { int i,j,k,m,p,q,x,y,z,ans; char s[5]; scanf("%d%d"
,&n,&m); for (i=1;i<=n;i++) { scanf("%s%d",s,&a[i]); if (s[0]=='A') op[i]=0; if (s[0]=='O') op[i]=1; if (s[0]=='X') op[i]=2; } ans=0; for (i=31;i>=0;i--) { if (ans+(1<<i)>m) continue; x=cal(ans)&(1<<i); y=cal(ans+(1<<i))&(1<<i); if (x<y) ans+=1<<i; } printf("%d\n",cal(ans)); }

相關推薦

NOI2014bzoj3668 起床困難綜合症

Description 21 世紀,許多人得了一種奇怪的病:起床困難綜合症,其臨床表現為:起床難,起床後精神不佳。作為一名青春陽光好少年,atm 一直堅持與起床困難綜合症作鬥爭。通

BZOJ3668[NOI2014] 起床困難綜合症(位運算思想)

點此看題面 大致題意: 給定一些位運算操作,讓你在\(0\sim m\)範圍內選一個初始值,使其在經過這些運算後得到的結果最大。 前置技能:關於位運算 作為一道位運算的題,如果你不知道什麼是位運算,那就完全做不了了。 關於位運算可以詳見這篇部落格:位運算相關(一)——位運算學習筆記。 接下來,我

NOI2014起床困難綜合症

歷經千辛萬苦,atm 終於來到了 drd 所在的地方,準備與其展開艱苦卓絕的戰鬥。drd 有著十分特殊的技能,他的防禦戰線能夠使用一定的運算來改變他受到的傷害。具體說來,drd 的防禦戰線由 n扇防禦門組成。每扇防禦門包括一個運算op和一個引數t,其中運算一定是OR,XOR,AND中的一種,引數則一定為非負整

NOI2014起床困難綜合癥 位運算+貪心

困難 hide 答案 none har class gif pre 位運算 這道題先求出0和-1經過處理後的答案 具體看代碼吧 #include<cstdio> #include<cstring> #include<algorithm>

bzoj3668: [Noi2014]起床困難綜合症 拆位模擬

bzoj3668: [Noi2014]起床困難綜合症 Description 21 世紀,許多人得了一種奇怪的病:起床困難綜合症,其臨床表現為:起床難,起床後精神不佳。作為一名青春陽光好少年,atm 一直堅持與起床困難綜合症作鬥爭。通過研究相關文獻,他找到了該病的發病原因:在深邃

BZOJ4811: [Ynoi2017]由乃的OJ BZOJ3668: [Noi2014]起床困難綜合症

BZOJ4811: [Ynoi2017]由乃的OJ Description 由乃正在做她的OJ。現在她在處理OJ上的使用者排名問題。OJ上註冊了n個使用者,編號為1~",一開始他們按照編號排名。 由乃會按照心情對這些使用者做以下四種操作,修改使用者的排名和編號: 然

bzoj3668: [Noi2014]起床困難綜合症

題目 每一位用 0 / 1 0/1

noi2014 起床困難綜合症

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

UOJ 2 [NOI2014]起床困難綜合症

貪心 我們的目標一定是讓最終答案的二進位制位的高位儘量為1 發現位運算只會影響一位 於是搞貪心 #include<cstdio> #define N 100005 using nam

bzoj3669NOI2014魔法森林

用途 math ont 數組 mono pro struct logs oid pre.cjk { font-family: "Droid Sans Fallback", monospace } p { margin-bottom: 0.25cm; line-height:

NOI2014動物園

col pan round 字符 ++ 要求 blog 滿足 獲取 這道題因為自己把1000000007寫成了100000007而浪費了三個小時,所以告誡自己:數一下幾位!數一下幾位!數一下幾位! 先貼代碼~ 1 #include<cstdio> 2 #

BZOJ3669Noi2014魔法森林(Link-Cut Tree)

沒有 力量 表示 cto ota code 描述 queue str 【BZOJ3669】【Noi2014】魔法森林(Link-Cut Tree) 題面 題目描述 為了得到書法大家的真傳,小 E 同學下定決心去拜訪住在魔法森林中的隱 士。魔法森林可以被看成一個包含 n 個節

UOJ#7. NOI2014購票 | 線段樹 凸包優化DP

科學 uil 影響 現在 problem long llb noi cpp 題目鏈接 UOJ #7 題解 首先這一定是DP!可以寫出: \[f[i] = \min_{ancestor\ j} \{f[j] + (d[j] - d[i]) * p[i] + q[i]\}\]

NOI2014魔法森林 - 動態加邊SPFA

沒有 col () size_t edge 數據 scanf 森林 ack 題目描述 為了得到書法大家的真傳,小 E 同學下定決心去拜訪住在魔法森林中的隱 士。魔法森林可以被看成一個包含 n 個節點 m 條邊的無向圖,節點標號為 1,2,3,…,n,邊標號為

起床困難綜合症(省選)

題目: 題目描述 21世紀,許多人得了一種奇怪的病:起床困難綜合症,其臨床表現為:起床難,起床後精神不佳。作為一名青春陽光好少年,atm一直堅持與起床困難綜合症作鬥爭。通過研究相關文獻,他找到了該病的發病原因: 在深邃的太平洋海底中,出現了一條名為drd的巨

bzoj3670動物園NOI2014

Description 近日,園長髮現動物園中好吃懶做的動物越來越多了。例如企鵝,只會賣萌向遊客要吃的。為了整治動物園的不良風氣,讓動物們憑自己的真才實學向遊客要吃的,園長決定開設演算法班,讓動物們

3668. [NOI2014]起床困難綜合癥貪心

scrip 一個空格 bsp put size -- IT 有著 如果能 Description 21 世紀,許多人得了一種奇怪的病:起床困難綜合癥,其臨床表現為:起床難,起床後精神不佳。作為一名青春陽光好少年,atm 一直堅持與起床困難綜合癥作鬥爭。通過研究相關文獻

刷題BZOJ 3668 [Noi2014]起床困難綜合癥

tac 或操作 防禦 name atm bit 得到 oid 所有 Description 21 世紀,許多人得了一種奇怪的病:起床困難綜合癥,其臨床表現為:起床難,起床後精神不佳。作為一名青春陽光好少年,atm 一直堅持與起床困難綜合癥作鬥爭。通過研究相關文獻,他找到了該

BZOJ3668:[NOI2014]起床困難綜合癥——題解

轉變 作者 bsp sca 奇怪 lock 博客 algorithm pro http://www.lydsy.com/JudgeOnline/problem.php?id=3668 https://www.luogu.org/problemnew/show/P2114

bzoj3668: [Noi2014]起床困難綜合癥

turn math 真的是 簡單 pac scanf 當前 blog 結果 今天狀態真的是不一般的差。 LCT動態維護最大生成樹沒調出來,費用流又沒寫出來。 結果這道煞筆貪心都要重構一次代碼才能A -------------- 然後做法其實很簡單,逆向枚舉每一個位,