很多dalao用的DP
但是贪心完全是可行的。
枚举一下有多少天请小红吃饭,然后贪心的把旅行的天数尽量平均分开即可。
#include <iostream> #include <climits> #include <cstdio> #include <cstring> using namespace std; long long n,p,q,ans; int main() { scanf("%lld%lld%lld",&n,&p,&q); ans=LONG_LONG_MAX; for(int i=0,a,b;i<=n;i++) { a=(n-i)/(i+1),b=(n-i)%(i+1); ans=min(ans,i*q+p*(i+1-b)*a*a+p*b*(a+1)*(a+1)); } cout<<ans<<endl; return 0; }