日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )

發布時間:2025/4/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 3668: [Noi2014]起床困难综合症( 贪心 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前以為xor,or,and滿足結合律...然后連樣例都過不了

早上上體育課的時候突然想出來了...直接處理每一位是1,0的最后結果, 然后從高位到低位貪心就可以了...?

滾去吃飯了..?

-----------------------------------------------------------------------

#include<bits/stdc++.h>using namespace std;#define b(i) (1 << (i))const int maxn = 100009;const int L = 30;char opt[maxn];int x[maxn], N, M, ans[50][2];void init() {scanf("%d%d", &N, &M);char s[10];for(int i = 0; i < N; i++) {scanf("%s", s);scanf("%d", x + i);opt[i] = s[0];}}void work() {for(int i = 0; i < L; i++)?for(int j = 0; j < 2; j++) {int t = j; ? ?for(int k = 0; k < N; k++) switch(opt[k]) {case 'A' : t &= (b(i) | x[k]) == x[k]; break;case 'O' : t |= (b(i) | x[k]) == x[k]; break;case 'X' : t ^= (b(i) | x[k]) == x[k]; break;default ?: break; ? ?} ? ?ans[i][j] = t;}int ANS = 0, c = 0;for(int i = L; i--; )if(ans[i][0]) ANS |= b(i);else if(ans[i][1] && (b(i) | c) <= M) ? ?c |= b(i), ANS |= b(i);printf("%d\n", ANS);}int main() {init();work();return 0;}

-----------------------------------------------------------------------

?

?

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

Time Limit:?10 Sec??Memory Limit:?512 MB
Submit:?1054??Solved:?596
[Submit][Status][Discuss]

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表示對應的參數。

Output

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

Sample Input

3 10
AND 5
OR 6
XOR 7

Sample Output

1

HINT

【樣例說明1】

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

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

4 AND 5 = 4

4 OR 6 = 6

6 XOR 7 = 1

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





0<=m<=10^9

0<=t<=10^9 ?

一定為OR,XOR,AND 中的一種





【運算解釋】




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


????? OR為按位或運算處理兩個長度相同的二進制數兩個相應的二進制位中只要有一個為1則該位的結果值為1否則為0XOR為按位異或運算對等長二進制模式或二進制數的每一位執行邏輯異或操作如果兩個相應的二進制位不同),則該位的結果值為1否則該位為0?AND?為按位與運算處理兩個長度相同的二進制數兩個相應的二進制位都為1該位的結果值才為1否則為0


????? 例如,我們將十進制數5與十進制數3分別進行ORXOR?與?AND?運算,可以得到如下結果:


????????????? 0101?(十進制?5)?????????? 0101?(十進制?5)?????????? 0101?(十進制?5)


??? ? ?? OR?0011?(十進制?3)????XOR?0011?(十進制?3)????AND?0011?(十進制?3)


???????? ? =?0111?(十進制?7)???? ? =?0110?(十進制?6)??????? =?0001?(十進制?1)

Source

?

轉載于:https://www.cnblogs.com/JSZX11556/p/4783089.html

總結

以上是生活随笔為你收集整理的BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。