题目:
https://s3.amazonaws.com/codechef_shared/download/translated/SNCKEL16/mandarin/RWALK.pdf
这题可以转化成背包。
L,R什么的可以无视,因为替换他们不用时间。
将竖直方向和左右方向分成两个数组。
分别求出他们的和sum1,sum2。将其转化成背包,看成sum1的背包最多可以选多少个(长度和*2),因为要回到原点所以是长度和*2。
DP跑的时间比较久(2500+ms),用bitset(300+)优化一下(刚学的bitset,所以记下来…然而不懂为什么可以快那么多)
DP代码:
int DP(int *p,int n)
{
memset(dp,0,sizeof(dp));
int sum=0;
for(int i=0;