http://47.93.249.116/problem.php?id=2171
真正的水题。
设走了x公里,那么水的价格为x元,因为要安全返回,所以要来回两趟要喝2x升水,所以剩余m-2x升可以卖,因此利润为(m-2x)*x元 ,一元二次方程组,开口向下,求最大值。
有题意可得,携带m升的最大价值为(m-2x)*x一元二次方程组求最大值即可。
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> #include<map> #include<vector> #include<math.h> #include<string> #include<time.h> using namespace std; #define INF 0x3f3f3f3f #define LL long long #define N 10000009 #define mid 10000000 int main() { LL n,m; while(scanf("%lld%lld",&n,&m)!=EOF) { LL sum=0; LL d=(LL)(1.0*m/4+0.5); sum=n/m*(m-2*d)*d; m=n%m; if(m) { d=(int)(1.0*m/4+0.5); sum+=(m-2*d)*d; } printf("%lld\n",sum); } return 0; }