题解 LA2911
2024-10-18 01:33:35
题目大意 多组数据,每组数据给定整数 \(m,p,a,b\),满足 \(a>0\),\(2\leq p\leq12\) 且 \(p\) 为偶数。要求求出一列数 \(x_1,x_2,\cdots,x_m\),满足:
\(1)\sum_{k=1}^m x_k = b\sqrt{a}\)
\(2)-\frac{1}{\sqrt{a}}\leq x_i\leq\sqrt{a}\)
并且输出 \(\sum_{k=1}^m x_k^p\) 的最大值。
分析 既然给定 \(p\) 是偶数,则 \(x^p\) 最大等价于 \(|x|\) 最大。那么我们可以贪心,使 \(-\frac{1}{\sqrt{a}}\) 和 \(\sqrt{a}\) 占据 \(m-1\) 个,剩下那个单独考虑。但这样容易精度不够,所以把 \(\sqrt{a}\) 当做 \(a\) 来做。
#include<bits/stdc++.h>
using namespace std;
int m, p, a, b;
int ans1, ans2;
int main()
{
while(~scanf("%d%d%d%d", &m, &p, &a, &b)) {
ans1 = ans2 = 0;
int goal = b * a;
double I = sqrt(a);
while(--m) {
if(goal >= a) goal -= a, ++ans1;
else ++goal, ++ans2;
}
printf("%d\n", int(ans1 * pow(I, p) + ans2 * pow(-1 / I, p) + pow(goal / I, p) + 0.5));
}
}
最新文章
- JavaScript模板引擎artTemplate.js——是否编码输出html字符
- chrome插件开发-消息机制中的bug与解决方案
- 关于如何获取第三方app包内图片资源的方法
- Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
- POJ2187 Beauty Contest
- MyEclipse启动失败
- 给jdk写注释系列之jdk1.6容器(5)-LinkedHashMap源码解析
- 将Magento后台汉化的方法
- Dreamweaver 添加 cakephp ctp后缀名
- 编译TWRP-recovery教程及源码地址
- javascript中=,==,与===的区别;以及特殊值NaN的讲解
- Docker系统六:Docker网络管理
- salesforce lightning零基础学习(一) lightning简单介绍以及org开启lightning
- Spring中对象和属性的注入方式
- DB2DB 一年多以来的重大更新
- 自定义select标签箭头样式
- Chapter_4_JAVA作业
- CSRF 攻击(跨域攻击)
- 修改 iis 的端口号: 80 与 443
- Maven多模块项目加载