UVa10718 - Bit Mask(不错的贪心)
2013-03-27 19:52
239 查看
#include<cstdlib> #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<set> #include<map> #include<list> #include<queue> #include<vector> #define LL long long #define UI unsigned int #define inf 0x7fffffff #define eps 1e-7 #define M 105 #define N 1010 using namespace std; UI m,n,t,u,l; bool a[32]; bool b[32]; unsigned int tranxiao(bool a[]) { UI ans=0; for (int i=31;i>=0;--i ) ans=ans*2+a[i]; return ans; } unsigned int tranda(bool a[],int k) { UI ans=0; for (int i=31;i>=k;--i ) ans=ans*2+a[i]; while(k) { ans=ans*2+1;k--; } return ans; } int main() { #ifndef ONLINE_JUDGE freopen("ex.in","r",stdin); #endif int ncase=0; // scanf("%d",&t); while(scanf("%u%u%u",&n,&l,&u)==3) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); t=n; for(int i=0;i<32&&t;i++) { b[i]=t%2; t/=2; } for(int i=31;i>=0;i--)//好的贪心 { a[i]=1; if(tranxiao(a)>u)//当前可能最小值 { a[i]=0;continue; } a[i]=0; if(tranda(a,i)<l)//当前可能最大值 { a[i]=1;continue; } if(b[i]==1)a[i]=0; else a[i]=1; } printf("%u\n",tranxiao(a)); } return 0; }
相关文章推荐
- uva10718 - Bit Mask(贪心)
- UVa 10718 Bit Mask (贪心&位运算)
- UVA - 10718 Bit Mask 贪心
- uva 10718 Bit Mask(贪心)
- UVA 10718 Bit Mask (快速幂 + 贪心)
- UVA - 10718 Bit Mask(贪心+位运算)
- UVA 10718 Bit Mask 贪心+位运算
- uva10718 - Bit Mask(贪心)
- uva 10718 Bit Mask(位操作贪心)
- UVA 10718 Bit Mask 贪心+位运算
- uva 10718 Bit Mask(贪心)
- [贪心]UVA10718 Bit Mask
- UVA - 10718 Bit Mask
- UVA 10718 Bit Mask
- UVa 10718 - Bit Mask
- uva 10718 - Bit Mask
- uva 10718 Bit Mask
- uva10718 Bit Mask
- uva 10718 - Bit Mask
- UVA 10718 Bit Mask