题目大意:题目给定两个数n和m(1<=n<=5000,0<=m<=1e9)要求构造一个数列A,A中元素

  1. 大于等于1,小于等于1e9且满足严格递增
  2. 满足ai+aj=ak的(i,j,k)恰好有m个

如果有没有这样的A输出-1。

分析:如果ai和aj确定,那么ak唯一。也可以说任意两个可以决定第三个。

首先可以猜想当A为1到n的连续自然数时这样的三元组最大。(容易用数学归纳法证明。利用下面红字得到的结论,一个一个加。em。。。)

假如前s个数已经确定为1到s的自然数按顺序的排列,当增加第s+1个数时,满足条件的(x,y,s+1)的个数就是满足as+1-y=x<y的y的个数(已知a1到as就是1到s的自然数,所以ax=x,ay=y),即满足 as+1<2*y 的y的个数。由此可以确定as+1对三元组个数的影响

同时也能得到这样的结论:

用数列Sn表示从1到n 的n个自然数按顺序排列而成的数列可以找到所有满足条件的三元组的数量。那么有:Sn+1-Sn=n/2(向下取整)。

可以先用1,2,3。。。来填充数组,超过时按上面红色的规则添加下一个数。

 #include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX_N=+;
int n,m;
LL a[MAX_N];
int main()
{
int tmp=1e9;
scanf("%d%d",&n,&m);
if(m==){
for(int i=n;i>=;i--) a[i]=tmp,tmp-=;
for(int i=;i<=n;i++) printf("%d ",a[i]);
}
else{
int i;
for(i=;i<=n;i++){
if(m>=(i-)/) a[i]=i,m-=(i-)/;
else break;
}
if(i>n&&m){printf("-1\n");}
else{
int cur;
for(cur=;;cur++) if(a[cur]==) break;
if(m==){
for(int j=n;j>=cur;j--)a[j]=tmp,tmp-=a[cur-]+;
}
else {
a[cur]=a[cur-m]+a[cur-m-];
for(int j=n;j>cur;j--)a[j]=tmp,tmp-=a[cur]+;
}
for(int i=;i<=n;i++) printf("%d ",a[i]);
}
}
}

 欢迎转载和引用

CF 1305E. Kuroni and the Score Distribution的更多相关文章

  1. cf 1305 E. Kuroni and the Score Distribution

    题目传送门:E. Kuroni and the Score Distribution 题目大意:给n和m,输出n个数,这些数里必须要有m对a[i]+a[j]==a[k]  ( i < j < ...

  2. Codeforces 杂题集 2.0

      记录一些没有写在其他随笔中的 Codeforces 杂题, 以 Problemset 题号排序   1326D2 - Prefix-Suffix Palindrome (Hard version) ...

  3. Linux command line exercises for NGS data processing

    by Umer Zeeshan Ijaz The purpose of this tutorial is to introduce students to the frequently used to ...

  4. Scoring and Modeling—— Underwriting and Loan Approval Process

    https://www.fdic.gov/regulations/examinations/credit_card/ch8.html Types of Scoring FICO Scores    V ...

  5. 2016CVPR论文集

    http://www.cv-foundation.org/openaccess/CVPR2016.py ORAL SESSION Image Captioning and Question Answe ...

  6. win7下使用Taste实现协同过滤算法

    如果要实现Taste算法,必备的条件是: 1) JDK,使用1.6版本.需要说明一下,因为要基于Eclipse构建,所以在设置path的值之前要先定义JAVA_HOME变量. 2) Maven,使用2 ...

  7. CVPR2016 Paper list

    CVPR2016 Paper list ORAL SESSIONImage Captioning and Question Answering Monday, June 27th, 9:00AM - ...

  8. ProbS CF matlab源代码(二分系统)(原创作品,转载注明出处,谢谢!)

    %ProbS clear all;%% 数据读入与预处理 data = load('E:\network_papers\u1.base');test = load('E:\network_papers ...

  9. CF Round#240题解

    第一次参加CF的比赛,MSK19.30,四个小时的时差真心累,第一次CODE到这么夜-- 一开始做了A,C两题,后来做B题的时候我体力和精神集中度就很低了,导致一直WA在4-- 今天起床后再刷B,终于 ...

随机推荐

  1. 27)PHP,视图

    其实,视图就是一堆select形成的一个表格,但是这个表格也是存在一个数据库里面的,但是,他不会和一般的表格似得在数据库中显示,就好像虚拟存储器的那种感觉一样. 比如  必看我的一下句子 create ...

  2. Linux命令:ldd

    1.ldd不是一个可执行程序,而是一个shell脚本. zlf@ubuntu:~/$ which ldd /usr/bin/ldd zlf@ubuntu:~/$ file /usr/bin/ldd / ...

  3. javascript 实现最简单的阶乘!

    <script type='text/javascript'>      window.onload =  get(5);   function  get(n){   document.w ...

  4. Spring Boot集成全局唯一ID生成器

    流水号生成器(全局唯一 ID生成器)是服务化系统的基础设施,其在保障系统的正确运行和高可用方面发挥着重要作用.而关于流水号生成算法首屈一指的当属 Snowflake雪花算法,然而 Snowflake本 ...

  5. OSI体系结构(七层)

    OSI体系结构,意为开放式系统互联.国际标准组织(国际标准化组织)制定了OSI模型.这个模型把网络通信的工作分为7层,分别是物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 1至4层被认为 ...

  6. 二评北科团委:“斩首计划”进行时,其用心也毒

    近日,在同学们和热心群众的共同努力下,各高校相继悬崖勒马,北大马会.北语新新青年.人大新光等进步社团均顺利注册.而北科团委倒行逆施,可谓一枝独秀,对于齐民学社的同学们的诉求,不仅不予以回应,反而采取表 ...

  7. 17)将index.php中的代码放到Framework中封装起来

    目录结构: 发生改动的类代码: 新增类:Framework.class.php <?php /** * Created by PhpStorm. * User: Interact * Date: ...

  8. Mybatis/ibatis基础知识

    Tip:mapper.xml中sql语句不允许出现分号! 1.#和$符号的区别 #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是 ...

  9. python django 模板语言循环字典

    urls.py from django.conf.urls import url from django.contrib import admin from cmdb import views url ...

  10. mysql中not exists的简单理解

    http://www.cnblogs.com/glory-jzx/archive/2012/07/19/2599215.html http://sunxiaqw.blog.163.com/blog/s ...