題意:給出乙個數n,下限l上限u,在[l,u]裡面找乙個整數,使得n|m最大,且讓m最小。
很明顯用貪心,用位運算搞了半天,樣例過了後還是wa,沒考慮清楚。。。
然後網上翻到了乙個人家位運算一句話解決了 = =....orz...
人家的分析:(by天然呆大神)
盡量讓 n 中為 0 的位元,m 為 1;n 為 1 的位元, m 為 0。
因此從高位往低位檢查,
如果 n 為 1(m 盡量為 0),若 m 不能為 0,則必是因為 m 為 1 仍小於 l;
如果 n 為 0(m 盡量為 1),若 m 不能為 1,則必是因為 m 為 0 仍大於 u(此時不可能),
換句話說,m 為 1 時,m 需不大於 u。
注意:如果是long long的位運算操作,最好在數後面加個ll,不如會溢位的。
**:
/*
* author: illuz * blog:
* file: uva10718.cpp
* lauguage: c/c++
* create date: 2013-09-04 09:26:39
* descripton: uva 10718 bit mask, bitmap, greed
*/#include #include #define repd(i, a, b) for (int i = (a); i >= (b); i--)
const int maxn = 100;
int main()
else
} printf("%lld\n", m);
} return 0;
}
小總結 快速冪 貪心 Bit Mask
傳送門 preview bitstream a flow of data in binary form.in bit wise expression 用位表示。her face was a cold blank mask.她裝出一副冰冷冷毫無表情的樣子。perform a bit wise and ...
uva 10382題解(貪心)
題目大意 有一塊草坪,長為l,寬為w,在它的水平中心線上有n個位置可以安裝噴水裝置,各個位置上的噴水裝置的覆蓋範圍為以它們自己的半徑ri為圓。求出最少需要的噴水裝置個數。8 20 2 5 34 1 1 27 2 10 2 13 3 16 2 19 4 3 10 1 3 59 3 6 13 10 1 ...
UVA 11729 簡單貪心
新增鏈結描述 結論 根據完成的時間排序。證明 假設交代任務時間為a,完成任務時間為b。選取n個人之中的兩個人進行觀察,這兩個人之間的順序對其他人不產生影響,假設b1 b2,當b1在前面的時候,二者為max1 a1 a2 b2,a1 b1 當b1在後面的時候max2 a2 b2,a1 a2 b1 因為...