2015多校联合训练赛 Training Contest 4 1008
构造题:
比赛的时候只想到:前面一样的数,后面 是类似1,2,3,4,5,6....t这 既是:t+1,t+1...,1,2,3,...t
t+1的数目 可能 很多,
题解时YY出一个N 然后对N 判断。
seg{Li*(Li-1)} = n*n+n-2*k=d;
每次跑sqrt(n)找到 最近的 d ,D_new=d-Li*(Li-1);
这样一定能解的:d 一定是偶数,Li*(Li-1)也一定是偶数,2*1=2;
还有seg(Li)=n;
当Li=1是 Li*Li-Li=0;
加入一些1就好。
思路有了,建议自己实现一下。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long ll; #define N 10234567
int a[N];
int b[N]; int main()
{ int n;
freopen("input.txt","r",stdin);
freopen("out.txt","w",stdout);
while (scanf("%d",&n)!=EOF) //注意我这里 K N 的位置相反
{
int t=;
if (n<=)// 特判 N<=100;
{
printf("%d\n",n);
for (int i=;i<n;i++) printf("%d ",);
printf("%d\n",);
}
else
{
ll k=;
for (int i=;i<=sqrt(*n)+;i++) //由题解 随便指定一个 N--> 就是k
{
ll ttt=(ll) i*(i+)/-n;
if (ttt>=)
{
k=i;
break;
}
}
k++;// 稍微大一点也没关系的
ll tmp=k*(k+)/-n;//题解没除二 ,我除了 ,其实都是一样的 while (tmp)//每次找一个p p*(p-1)<=tmp;
{
int pos=;
for (int i=;i<=sqrt(tmp)+;i++)
{
if (tmp>=(ll) i*(i-)/) pos=i;
else break;
}
a[++t]=pos;
tmp-=(ll) pos*(pos-)/;
} int res=;
for (int i=;i<=t;i++) res+=a[i]; if (res<k) //res一定<=k验证的很多数据
for (int i=;i<=k-res;i++)
a[++t]=; int id=;
for (int i=;i<=t;i++)
for (int j=;j<=a[i];j++)
b[++id]=i; printf("%d\n",id); for (int i=;i<id;i++) printf("%d ",b[i]);
printf("%d\n",b[id]);
}
}
return ;
}
2015多校联合训练赛 Training Contest 4 1008的更多相关文章
- 2015多校联合训练赛 hdu 5308 I Wanna Become A 24-Point Master 2015 Multi-University Training Contest 2 构造题
I Wanna Become A 24-Point Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 ...
- 2015多校联合训练赛hdu 5301 Buildings 2015 Multi-University Training Contest 2 简单题
Buildings Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Tota ...
- hdu 5381 The sum of gcd 2015多校联合训练赛#8莫队算法
The sum of gcd Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) T ...
- hdu 5358 First One 2015多校联合训练赛#6 枚举
First One Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Tota ...
- hdu 5361 2015多校联合训练赛#6 最短路
In Touch Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total ...
- HDU 5358(2015多校联合训练赛第六场1006) First One (区间合并+常数优化)
pid=5358">HDU 5358 题意: 求∑i=1n∑j=in(⌊log2S(i,j)⌋+1)∗(i+j). 思路: S(i,j) < 10^10 & ...
- HDU 5371 (2015多校联合训练赛第七场1003)Hotaru's problem(manacher+二分/枚举)
pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序 ...
- 2014 多校联合训练赛6 Fighting the Landlords
本场比赛的三个水题之一,题意是两个玩家每人都持有一手牌,问第一个玩家是否有一种出牌方法使得在第一回和对方无牌可出.直接模拟即可,注意一次出完的情况,一开始没主意,wa了一发. #include< ...
- HDU OJ 5317 RGCDQ( 2015多校联合训练第3场) 暴力打表+小技巧
题目连接:Click here 题意:在一个[L,R]内找到最大的gcd(f[i],f[j])其中L<=i<j<=R,f[x]表示i分解质因数后因子的种类数.eg:f[10]=2(1 ...
随机推荐
- shell脚本,编程题练习。
题目是:将 文件file为 b+b+b+b+b+b+b+b 变为 b+b=b+b=b+b=b+b 解答方法如下:
- ios xmpp demo
为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中 在AppDelegate.m下这几个方法为: [java] view plaincopy -(void)setupStrea ...
- MAC实现睡眠和休眠唤醒
因为苹果默认为休眠文件加密,Clover 是无法解密的.所以需要经过一些设置才能破除这无节操的加密文件sleepimage.在这之前不得不提下EmuVariableUefi-64.efi 这个驱动.我 ...
- NOIp2018心得
NOIp2018 身为一名只会PJ的蒟蒻 我带着试试的心态(为了省一次中考哈哈哈) 同时报了PJ和TG??! TGD1T1是一道洛谷原题 都是提高组签到题 铺设道路 本蒻好像A了 然而某些dalao们 ...
- luogu2312 解方程 (数论,hash)
luogu2312 解方程 (数论,hash) 第一次外出学习讲过的题目,然后被讲课人的一番话惊呆了. 这个题,我想着当年全国只有十几个满分.....然后他又说了句我考场A这道题时,用了5个模数 确实 ...
- 【Git版本控制】Git使用教程
1.Git的综述 SVN是集中式版本控制系统,版本库集中放在中央服务器上,而干活时用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器.集 ...
- 自动化运维工具Ansible
一.简介 当下有许多的运维自动化工具( 配置管理 ),例如:Ansible.SaltStack.Puppet.Fabric 等. Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务 ...
- rz
Linux系统简单易用的上传下载命令rz和sz sudo yum install lrzsz -y 上传:rz 下载:sz
- laravel中的视图合成器
==================================================================================================== ...
- LeetCode(136) Single Number
题目 Given an array of integers, every element appears twice except for one. Find that single one. Not ...