网上的题解都很奇怪。。

经过相当长时间的思考,有了一个有效(自认为)的解法

设某一种合法分配方案完成后三个数分别变为a,b,c,其中a>=c,b>=c

此时如果让c减1,让a或b加1(设让t加了1),那么答案增加的值为2t+1-2c+1-7=2t-2c-5

令其>0,则t-c>2.5

由于t,c是整数,因此t-c>=3

也就是说,如果这种方案中最大值-最小值>=3,且最小值还能变得更小,那么一定存在一种更优方案(就是让c减1,让最大数加1后得到的方案),也就是说它一定不是最优方案

那么只需要考虑两种可能的最优方案:

1.最小值不能变得更小了;此时显然最优方案是把d全部加到三个数中最大数上

2.最大值-最小值<3;此时只要枚举最大值-最小值和次大值-最小值,然后O(1)求出答案的3个数并验证即可

A掉了。。。

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
//#include<cassert>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
ll calc(ll a,ll b,ll c)
{
return a*a+b*b+c*c+*min(a,min(b,c));
}
vector<ll> p,q;
ll solve(ll a,ll b,ll c,ll d)
{
ll i,j,s=c+a+b+d,an=-0x3f3f3f3f;
q.clear();q.pb(a);q.pb(b);q.pb(c);
sort(q.begin(),q.end());
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
if(s-i-j>=&&(s-i-j)%==)
{
p.clear();
p.pb((s-i-j)/);
p.pb(p[]+i);p.pb(p[]+j);
sort(p.begin(),p.end());
if(p[]>=q[]&&p[]>=q[]&&p[]>=q[])
{
an=max(an,calc(p[],p[],p[]));
}
}
}
}
return an;
}
ll T,a,b,c,d;
int main()
{
//freopen("/tmp/1538/1.in","r",stdin);
//freopen("/tmp/1538/1.ans","w",stdout);
scanf("%lld",&T);//assert(3<=T&&T<=7);
while(T--)
{
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
p.clear();p.pb(a);p.pb(b);p.pb(c);
sort(p.begin(),p.end());
ll a1=calc(p[],p[],p[]+d);
printf("%lld\n",max(a1,solve(a,b,c,d)));
}
return ;
}

bzoj1538 [NWERC2017]High Score的更多相关文章

  1. Lucene的评分(score)机制研究

    首先,需要学习Lucene的评分计算公式—— 分值计算方式为查询语句q中每个项t与文档d的匹配分值之和,当然还有权重的因素.其中每一项的意思如下表所示: 表3.5 评分公式中的因子 评分因子 描 述 ...

  2. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  3. 关于一道数据库例题的解析。为什么σ age>22 (πS_ID,SCORE (SC) ) 选项是错的?

    本人大二学子.近段时间在做数据库复习题的时候遇到一道题,如下. 有关系SC(S_ID,C_ID,AGE,SCORE),查找年龄大于22岁的学生的学号和分数,正确的关系代数表达式是( ) . ⅰ. πS ...

  4. 利用SCORE法则来总结一次偷懒的单元测试过程

    最近遇到一个单元测试的问题,本周正好学个了一个SCORE法则,这里正好练练手应用此法则将问题的前因后果分享给大家. S:背景  代码要有单元测试,检测的标准就是统计代码的单元测试覆盖率,程序员需要达到 ...

  5. Hiho coder 1236 2015 北京网络赛 Score

    五维偏序..一开始被吓到了,后来知道了一种BITSET分块的方法,感觉非常不错. 呆马: #include <iostream> #include <cstdio> #incl ...

  6. Java-集合-第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList(); l

    第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; ...

  7. 第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList();

    list.add(new Student("Tom", 18, 100, "class05")); list.add(new Student("Jer ...

  8. Competition-based User Expertise Score Estimation-20160520

    1.Information publication:sigir 2011 author:Jing Liu Harbin Institute of TechnologyMicrosoft Researc ...

  9. linux 终端报错 Out of memory: Kill process[PID] [process name] score问题分析

    从Out of memory来看是内存超出了,后面的 Kill process[PID] [process name] score好像和进程有关了,下面我们就一起来看看linux 终端报错 Out o ...

随机推荐

  1. Appium java 环境配置

    一.安装node.js 下载地址:http://pan.baidu.com/s/1qYyNDm8 点击安装,next下一步就ok. 安装完成,命令行输入:npm 这样显示的话就ok了.  二.下载Ap ...

  2. Java中锁的内存语义

    我们都知道,Java中的锁可以让临界区互斥执行.锁是Java并发编程中最重要的同步机制,锁除了可以让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息.下面是锁的释放-获取的代码: C ...

  3. linux文件查找(find,locate)

    文件查找: locate:       非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快   find:       实时       精确   ...

  4. C++对C的增强

    一.namespace命名空间 1.C++命名空间基本常识所谓namespace,是指标识符的各种可见范围.c++标准程序库中的所有标识符都被定义与一个名为std的namespace中. 1.1:&l ...

  5. 级联MobileNet-V2实现CelebA人脸关键点检测(转)

    https://blog.csdn.net/u011995719/article/details/79435615

  6. PHP开发api接口 -- 安全验证 生成签名

    转载博客 ————. http://blog.csdn.net/li741350149/article/details/62887524 REST模式中HTTP请求方法(GET,POST,PUT,DE ...

  7. python在三引号中使用变量

  8. 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)

    首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考  上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...

  9. twincat3新建cpp提示"在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"

    自己之前在windows下面写过一些c++的函数,想在倍福工控机上直接使用,发现添加了.cpp和.h文件后无法完成编译,会提示 在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#includ ...

  10. C. Pearls in a Row

    C. Pearls in a Row time limit per test 2 seconds memory limit per test 256 megabytes input standard ...