网上的题解都很奇怪。。

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

设某一种合法分配方案完成后三个数分别变为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. seventBus(封装) 一个巧妙的解决vue同级组件通讯的思路

    如果在你项目中需要多处用到同级组件通讯,而又不想去写繁琐的vuex,可以参考这个小思路.本人在写项目中琢磨出来的,感觉挺好用,分享一下. 1.在utils文件夹下添加BusEvent.js 注释已经很 ...

  2. thrift编译java的问题-(安装thrift0.8.0成功-编译mapkeeper.java成功)

    上一次帖子说了thrift编译java出现错误,由于只用到cpp版的,就将此略过.但是老版本的ycsb不是很好用,于是决定以locall的方式编译mapkeeper供最新版ycsb使用.目前根据 ht ...

  3. 【C】论‘\r’和'\n'的纯粹性

  4. 「LuoguP2252」 取石子游戏(威佐夫博弈

    [P2252]取石子游戏 - 洛谷 题目背景 无 题目描述 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以 ...

  5. 操作 AutoIT:界面与自动化操作结合来简化日常劳动: .Net Reactor验证License,设置License,创建License,截图AutoIt自动化实现。(六)

    自动化操作的稳定性,便利性虽然已经满足了要求,但是页面上呈现的按钮太多了,可以做的更加简单一些. 1. 简化页面的按钮,把5个按钮减少至3个,把Display HID按钮功能整合到create lic ...

  6. zynq交叉编译环境设置

    环境准备 Vmware 虚拟机:ubuntu14.04 下载安装文件 环境设置 按照上面地址下载 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 将das ...

  7. A - Combination Lock

    Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Description Scroog ...

  8. c/c++面试19-22----inline的那些事儿

    19 为什么引入内联函数 a:宏定义为什么效率高 通常替代c语言中表达式形式的宏定义来解决程序函数调用问题,使用的是预处理器实现,没有参数压栈等到做. 缺点: (1) 仅仅进行简单的替换,不能进行参数 ...

  9. jquery中innerheight outerHeight()与height()的区别

    1. .height() 获取匹配元素集合中的第一个元素的当前计算高度值 或 设置每一个匹配元素的高度值(带一个参数). 注意:1).css('height')和.height()之间的区别是后者返回 ...

  10. Android-毛笔的探索与开发

     前言 这篇文章主要是关于移动端毛笔的开发,在平板上有着书写毛笔字贴的效果. 介绍关于毛笔的算法思路. 项目github地址 算法思路分析 曲线拟合算法 利用曲线拟合算法增加虚拟的点,使得笔迹更加光滑 ...