第一種解法:
遍歷求解。num[i][j]代表i行j列之前一共有多少個''。然後再面積夾擊求解x*y、y*x是否滿足,x==y只需要判斷一次。
這種方法提交用c++,不要用g++,否則會超時。
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int map[2005][2005];
int num[2005][2005];
int main()
} scanf(" %d %d",&x,&y);
getchar();
for(int i=1; i<=n; i++)
else
} getchar();
} for(int i=1; i<=n; i++)
else
} }
int ans = 0;
int size = x*y;
for(int i=x; i<=n; i++)
} }
if(x!=y)
} }
} printf("%d\n",ans);
} return 0;
} #include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int map[2005][2005];
int num[2005][2005];
int main()
}scanf(" %d %d",&x,&y);
getchar();
for(int i=1; i<=n; i++)
else
}getchar();
}for(int i=1; i<=n; i++)
else}}
int ans = 0;
int size = x*y;
for(int i=x; i<=n; i++)}}
if(x!=y)}}
}printf("%d\n",ans);
}return 0;
}第二種方法:
二維dp,但是會mle。
[cpp] view plaincopyprint?#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int map[2005][2005];
int h[2005][2005];
int l[2005][2005];
int l2[2005][2005];
int main()
getchar();
} int ans = 0;
for(int i=1; i<=n; i++)
else
} }
printf("%d\n",ans);
} return 0;
} #include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int map[2005][2005];
int h[2005][2005];
int l[2005][2005];
int l2[2005][2005];
int main()
getchar();
}int ans = 0;
for(int i=1; i<=n; i++)
else}}
printf("%d\n",ans);
}return 0;
}第三種:
改成滾動陣列,變成一維dp。
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int map[2005][2005];
int h[2005];
int l[2005];
int l2[2005];
int main()
getchar();
} int ans = 0;
for(int i=1; i<=n; i++)
else
} }
printf("%d\n",ans);
} return 0;
} #include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int map[2005][2005];
int h[2005];
int l[2005];
int l2[2005];
int main()
getchar();
}int ans = 0;
for(int i=1; i<=n; i++)
else}}
printf("%d\n",ans);
}return 0;}
小明系列故事 買年貨(HDU)
題意理解 有n個可以買的年貨,每個年貨有單價,抵扣的積分和實際的價值,小明手裡有v1的錢,v2的積分,可免費的年貨數量k。問如何買才能使年貨總的價值最大?問題分析 多維01揹包問題,用dp。動態規劃要找狀態,然後找狀態轉移方程。對於本題,狀態是dp ii jj kk ll 表示前ii個年貨花了jj錢...
HDU 4528 小明系列故事 捉迷藏
小明的媽媽生了三個孩子,老大叫大明,老二叫二明,老三.老三自然就叫小明了。一天,小明的媽媽帶小明兄弟三人去公園玩耍,公園裡面樹木很多,有很多地方可以藏身,於是他們決定玩捉迷藏。經過幾輪的猜拳後,第一輪是小明來找其他兩個人,遊戲規則很簡單 只要小明可以在規定的時間內找到他們就算小明獲勝,並且被發現的兩...
HDU 4501 小明系列故事 買年貨
解題思路 三維揹包,設定dp i j k 代表有i塊錢,有j個積分和k個免費物品的時候,可以得到的最大價值。則對於當前物品,我有兩種選擇 第一種 不買 第二種 買 如果選擇買又分了三種情況,1.用錢買。dp i 錢 j k 價值 2.用積分買。dp i j 積分 k 價值 3.免費拿。dp i j ...