noi的水題
題意簡述:給出n個指令,在0到m之中選出乙個數,使其執行這n個指令後值最大。
一共有三種指令:「和」「或」「異或」,而乙個數在二進位制下執行三種指令時,各位之間是不能互相影響的。
有乙個簡單的結論,在二進位制中,第x位為1,之後的y位全為0,大於第x位為0,之後y位全為1(「之後」指低位)
非常簡單的乙個結論,想不明白的請去複習等比數列求和。
將m轉化為二進位制,從高到低列舉初始數字二進位制表示的每一位,有0和1兩種選法,會出現如下幾種情況:
之前選擇的每一位均與m相同,且m中這一位為0:答案中這一位也為0
之前選擇的每一位均與m相同,且m中這一位為1:選0或是選1均可,優先選擇能使結果中這一位為1的。如果選擇0或1均可,選擇0
之前選擇的與m不同,則答案中這一位選0和1均可,同樣優先選擇能使結果中這一位為1的
#includeusingnamespace
std;
intn,m,x,l;
int c[35],ans[35],num[35][3
];char s[5
];long
long
sum;
intmain()
for(int i=1;i<=n;i++)
for(int j=0;j<33;j++)
if(s[0]=='o'
)
if(s[0]=='x'
)
}
}l=-1
;
for(int i=0;i<33;i++) c[i]=0
;
while
(m)
for(int i=32;i>=0;i--)
if(num[i][1]==1) ans[i]=1
;
if(num[i][0]==0&&num[i][1]==0
) }}
for(int i=0;i<=32;i++) sum+=(ans[i]
"%lld
",sum);
return0;
}
NOI2014 起床困難綜合症
noi2014 起床困難綜合症 又刷了一道水題qwq 它給你n扇門,每扇門都有乙個值和乙個操作,這個操作為or and xor之間的某乙個。你需要從m中任意選取乙個數,使得這個數依次經過n扇門之後的值最大。n是1e5的,m是1e9的,如果你直接暴力列舉每乙個數,求最大值,複雜度顯然是1e14的,了。...
NOI2014 起床困難綜合症
點此看題 顯然要用二進位制貪心,我們從大到小地考慮每一位的選取情況。我們處理出第i ii位選0 1 0 10 1最終得到的結果,o n o n o n 跑一遍即可,然後如果選0 00產生貢獻我們就直接加上貢獻走人,否則選1 11產生貢獻我們就看現在剩下的m mm還支不支援這一位選1 11,如果支援我...
NOI2014 起床困難綜合症
21世紀,許多人得了一種奇怪的病 起床困難綜合症,其臨床表現為 起床難,起床後精神不佳。作為一名青春陽光好少年,atm一直堅持與起床困難綜合症作鬥爭。通過研究相關文獻,他找到了該病的發病原因 在深邃的太平洋海底中,出現了一條名為drd的巨龍,它掌握著睡眠之精髓,能隨意延長大家的睡眠時間。正是由於dr...