if(dp[k]+1LL*a[j]*i+b[j] >= dp[k+(1<<j)])其中用了1LL。LL其实代表long long, * 1LL是为了在计算时,把int类型的变量转化为long long,然后再赋值给long long类型的变量。dp[]是long long类型的, if(dp[k]+1LL*a[j]*i+b[j] >= dp[k+(1<<j)]) 不至于后面计算溢出,* 1LL之后类型就转换为long long, a[]内容是定义为int类型的。