【链接】 我是链接,点我呀:)

【题意】

题意

【题解】

其实就是让你最后这n个数字的和最大。
加上的x没有关系。因为肯定都是加上n个x
所以直接加上就可以了
主要在于如何选取j
显然我们要找到一个位置j.
然后pre[j]+aft[j]的值最大(pre[j]=1+2+3+...+j-1,aft类似
(这是在d大于0的时候,小于0的时候找pre[j]+aft[j]最小的就好)

【代码】

#include <bits/stdc++.h>
#define ll long long
using namespace std; const int N = 1e5; int n,m;
ll x[N+10],d[N+10];
ll pre[N+10],aft[N+10];
ll ma,maidx = 1,mi,miidx = 1;
double ans = 0; int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin >> n >> m;
for (int i = 1;i <= m;i++) cin >> x[i] >> d[i];
for (int i = 1;i <= n;i++){
pre[i] = pre[i-1]+i-1;
}
for (int i = n;i >= 1;i--){
aft[i] = aft[i+1] + (n-i);
}
ma = pre[1]+aft[1];
for (int i = 2;i <= n;i++){
ll temp = pre[i]+aft[i];
if (temp>ma){
ma = temp;
maidx = i;
}
} mi = pre[1]+aft[1];
for (int i = 2;i <= n;i++){
ll temp = pre[i]+aft[i];
if (temp<mi){
mi = temp;
miidx = i;
}
} for (int i = 1;i <= m;i++){
ans = ans + n*x[i];
if (d[i]<0){
ans = ans + mi*d[i];
}else{
ans = ans + ma*d[i];
}
}
ans = 1.0*ans / n;
cout<<fixed<<setprecision(10)<<ans<<endl;
return 0;
}

最新文章

  1. VS2013 GIT 克隆远程仓库
  2. VS2010的项目配置
  3. mysqld诡异crash
  4. python抓取中文网页乱码通用解决方法
  5. php使用循环创建任意长度数组
  6. solaris知识库
  7. HW3.1
  8. COJ 0346 WZJ的旅行(二)更新动态树分治版本
  9. Ternary Search Tree Java实现
  10. 转载-SQL不同服务器数据库之间的数据操作整理(完整版) .
  11. 【网络协议】TCP交互数据流和数据流成块
  12. css解决IE6,IE7,firefox兼容性问题
  13. session和cookie介绍以及session简单应用
  14. prometheus alert rules文件格式化
  15. chrome启动参数之
  16. qml: 组件复用
  17. tcpdump -i eth0 -n -vvv src or dst port 443
  18. 解决Ubuntu17.04以上系统,yarn init报错
  19. springmvc 动态加载配置文件
  20. 无法启动此程序,因为计算机中丢失 api-ms-win-crt-stdio-l1-1-0.dll 解决

热门文章

  1. mycat查表报错Invalid DataSource:0解决方法
  2. java Class.getResource和ClassLoader.getResource
  3. EditText(2)自定义回车键的行为
  4. EditText(1)EditText的类型和回车键的行为
  5. Enumerable.Union&lt;TSource&gt; 方法
  6. Winform学习知识汇总
  7. 转载--Beautifuisoup的使用
  8. PHP开发心得一
  9. shell编程中一个空格引起的异常
  10. asp.net MVC 和 webForm的区别