bzoj3668: [Noi2014]起床困難綜合癥
阿新 • • 發佈:2018-03-06
turn math 真的是 簡單 pac scanf 當前 blog 結果
今天狀態真的是不一般的差。
LCT動態維護最大生成樹沒調出來,費用流又沒寫出來。
結果這道煞筆貪心都要重構一次代碼才能A
--------------
然後做法其實很簡單,逆向枚舉每一個位,判斷當前位經過一連串的運算後能否為1。當前位的值分0和1兩種情況。
#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespacestd; char ss[10]; int main() { int n,m,x; scanf("%d%d",&n,&m); int A=0,B=(1<<30)-1; for(int i=1;i<=n;i++) { scanf("%s%d",ss+1,&x); if(ss[1]==‘A‘) A&=x, B&=x; if(ss[1]==‘O‘) A|=x, B|=x; if(ss[1]==‘X‘) A^=x, B^=x; }int now=0,ans=0; for(int i=30;i>=0;i--) { int k=(1<<i); bool a=(A&k),b=(B&k); if(a==false&&b==false)continue; else if(a==true)ans+=k; else if(now+k<=m)now+=k,ans+=k; } printf("%d\n",ans); return 0; }
bzoj3668: [Noi2014]起床困難綜合癥