目录
这次优化了一下代码
c:3 1 5 0 5
d:1 2 2 1 4
s1:2 -1 3 -1 1 2 -1 3 -1 1
s2:2 1 4 3 4 6 5 8 7 8
s2=s1+s2[i-1];
s2[1]=c1-d1
s2[2]=c2-d2+c1-d1
s2[3]=c3-d3+c2-d2+c1-d1
s2[3]-s2[1]=c3-d3+c2-d2+c1-d1-c1+d1=c3-d3+c2-d2,即从2走到4(4不加油)后还剩多少油
然后就看注释吧,精华都在注释里[code]#include using namespace std;long long o[1000200],d[1000200],s[1000200],q[1000200],vis[1000200];int main(){ int n; cin>>n; for(long long i=1;i>o>>d; for(long long i=1;i=0,那在i+1走到i+n+1这一圈以内就不会出现负数了,即i+1可以作为起点 while (hh=s) tt--;//维护s[q[hh]]永远最小 q[tt++]=i; } d[0]=d[n]; for(long long i=1;i>co; // 体重 单价 数量 // 把一种物体的数量二进制分解成若干种"小物体" for(int j=1;j |