https://ac.nowcoder.com/acm/contest/120563/F
最优结构是:
####P00R#####......
00R######P00R......
原因:
肯定希望第一个
尽量右边。
第一个:如果
右边一格,那么
就可以放在
阻挡,对
不优;如果
左边一格,那么
放在
,同样对
不优。那么这就是能把
挡在最右边的结果了。把
看成新的起点即可。那么就循环往复了。答案:
#include<bits/stdc++.h>
using namespace std;
int read(){
char ch=getchar();int x=0,f=1;
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
void work(){
int n=read();
printf("%d\n",n-1+(n/5));
}
int main(){
int t=read();
while(t--){
work();
}
return 0;
}

京公网安备 11010502036488号