NOI 2014 起床困難症候群

2022-03-20 01:06:45 字數 1289 閱讀 2316

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

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

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

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

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

位運算+貪心。

注意強制型別轉換1ll的妙用。

不用就掛60.

本質上,左右移是都可以的。

所以**:

#include#define int long long

using namespace std;

int n,m,t;

char s[10];

int x=0,y=(1ll<<30)-1;

int ans;

signed main()

for(int i=32;i>=0;i--) }

printf("%lld\n",ans);

return 0;

}

NOI2014 起床困難症

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

Luogu 2114起床困難症候群(位運算貪心)

題目鏈結 這題真是噁心死我了。由於位運算每一位互不干涉,所以貪心由大到小選擇每一位最優的解,但是要判斷一下邊界,如果選擇該解使得原數 m則不能選擇。如下 include include include inline long long read while isdigit ch return num...

NOI2014 起床困難綜合症

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