1. 程式人生 > >bzoj3668: [Noi2014]起床困難綜合癥

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

turn math 真的是 簡單 pac scanf 當前 blog 結果

今天狀態真的是不一般的差。

LCT動態維護最大生成樹沒調出來,費用流又沒寫出來。

結果這道煞筆貪心都要重構一次代碼才能A

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

然後做法其實很簡單,逆向枚舉每一個位,判斷當前位經過一連串的運算後能否為1。當前位的值分0和1兩種情況。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace
std; 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]起床困難綜合癥