這是演算法馬拉松一道題。當時想法方向是正確的可惜沒有想到stl。
題意3*n的矩陣。。要走出一條取餘最大路。。
看到3肯定是在這裡做文章。。那麼可以列舉第一行二分剩下的嘛。。
到這裡思路都很清晰,但是考慮到如果不刪除(刪除當前節點不合法的走法,移動一下刪乙個)的話,二分就結果不一定正確了。。這就十分尷尬
賽後看題解可以 multiset來刪除,當然也可以map了。。。這裡就是經驗的問題了
二分時候要注意一些地方,乙個最優答案當然是靠近p-1了,那麼列舉的x怎麼靠近p-1呢,當然有兩種方法,一是x+y靠近p-1,要麼是x+y靠近2*p-1了。
然後在multiset裡面二分即可。。
這裡要學習stl的應用,自己根本沒有領會到stl的精髓啊。。。蒟蒻加油!
#include #include #include #include #include using namespace std;
const int maxn=100005;
long long n,p;
long long arr[3][maxn];
long long sum[3][maxn];
multisets;
int main()
{ scanf("%d%d",&n,&p);
for(int i=0;i<3;i++){
for(int j=0;j::iterator it;
for(int i=0;i
51nod 1624 取餘最長路
佳佳有乙個n m的帶權矩陣,她想從 1,1 出發走到 n,m 且只能往右往下移動,她能得到的娛樂值為所經過的位置的權的總和。有一天,她被下了惡毒的詛咒,這個詛咒的作用是將她的娛樂值變為對p取模後的值,這讓佳佳十分的不開心,因為她無法找到一條能使她得到最大娛樂值的路徑了!她發現這個問題實在是太困難了,...
51nod 1624 取餘最長路
原題鏈結 1624 取餘最長路 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 佳佳有乙個n m的帶權矩陣,她想從 1,1 出發走到 n,m 且只能往右往下移動,她能得到的娛樂值為所經過的位置的權的總和。有一天,她被下了惡毒的詛咒,這個詛咒的作用是將她的娛樂值變為...
51 Nod1624 取餘最長路
1624 取餘最長路 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 佳佳有乙個n m的帶權矩陣,她想從 1,1 出發走到 n,m 且只能往右往下移動,她能得到的娛樂值為所經過的位置的權的總和。有一天,她被下了惡毒的詛咒,這個詛咒的作用是將她的娛樂值變為對p取模後...