給你乙個n*m的矩陣,你需要從左上角走到右下角,你每次只能向下或者向右走,並且不能走出矩陣之外。只要你走到終點之後,你就會獲得獎勵,獎勵的金額為:所有經過的元素做「與」運算。算一算你能獲得的最大獎勵金額為多少。
位置越高對答案影響越大,所以我們從高位到低位開始跑,計算每一位是否能有數字跑到最後且不影響之前的位置,具體實現看**注釋。
#include
using
namespace std;
#define int long long
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const
int n=
1e3+5;
const
int mod=
1e9+7;
const
int inf=
0x7fffffff
;const
double pi=
3.1415926535
;int n,m,a[n]
[n],dp[n]
[n],ans=0;
signed
main()
}for
(int b=
31;b>=
0;b--
)//最高位對答案影響最大,所以我們從最高位開始跑
if(j+
1<=m&&
(a[i]
[j+1
]&ans)
==ans)}}
}if(dp[n]
[m]&&
(a[n]
[m]&(1
<}}
cout<}
普普通通的DP(按位貪心DP)
題意 還記得這題嗎?cf1332d 就是說乙個二維矩陣,從 1,1 走到 n,m 只能向下或右走,獲得的總貢獻是每一步的 運算,問你最後能獲得多少貢獻。思路 我們很容易想到,dp i j 表示走到 i,j 的最大值,然後每步取大就行,但是這個方法是錯誤的,比如這個資料 3 4 7 3 3 1 4 8...
這瓶普普通通的六神花露水 憑什麼能賣到500塊?
500塊賣你一瓶二手花露水,你願意麼?別說,還真有人心甘情願!前兩天,在乙個神秘的閒魚拍賣線上會場中,一位為一瓶二手六神花露水開出了503元的 天價 一瓶二手花露水被出價31次 這還不是最厲害的 有人花兩千塊買雙拖鞋!被36次競拍的愛馬仕拖鞋 別看只是花露水和拖鞋,人家的 身世 可都頗為曲折 它們每...
這瓶普普通通的六神花露水,憑什麼能賣到500塊?
500塊賣你一瓶二手花露水,你願意麼?別說,還真有人心甘情願!前兩天,在乙個神秘的閒魚拍賣線上會場中,一位為一瓶二手六神花露水開出了503元的 天價 一瓶二手花露水被出價31次 這還不是最厲害的 有人花兩千塊買雙拖鞋!被36次競拍的愛馬仕拖鞋 別看只是花露水和拖鞋,人家的 身世 可都頗為曲折 它們每...