题解:P14477 图寻中国
are_you_sure · · 题解
P14477图寻中国 题解
本水题可以推公式
题意重述
给出一连串对局的总局数
思路分析
虽然题目要求胜利尽可能多,但为了不超过最大连胜局数,必须要在胜利
- 如果最长连败为
0 (也就是b=0 ),则分隔直接使用1 局失败即可,共重复C\gets n\div (a+1) 个胜a 局,败1 局的周期。若n\mod (a+1) \ne 0 ,即还有剩余局数没有比完,则使其全胜利即可,因为可以证明n\mod (a+1) \le a 。 - 如果最长连败非
0 (也就是b>0 ),则可以先将a 局胜利和b 局失败比掉,新增一个变量C_2 \gets n-a-b (即剩余的局数),剩下的按照b=0 的情况处理即可,最后别忘了加上一开始连胜的a 。
根据上面的分析,可以得出两种情况所对应的公式:
第一种情况:
第二种情况:
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,a,b;
cin>>n>>a>>b;
if(b==0){//判断是否b=0,若是则按第一种情况处理
int c=n/(a+1);
int x=c*a;
cout<<x+n%(a+1);//此处为了方便阅读将第一种情况的公式拆成三段,意义和结果不变
}
else{ //否则按第二种情况处理
int c=n-a-b;
int x=c/(a+1);
cout<<x*a+a+c%(a+1);//此处为了方便阅读将第二种情况的公式拆成三段,意义和结果不变
}
return 0;//The End and AC!
}