AIM Tech Round 5 (rated, Div. 1 + Div. 2) A-C题解

9 篇文章 0 订阅
4 篇文章 0 订阅

题目链接:http://codeforces.com/contest/1028/problems

A. Find Square(水题)

题意:考虑一个大小为n×m的表,最初是全白色的。 行从上到下编号为1到n,从左到右编号为1到m列。 桌子内部的一些方形,边长为奇数,漆成黑色。 找到这个广场的中心。

题解:数据量并不是很大可以直接暴力找出有效坐标点求中间即可。

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n, m, l = 0, r = 0, u = 0, d = 0;
	char arr[122][122];
	memset(arr, 0, sizeof(arr));
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; i++){
		scanf("%s", arr[i]+1);
		if(l == 0){
			for(int j = 1; j <= m; j++){
				if(arr[i][j] == 'B'){
					l = j;
					for(int k = j; k <= m; k++){
						if(arr[i][k]!='B' || k == m){
							r = k;
							break;
						}
					}
					break;
				}
			}
		}
		if(u == 0){
			for(int j = 1; j <= m; j++){
				if(arr[i][j] == 'B'){
					u = i;
					d = i;
					break;
				}
			}
			continue;
		}
		for(int j = 1; j <= m; j++){
			if(arr[i][j] == 'B'){
				d = i;
				break;
			}
		}
	}
	cout << (u+d)/2 << " " << (l+r)/2 << endl;
	return 0;
} 

B. Unnatural Conditions

题意:存在一个函数S(x)。S(x)=x十进制下所有数字的和。给出数字n和m(1, <= n, m <= 1129),求a和b的值。满足下列条件:

  • S(a) >= n
  • S(b) >= n
  • S(a+b)>=m

题解:细看发现这是一道思维题。虽然n和m一直在变化但大小限制在1129,因此我们只需要找出两个满足S(x)>=1129的值即可得到n在任意取值时都满足条件1和2,可以得出当x长度为1129且每一位都不为0时均满足条件。接着我们需要找到一个满足S(x)<=1的值即可得到m在任意取值时都满足条件3,可以得出当x为10的?次方时满足条件。

聪明的小伙伴大概已经看出来了,我们仅需两个长度均为1129且每一位都不为0的数,并且他们相加为10的1129次方即可满足任何情况。

AC代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	int n, m, Max = 0;
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= 1129; i++) printf("1");
	printf("\n");
	for(int i = 1; i <= 1128; i++) printf("8");
	printf("9\n");
	return 0;
} 

C. Rectangles

题意:比赛读题没仔细加上英语太菜读错题意浪费太多时间。题意是给出n个矩形的左下角和右上角,求出被(n-1)矩形覆盖的坐标(比赛前期读成求出被最多个矩形覆盖的坐标,之后就撕了一发离散化+线段树+扫描线结果TLE)

题解:正确题意知道后其实题目就没有那么困难了。用4个multiset和4个vector存储4个量。之后遍历一遍,每次在multiset去除一个矩阵,当右上角最小的x大于或等于左下角最大的x且右上角的y大于或等于左上角的y时即找到结果。

AC代码:

#include<iostream>
#include<cstdio>
#include<vector>
#include<set>
using namespace std;
int main(){
	int n, l, r, u, d, x, y;
	scanf("%d", &n);
	vector<int> L, R, U, D;
	multiset<int> LL, RR, UU, DD;
	for(int i = 0; i < n; i++){
		scanf("%d%d%d%d", &l, &d, &r, &u);
		L.push_back(l), LL.insert(l);
		D.push_back(d), DD.insert(d);
		R.push_back(r), RR.insert(r);
		U.push_back(u), UU.insert(u);
	}
	for(int i = 0; i < n; i++){
		LL.erase(LL.find(L[i]));
		DD.erase(DD.find(D[i]));
		RR.erase(RR.find(R[i]));
		UU.erase(UU.find(U[i]));
		if(*RR.begin() >= *LL.rbegin() && *UU.begin() >= *DD.rbegin()){
			x = *RR.begin();
			y = *UU.begin();
			break;
		}
		LL.insert(L[i]);
		DD.insert(D[i]);
		RR.insert(R[i]);
		UU.insert(U[i]);
	}
	printf("%d %d", x, y);
	return 0;
} 

待补充~

还好没有掉分,可能是太弱原本分数太低了吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,Codeforces Round 511 (Div. 1)是一个比赛的名称。然而,引用内容中没有提供与这个比赛相关的具体信息或问题。因此,我无法回答关于Codeforces Round 511 (Div. 1)的问题。如果您有关于这个比赛的具体问题,请提供更多的信息,我将尽力回答。 #### 引用[.reference_title] - *1* [Codeforces Round 860 (Div. 2)题解](https://blog.csdn.net/qq_60653991/article/details/129802687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Codeforces Round 867 (Div. 3)(A题到E题)](https://blog.csdn.net/wdgkd/article/details/130370975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Codeforces Round 872 (Div. 2)(前三道](https://blog.csdn.net/qq_68286180/article/details/130570952)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值