E - Chinese Restaurant abc268

本文介绍了一种解决n个人围坐一桌,每个人有特定菜品喜好的问题,通过分析每个人的沮丧值变化,利用算法找出调整座位使得所有人满意度最大化的方法。核心是将函数分为线性部分并独立处理系数,最终给出最小沮丧值的计算过程。
摘要由CSDN通过智能技术生成

link
题意:n个人围成一桌,编号0 到 n-1, 每个人有自己喜欢的菜品,每个人收到的沮丧值是喜欢的菜品距自

思路:
考虑单独一个人的沮丧值关系,如果顺指针移动桌子,那么第(p[i] - i + n) % n 次此人沮丧值为零。
即为函数的零点。函数长这样
零点在左
或者在中间
在右边
最多分成三段(一次函数),我们将系数独立起来,然后累加。

code:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 4 * 1e5 + 10, mod = 998244353;
int n, m;
int sk[maxn], sb[maxn], p[maxn], cst[maxn];
void add(int l, int r, int k, int b) {
	if (l > r) return;
	sk[l] += k;
	sb[l] += b;
	sk[r + 1] -= k;
	sb[r + 1] -= b;
}
void add(int v) {
	if (v < n / 2) {
		add(0, v - 1, -1, v);
		add(v, v + n / 2, 1, -v);
		add(v + n / 2 + 1, n - 1, -1, n + v); // n + v 尤其精妙,分奇偶进行讨论,合并后就是n + v; 
	} else {
		add(v - n / 2, v, -1, v);
		add(v + 1, n - 1, 1, -v);
		add(0, v - n / 2 - 1, 1, n - v);
	}
}
signed main() {
	//freopen("w.ans", "w", stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	//int tt; cin >> tt; while(tt--) solve(); 
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> p[i];
		cst[i] = (p[i] - i + n) % n;
		add(cst[i]);
	}
	for (int i = 1; i < n; i++) {
		sb[i] += sb[i - 1];
		sk[i] += sk[i - 1];
	}
	int ans = 1e15, sum = 0;
	for (int i = 0; i < n; i++) {
		ans = min(ans, sk[i] * i + sb[i]);
	}
	cout << ans << endl;
	return 0;
/**
 *    Alogrithm:
 *    201
 *    author:  whc
 *    created: 2022年9月12日10:58:05 
**/
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sbert-base-chinese-nli是一种基于中文的预训练模型,用于处理中文自然语言推理(Natural Language Inference)任务。该模型基于Sentence-BERT(SBERT)架构,在大规模的中文文本数据上进行了预训练。 SBERT模型是采用Transformer网络结构的句子嵌入模型,通过预训练将句子映射到一个高维空间中的向量表示。sbert-base-chinese-nli是其中的一个中文版本,被训练用于判断两个句子之间的关系,包括蕴含、中立和矛盾三种情况。 sbert-base-chinese-nli的输入是一对中文句子,输出是一个向量,表示这对句子之间的关系。该模型通过学习句子之间的语义信息和相似性,在句子级别上进行推理。 sbert-base-chinese-nli的应用非常广泛。例如,在问答系统中,可以使用这个模型判断用户提问和文档中的答案之间的相关程度。在文本分类任务中,可以使用该模型对文本进行分类。在信息检索领域,可以使用它来进行相似文档的匹配。 这个模型的好处是,它可以捕捉到句子之间更深层次的语义关系,而不仅仅是基于表面上的字词相似性。这使得它在处理含有歧义或隐含信息的句子时表现更好。 总结来说,sbert-base-chinese-nli是一个基于中文的预训练模型,用于处理中文自然语言推理任务。它通过学习句子之间的语义信息和相似性,可以判断句子之间的关系,并在问答系统、文本分类和信息检索等任务中有广泛应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值