7.15洛谷蓝题

二分答案的两个模板:

1.最小值的最大化:

#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
using namespace std;
typedef long long ll;
priority_queue<int, vector<int>, greater<int>> pq;
map<int, int>mp;
const int N = 2e6 + 10;
ll l, n, k;
ll a[N];
ll pd(int x)
{
	ll t = 0, cnt = 0;
	for (int i = 1; i <= n; i++)
	{
		if (a[i] - t < x)cnt++;
		else
		{
			t = a[i];
		}
	}
	return cnt <= k;
}
ll cz(int ls, int r)
{
	while (ls < r)
	{
		ll mid = (ls + r + 1) >> 1;
		if (pd(mid))ls = mid;
		else
			r = mid - 1;
	}
	return ls;
}
void solve()
{
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin >> l >> n >> k;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	ll ans = cz(0, l);
	cout << ans << endl;

	return 0;
}

2.最大值的最小化

#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
using namespace std;
typedef long long ll;
priority_queue<int, vector<int>, greater<int>> pq;
map<int, int>mp;
const int N = 2e6 + 10;
ll l, n, k;
ll a[N];
ll pd(int x)
{
	ll t = 0;
	if (x == 0)return 0;
	for (int i = 1; i <= n; i++)
	{
		t += (a[i + 1] - a[i] - 1) / k;
	}
	return t <= k;
}
ll cz(int ls, int r)
{
	while (ls < r)
	{
		ll mid = (ls + r) >> 1;
		if (pd(mid))r = mid;
		else
			ls = mid + 1;
	}
	return ls;
}
void solve()
{
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin >> l >> n >> k;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	ll ans = cz(0, l);
	cout << ans << endl;

	return 0;
}

A - Insert

代码:

void solve()
{
	cin >> n >> k >> x;
	vector<int>a(N);
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	a.insert(a.begin() + k + 1, x);
	for (int i = 1; i <= n + 1; i++)
		cout << a[i] << " ";
	return;
}

P2512 [HAOI2008] 糖果传递 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目虽少,难度却不小

推导如下:

求得全部的和sum,平均值ave=sum/n,如图我们可以看出

ave=a1+x1-x2=a2+x2-x3=a3+x3-x4=an+xn-x1

再推导:

x1=x1;

x2=a1+x1-ave;

......;

xn=(a1-ave)+...+(an-1-ave)+x1;

x1=x1+c1;

x2=x1+c2

xn=cn+x1;

可以得到cn,n=1时c1=0,n>1时cn=cn-1-an-1-1;

取中值时最大

AC:

#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
using namespace std;
typedef long long ll;
priority_queue<int, vector<int>, greater<int>> pq;
map<int, int>mp;
const int N = 2e6 + 10;
ll n;
ll a[N], c[N];
void solve()
{
	cin >> n;
	ll sum = 0;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		sum += a[i];
	}
	ll ave = sum / n;
	for (int i = 2; i <= n; i++)
	{
		c[i] = c[i - 1] + a[i - 1] - ave;
	}
	ll ans = 0;
	sort(c + 1, c + 1 + n);
	for (int i = 1; i <= n; i++)
	{
		ans += abs(c[1 + n >> 1] - c[i]);
	}
	cout << ans << endl;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();


	return 0;
}

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Camunda是一个开源的工作流引擎,可以用于管理和执行各种类型的业务流程。作为全球范围内广泛使用的工作流引擎,Camunda非常重视其国际化和本地化的能力。为了满足中国用户的需求,Camunda团队已经开始进行Camunda 7.15的汉化工作。 Camunda 7.15汉化的目标是提供一个完全汉化的用户界面,使中国用户能够更轻松地使用和管理Camunda工作流引擎。这意味着所有的菜单、标签、按钮等用户界面元素都将以中文显示。此外,Camunda还将提供中文的文档、教程和示例,以帮助中国用户更好地理解和使用Camunda。 为了实现这个目标,Camunda团队正在进行大量的翻译工作。他们正在对Camunda的用户界面进行全面的翻译,包括对各个菜单和标签进行翻译,确保所有的界面元素可以用中文正确显示。此外,他们还在翻译文档、教程和示例,以便中国用户能够更好地理解Camunda的功能和用法。 值得一提的是,Camunda 7.15汉化工作并不仅仅是简单的翻译工作。团队还在努力确保汉化后的用户界面和功能都能够符合中国用户的需求和习惯。他们将在翻译过程中参考中国用户的反馈和建议,以确保汉化后的Camunda工作流引擎能够更好地适应中国用户的使用习惯。 总之,Camunda团队正在积极致力于Camunda 7.15的汉化工作,旨在为中国用户提供一个更友好和便捷的工作流引擎。希望通过这一汉化工作,能够促进Camunda在中国的应用和推广,为中国用户提供更好的工作流管理和执行体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值