1 条题解
-
0
#include<iostream> using namespace std; int n,r,u; int ans[1000001]; int ask(int eq,int ueq){ if(!ueq)return min(ans[eq],ans[eq+1])+u; return max(min(ans[eq],ans[eq+1])+u,min(ans[ueq],ans[ueq+1])+r); } int main(){ cin>>n>>r>>u; for(int i=2,j=1;i<=n;i++){ ans[i]=ask(j,i-j*2); while((j+1)*2<=i&&ask(j+1,i-j*2-2)<ans[i]){ ++j; ans[i]=ask(j,i-j*2); } } cout<<ans[n]; // puts(""); // for(int i=1;i<=n;i++){ // cout<<dfs(i)<<'\n'; // } return 0; }
- 1
信息
- ID
- 10353
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者