首页 > 其他分享 >CF1758D 题解

CF1758D 题解

时间:2023-04-13 18:23:00浏览次数:77  
标签:CF1758D int 题解 sum long -- ans

前言

题目传送门!

更好的阅读体验?

用一种非常麻烦的做法把自己写自闭了,和题解区不一样,但是方法困难很多。

思路

代码

属于混乱邪恶了,凑合着看看。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n, ans[300005];
long long calc()
{
	long long sum = 0;
	for (int i = 1; i <= n; i++) sum += ans[i];
	return sum - 1ll * (ans[1] - ans[n]) * (ans[1] - ans[n]);
}
void solve()
{
	scanf("%d", &n);
	if (n == 3) {puts("3 6 7"); return;}
	int x = ceil((1.0 * (-2 * n) / (n + 1) + n) / 2.0);
	ans[1] = x; for (int i = 2; i <= n; i++) ans[i] = x + i;
	long long sum = calc();
	if (n & 1)
	{
		for (int i = 1; i <= n; i++) ans[i] <<= 1;
		sum = -calc();
		for (int i = 1; i <= n; i++) ans[i] += (sum / n);
		sum %= n;
		
		for (int i = n - 1; sum && i >= 2; i--)
			while (sum && ans[i] + 1 < ans[i + 1])
				sum--, ans[i]++;
	}
	else
	{
		for (int i = 2; sum && i < n; i++)
			while (ans[i] > ans[i - 1] + 1)
				sum--, ans[i]--;
	}
	for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
	puts("");
}
int main()
{
	int T;
	scanf("%d", &T);
	while (T--) solve();
	return 0;
}

希望能帮助到大家!

标签:CF1758D,int,题解,sum,long,--,ans
From: https://www.cnblogs.com/liangbowen/p/17315955.html

相关文章

  • ubuntu 20.04 基于docker快速搭建中文 的一些问题解决 Utilization of discoverer pro
    1.Utilizationofdiscovererprocessesover75%解决办法问题状态如下zabbixserver在开启Discovery功能后,zabbixweb页面报警提示:“Zabbixserver:Ulitizationofdiscovererprocessesover75%”。原因:每个discovery任务占用一个discovery进程,但是zabbixserver默认只配置了一......
  • scikit-learn 中 Boston Housing 数据集问题解决方案
    scikit-learn中BostonHousing数据集问题解决方案在部分旧教程或教材中是sklearn,现在【2023】已经变更为scikit-learn作用:开源机器学习库,支持有监督和无监督学习。它还提供了用于模型拟合、数据预处理、模型选择、模型评估和许多其他实用程序的各种工具。安装pipinsta......
  • 题解:C Future
    题目:给n个范围,第i个范围选pi,然后定义特征值k=p1+p2+...+pn。这次的开心度就是A(k%m)。m是给的一个数组A,长度为m。 要求:  就是个全排列组合的问题,找规律。 举个例子,有n个礼物,分别是(L1,R1)(L2,R2)(Ln,Rn)每个区间取个数然后相加,所有出现的结果,其实就是A[L1+L2+........
  • [ARC127E] Priority Queue 题解
    首先我们每次加入的数必定是一个\(1\sima\)的排列,但从排列角度考虑的话非常复杂,因为\(s\)是一个集合。所以我们考虑最后能剩下哪些数。考虑最后剩下的集合为\(\{a_i\}\),其中\(a_i<a_{i+1}\),显然这个集合里面的元素个数为\(A-B\)。那么我们会发现一件事情:我们按上升序依......
  • Grid++Report 锐浪报表开发常见问题解答集锦
    Grid++Report锐浪报表开发常见问题解答集锦,锐浪报表报表对VBAccessC#Delphi支持都非常好,也可用于BS架构。Grid++Report适用于C/S报表与WEB报表(B/S报表)开发桌面报表与WEB报表共享相同的开发知识与资源,大大提高报表开发效率。另特别说明一点,在Access中使用Grid++Report锐浪......
  • 【BUG】ExtJS 的Tab Reorder 插件持续更新布局问题解决办法 (Solution to layout issue
    更新记录2023年4月13日初始化。ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html问题不停的拖动tab栏,会不断更新布局。Draggingthetabbarcontinuouslywillupdatethelayoutconstantly.解决办法进入ExtJS包,打开ux目录下的BoxReorderer.js文件,找......
  • abc247_f Cards 题解
    Cards题意有\(N\)张卡片,每张卡片上都写有两个数字,第\(i\)张卡片上的数字分别为\(P_i,Q_i\)。同时,\(P=(P_1,P_2,\dots,P_N)\)和\(Q=(Q_1,Q_2,\dots,Q_N)\)都是\((1,2,\dots,N)\)的全排列。我们需要在\(N\)张卡片中选出一些卡片,并且\(1,2,\dots,N......
  • 2020计蒜之道预赛第二场-群星 题解
    题目描述蒜头君是一个P社玩家,每天从计蒜客下班回家之后的第一件事情就是打开《群星》,开始继续他的第四天灾之旅。这次他把注意力集中到了银河市场里面。银河市场里面商品的价格都通过以下公式计算:$$P=B*basePrice/S$$$$price=\displaystyle\frac{buy}{sell}*base......
  • 问题解决
    遇到的问题1.解决方法:将@RequestParam改为@PathVariable:@RequestParam接收的是?参数,@PathVariable接收直接参数2.Stream方法报红解决办法:jdk版本改为8版本及以上3.解决方法:导入以下依赖<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifac......
  • Win7资源管理器自动关闭或者重启问题解决办法
    方法1:故障现象:提示win7资源管理器已停止工作解决办法:1.打开任务管理器,点“文件”,再点”新建任务”,在”打开”后面打上explorer.exe确定2.找到WinRAR,点”选项”,”设置”,”综合”,“把WinRAR整合到资源管理器中”的勾消除就行了方法2故障现象:Windows7出现资源管理器自......