Educational Codeforces Round 82 (Rated for Div. 2)

Educational Codeforces Round 82 (Rated for Div. 2)

比赛链接

A - Erasing Zeroes

水题,去记录第一个1出现的位置和最后一个1出现的位置,输出之间的0的数目

#include<bits/stdc++.h>
 
using namespace std;
 
char orin[200];
 
int main(void)
{
	//freopen("abc.in","r",stdin);
	int T, first, last, cnt;
	scanf("%d", &T);
	while (T--)
	{
		first = -1;
		last = -1;
		cnt = 0;
		scanf("%s", orin);
		for (int i = 0; orin[i]; ++i)
		{
			if (first == -1 && orin[i] == '1')
				last = first = i;
			else if (orin[i] == '1')
				last = i;
		}
		if (first != -1)
		{
			for (int i = first; i <= last; ++i)
				if (orin[i] == '0')
					++cnt;
		}
		printf("%d", cnt);
		if (T)
			printf("\n");
	}
}
B - National Project

去计算需要铺的好路的数目,用好路的数目除以好的日子向上取整-1算出一共循环的次数,再比较是否这些循环的日子里,坏日子所铺的路加上铺的好路的总数大于所需长度,如果不够,则要继续铺路直到达到要求

#include<bits/stdc++.h>
 
using namespace std;
 
long long n, g, b,t,good;
 
long long Ceil(long long a, long long b)
{
	if (a % b == 0)
		return a / b;
	return a / b + 1;
}
 
int main(void)
{
	int T;
	long long result;
	scanf("%d", &T);
	while (T--)
	{
		scanf("%lld%lld%lld", &n, &g, &b);
		t = n;
		n = (n + 1) / 2;
		result = Ceil(n, g) - 1;
		good = result * (g + b) + n - result * g;
		if (result * b + n < t)
			good += t - result * b - n;
		printf("%lld", good);
		if (T)
			printf("\n");
	}
}
C - Perfect Keyboard

类似于数组建树的思想,每次如果有相邻的未访问过的字母,就把他放在前一个字母的左边或者右边,如果前一个字母的周围已经放置了两个字母,或者已访问字母的前一个字母不是他的周围已安置的字母,则输出NO,否则则从左到右输出安置字母,剩下未安置字母随意输出

#include<bits/stdc++.h>
 
int left[27], right[27];
char al[26];
bool vis[26];
char orin[300];
 
void P(int x)
{
	if (left[x] != -1)
		P(left[x]);
	putchar(al[x]);
}
 
int main(void)
{
	for (int i = 0; i < 26; ++i)
		al[i] = i + 'a';
	int T;
	bool flag;
	scanf("%d", &T);
	while (T--)
	{
		flag = 1;
		memset(left, -1, sizeof(left));
		memset(right, -1, sizeof(right));
		memset(vis, 0, sizeof(vis));
		scanf("%s", orin);
		vis[orin[0] - 'a'] = 1;
		for (int i = 1; orin[i] && flag; ++i)
		{
			if (!vis[orin[i] - 'a'])
			{
				if (left[orin[i - 1] - 'a'] == -1 && right[orin[i] - 'a'] == -1)
				{
					left[orin[i - 1] - 'a'] = orin[i] - 'a';
					right[orin[i] - 'a'] = orin[i - 1] - 'a';
				}
				else if (right[orin[i - 1] - 'a'] == -1)
				{
					right[orin[i - 1] - 'a'] = orin[i] - 'a';
					left[orin[i] - 'a'] = orin[i - 1] - 'a';
				}
				else
					flag = 0;
				vis[orin[i] - 'a'] = 1;
			}
			else if (orin[i - 1] - 'a' != left[orin[i] - 'a'] && orin[i - 1] - 'a' != right[orin[i] - 'a'])
				flag = 0;
		}
		if (!flag)
			printf("NO");
		else
		{
			printf("YES\n");
			P(orin[0] - 'a');
			for (int i = right[orin[0] - 'a']; i != -1; i = right[i])
				putchar(al[i]);
			for (int i = 0; i < 26; ++i)
				if (!vis[i])
					putchar(al[i]);
		}
		if (T)
			putchar('\n');
	}
}
D - Fill The Bag

本质上还是一个二进制的计算,看所给的数字能否填满需要数字m的二进制的空缺,这里用bit数组去记录各个位上拥有的数字数(这里计算时要加eps,否则会wa),然后遍历一次需要数字,如果需要则在对应的bit位上减1,再遍历一遍bit数组,大于等于2则后一位加上bit[i/2](合成过程),小于0,则向后寻找是否可以拆分,设拆分位置为i,起始位置为x,result+=i-x,如果没有可拆分的数字则输出NO

#include<bits/stdc++.h>
 
typedef long long ll;
 
ll n, m;
 
ll bit[65];
int result;
 
bool temp(int x)
{
	for (int i = x + 1; i < 65; ++i)
	{
		if (bit[i]>0)
		{
			--bit[i];
			for (int j = x; j < i; ++j)
				++bit[j];
			result += i - x;
			return true;
		}
	}
	return false;
}
 
int main(void)
{
	int T, t, cnt;
	bool flag;
	scanf("%d", &T);
	while (T--)
	{
		cnt = 0;
		flag = 1;
		result = 0;
		memset(bit, 0, sizeof(bit));
		scanf("%lld%lld", &n, &m);
		for (int i = 0; i < m; ++i)
		{
			scanf("%d", &t);
			++bit[int(log(t) / log(2)+1e-9)];
		}
		while (n)
		{
			if (n & 01)
				--bit[cnt];
			++cnt;
			n >>= 1;
		}
		for (int i = 0; i < cnt; ++i)
		{
			if (bit[i] < 0)
			{
				if (!temp(i))
				{
					flag = 0;
					break;
				}
			}
			else if (bit[i] >= 2)
				bit[i + 1] += bit[i] / 2;
		}
		if (flag)
			printf("%d", result);
		else
			printf("-1");
		if (T)
			printf("\n");
	}
}
数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值