题目链接 1384 -- Genius ACM

给定一个整数 m,对于任意一个整数集合 S,定义“校验值”如下:
从集合 S 中取出 m 对数(即 2*M 个数,不能重复使用集合中的数,如果 S 中的整 数不够 m 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值 就称为集合 S 的“校验值”。
现在给定一个长度为 n 的数列 A 以及一个整数 k。我们要把 A 分成若干段,使得 每一段的“校验值”都不超过 k。求最少需要分成几段。

#include<bits/stdc++.h>
using namespace std;
#define maxn 600005
#define LL long long
int a[maxn],b[maxn],c[maxn];
int n,m;
LL k;
void mem(int l,int mid,int r){
   ,zz=r,ii=l;
   while(i<=mid&&j<=r){
      if(b[i]<b[j]) c[ii++]=b[i++];
      else c[ii++]=b[j++];
   }
   while(i<=mid) c[ii++]=b[i++];
   while(j<=r) c[ii++]=b[j++];
}
bool xxx(int l,int mid,int r){
   mem(l,mid,r);
   LL ans=,i=,j=l,kk=r;
   while(j<kk&&i<m){
      LL z=;
      z=1LL*(c[j++]-c[kk--]);
      ans+=z*z;
      i++;
   }
   ;
   ;
}
bool work(int l,int r,int rr){
   ;j<=r;j++) b[j]=a[j]; // 每次只用在b后面加上我们后来倍增的一段区间
   sort(b+rr+,b+r+);  // 把增加的一段排序 后面可以用归并
   ;
   ;
}
int main(){
   int t;
   cin>>t;
   while(t--){
      scanf("%d%d%lld",&n,&m,&k);
      ;j<=n;j++){
         scanf("%d",&a[j]);
      }
      ;
      ,p=,r=l;
      b[]=a[];
      while(l<=n){
         if((r+p)<=n&&work(l,r+p,r)){
             for(int i=l;i<=r+p;i++) b[i]=c[i];  //把每次符合的序列按顺序放在b里面
             r+=p;
             p*=;
         };
         ){
            l=r+;
            r=l;
            p=;
            ans++;
         }
      }
      cout<<ans<<endl;
   }
}

最新文章

  1. Apache日志按天切割
  2. python3中返回字典的键
  3. Android Studio快捷键每日一练(3)
  4. VBA提高速度的技巧
  5. Java构造函数的继承问题
  6. 国内大学毕业论文LaTeX模板集合
  7. 最初的ajax案例
  8. Android---控制设备照相机
  9. 从Properties得到数据到gson转换为json
  10. 高性能 Java 缓存库 — Caffeine
  11. 值得珍藏的HTTP协议详解
  12. ASP.NET Core在Azure Kubernetes Service中的部署和管理
  13. Tomcat系列(9)——Tomcat 6方面调优(内存,线程,IO,压缩,缓存,集群)
  14. 2、Linux安装jmeter
  15. Vue基础01vue的基本示例,vue的双向数据绑定,vue中常见的几种用法,vue相关常见指令
  16. python3编写网络爬虫19-app爬取
  17. Docker的概念术语(2)
  18. windows10如何查看wifi密码
  19. Check failed: mdb_status == 0 (13 vs. 0) Permission denied
  20. iOS-CoreLocation简单介绍(转载)

热门文章

  1. C# DataTable详解
  2. Tomcat Windows 系统下安装及注意事项
  3. [转帖]整理:Windows系统下的奇技淫巧大汇总
  4. Linux 下面 PG 的 uuid-ossp 包安装办法
  5. 解决ERROR 1130: Host &#39;192.168.11.1&#39; is not allowed to connect to this MySQL
  6. 修改tomcat控制台title的方法
  7. elasticsearch的映射
  8. ansible的playbook简单使用
  9. peewee 事物 回滚
  10. SpringJdbc框架