首页 > 其他分享 >ARC169D 做题记录

ARC169D 做题记录

时间:2024-10-11 22:01:38浏览次数:1  
标签:取模 ch 记录 ll ARC169D while isdigit define

link

假定 \(a_{1\sim n}\) 不对 \(n\) 取模,设最终状态为 \(b_{1\sim n}\),令 \(S = \sum\limits_{i = 1} ^ n (b_i - a_i)\),应满足以下条件:

  • \(b_i \bmod n\) 两两不同

  • \(m | S\)

  • \(\max\limits_{i = 1} ^ n (b_i - a_i)\)

先对 \(a\) 排序,那么可以发现最优情况下 \(b\) 也是有序的。

  • 再一个结论:\((b_1,b_2,\cdots, b_n) = (x, x + 1, \cdots, x + n - 1)\)

考虑调整法,如果 \(b_1 + n\le b_n\),令 \(b_1' = b_n - n,\ b_n' = b_1 + n\) 再排序,依然满足条件。

那么我们需要令 \(x\) 最小,枚举即可。

  • 启示:不取模避免环的讨论,转化为其他条件。
点击查看代码
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define mkp make_pair
#define pir pair <ll, ll>
#define pb emplace_back
#define i128 __int128
void rd(ll &x) {
	char ch;
	while(!isdigit(ch = getchar())) ;
	x = ch - '0';
	while(isdigit(ch = getchar()))
		x = (x << 1) + (x << 3) + ch - '0';
}
using namespace std;
const ll maxn = 5e5 + 10, inf = 1e18;
ll n, m, a[maxn], w, ret, sum;
multiset <ll> st;
int main() {
	scanf("%lld%lld", &n, &m); w = n * (n - 1) / 2;
	for(ll i = 1; i <= n; i++)
		scanf("%lld", a + i), w -= a[i];
	w = (w % n + n) % n; ll stp = -1;
	for(ll i = 0; i < n; i++)
		if(i * m % n == w) { stp = i; break; }
	if(stp == -1) { puts("-1"); return 0; }
	sort(a + 1, a + 1 + n); ll d = 0;
	for(ll i = 1; i <= n; i++)
		d = max(d, a[i] - i + 1);
	for(ll i = 1; i <= n; i++) {
		sum += i - 1 + d - a[i];
		ret = max(ret, i - 1 + d - a[i]);
	}
	while(sum % m)
		sum += n, ++ret;
	ll g = m / __gcd(n, m);
	while(sum < ret * m)
		sum += n * g, ret += g;
	printf("%lld", sum / m);
	return 0;
}

标签:取模,ch,记录,ll,ARC169D,while,isdigit,define
From: https://www.cnblogs.com/Sktn0089/p/18459444

相关文章

  • 2024西北工业大学noj(C语言)记录
    作者是零基础捏,仅作个人学习记录,多数题目会有更优解。有些题目虽然AC了但是可能不严谨。有错误请务必指正我我做完之后会看去年学长发的贴子,各位可以直接看他们的,他们的算法确实更优,有些打的注解就是看过他们的文章后加入的。如果各位有优解可以在评论区或者私信教我hh......
  • Issac_GYM重要过程记录
    1下载相关文件进入github中下载相关的文件https://github.com/leggedrobotics/legged_gym2加载自己绘制的URTL文件这个链接用来下载宇树的Go2模型机器人https://github.com/unitreerobotics/unitree_rl_gym/tree/main下载好了urdf文件,将其中resources/robots/go2文件复制......
  • [自用] 虚拟机windows11-x64,安装MySQL 8.0.32,记录
    前面忘截图了提示要求电脑里安装VS2015/2017/2019,但虚拟机里只有VS2013。网上说可以一起装,但是我虚拟机配置不太行,再说吧,不行用我自己笔记本,虽然也有点菜,但比虚拟机强。虚拟机配置安装之后的配置密码三个旧的特殊符号这少一步,写的是点击execute来应用配置apply......
  • sentinel接入记录
       1.引入pom依赖   <!--SpringCloudailibabasentinel-datasource-nacos持久化需要用到--><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>......
  • 大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(已更完)Kylin(正在更新…)章节内容上节......
  • CF记录
    CF2019(div2,vp)比赛时网站炸了两次,有一次甚至连那个Oops的页面都没看到。/fnD.Speedbreaker做法比较多的一题。首先有一个带log但是比较简单的做法。求出\(a\)的后缀min\(s_i\)和前缀min\(p_i\),当出发点为\(x\)时,设\[b_i=\begin{cases}a_i=p_i,&i<x\\a_i=\m......
  • The 3rd Universal Cup 做题记录 (2)
    The3rdUniversalCup做题记录Stage0-Stage9:The3rdUniversalCup做题记录(1)Stage10-Stage19:The3rdUniversalCup做题记录(2)The3rdUniversalCup.Stage10:WestLakeA.ItalianCuisine复制一遍,枚举\(i\)维护右端点\(j\)。要求\((x,y)\)到过\((......
  • 2024.10 做题记录
    10.1gym104922I模拟赛T4。wqs二分,维护dp值和取到dp值的\(k\)的区间。倒序记录方案,要满足能落到合法区间中。10.2模拟赛T3建子序列自动机,DAG上dp并按字典序出边贪心记录方案。DAG链剖分。\(u\)向\(2f_v\gef_u\)的\(v\)连边,形成内向树。重边倍增,轻边跳一次......
  • 【学校训练记录】十月个人训练赛1题解
    A只需按照题目意思扩展h倍即可,先记录初始字符,打印时扩展为2*h根据题目公式打印`include<bits/stdc++.h>defineintlonglongusingnamespacestd;constintMAXN=100005;intn;inta[MAXN];charmp[105][105];signedmain(){inth,w;cin>>h>>w;for(inti=......
  • ant-design 使用Modal组件报错问题记录
    打开modal组件会提示如下报错信息高版本chrome浏览器会出现这个问题 原因是:不能在获得焦点的元素或其祖先上使用aria-hidden解决方案:全局添加如下CSS,暂时将Modal中该属性的元素隐藏掉.ant-modaldiv[aria-hidden="true"]{display:none!important;} ......