Codeforces Round #266 (Div. 2) B. Wonder Room

The start of the new academic year brought about the problem of accommodation students into dormitories. One of such dormitories has a
a?×?b square meter wonder room. The caretaker wants to accommodate exactly
n students there. But the law says that there must be at least 6 square meters per student in a room (that is, the room for
n students must have the area of at least
6n square meters). The caretaker can enlarge any (possibly both) side of the room by an arbitrary positive integer of meters. Help him change the room so as all
n students could live in it and the total area of the room was as small as possible.

Input

The first line contains three space-separated integers
n, a and
b (1?≤?n,?a,?b?≤?109) — the number of students and the sizes of the room.

Output

Print three integers s,
a1 and b1
(a?≤?a1b?≤?b1) — the final area of the room and its sizes. If there are multiple optimal solutions, print any of them.

Sample test(s)

Input

3 3 5

Output

18
3 6

Input

2 4 4

Output

16
4 4
题意:安排宿舍大小,每个学生至少需要6平方米的大小,求n个学生,原本a*b大小的宿舍,再满足要求的情况下,新的宿舍由旧的宿舍扩建后的大小
思路:搜索,起初10^9是过不了的,但是我们枚举一边a的大小后,对于另一边b,如果加一个条件我们起初设a<=b,那么再枚举到a>b的时候,等于说会出现对称的情况了,这样
数据量就小一半了
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long ll;
using namespace std;

int main() {
	ll n, a, b;
	cin >> n >> a >> b;
	n *= 6;
	int flag = 0;
	if (a > b) { // 初始让x < y
		swap(a, b);
		flag = 1;
	}
	ll ans = 2000000000000000000ll;;
	ll nx = -1, ny = -1;
	for (ll i = 1; i <= n; i++) {
		ll x = i;
		ll y = (n + x - 1) / x;
		if (x > y) // 不符合,即出现对称
			break;
		if (x < a) x = a;
		if (y < b) y = b;
		if (x * y < ans) {
			nx = x;
			ny = y;
			ans = x * y;
		}
	}
	if (flag)
		swap(nx, ny);
	cout << ans << endl;
	cout << nx << " " << ny << endl;
	return 0;
}

时间: 2024-10-14 11:11:08

Codeforces Round #266 (Div. 2) B. Wonder Room的相关文章

Codeforces Round #266 (Div. 2)

Codeforces Round #266 (Div. 2) 题目链接 A:就简单的判断一下那种更大即可 B:枚举x到sqrt(n),然后可以直接算出y,然后判断一下即可 C:先判断和是否是3的倍数,然后预处理出前缀和出现位置和后缀和对应sum / 3个数,然后从头往后扫一遍把当前一个和后面进行组合即可 D:先预处理出差分,使得数组表示线段的添加方式,然后每次有一个-1,就能和前面多少个1进行匹配,方案数就乘上多少,如果是0,就能和前面+1个匹配 E:利用并查集,把每次询问拆分成2个部分,起点到

Codeforces Round #266 (Div. 2)B(暴力枚举)

很简单的暴力枚举,却卡了我那么长时间,可见我的基本功不够扎实. 两个数相乘等于一个数6*n,那么我枚举其中一个乘数就行了,而且枚举到sqrt(6*n)就行了,这个是暴力法解题中很常用的性质. 这道题找出a和b中最小的那个,然后开始枚举,一直枚举到sqrt(6*n)的向上取整.这样所有可能是答案的情况都有啦.再干别的都是重复的或者肯定不是最小面积的. #include<iostream> #include<cstdio> #include<cstdlib> #includ

Codeforces Round #266 (Div.2) B Wonder Room --枚举

题意:给出一个两边长为a,b的矩形,要求增加a和增加b使a*b>=6*n且a*b最小. 解法:设新的a,b为a1,b1,且设a<b,那么a<=a1<=ceil(sqrt(6*n)),那么我们可以枚举a1,然后算出b1,如果b1<b,那么b1 = b,然后算出面积,取所有面积的最小值不就可以了,然后再枚举一次b1,处理与之相同即可. 复杂度O(sqrt(n)) 代码: #include <iostream> #include <cstdio> #incl

Codeforces Round #266 (Div. 2) A

题目: A. Cheap Travel time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Ann has recently started commuting by subway. We know that a one ride subway ticket costs a rubles. Besides, Ann found ou

Codeforces Round #266 (Div. 2)C. Number of Ways

传送门 Description You've got array a[1], a[2], ..., a[n], consisting of n integers. Count the number of ways to split all the elements of the array into three contiguous parts so that the sum of elements in each part is the same. More formally, you nee

Codeforces Round #266 (Div. 2)-C,D

C - Number of Ways 直接暴力从前往后寻找.假设找到1/3sum的位置,那么标记++.找到2/3的位置,总数加上标记数. #include<stdio.h> #include<iostream> #include<stdlib.h> #include<string.h> #include<algorithm> #include<vector> #include<math.h> #include<que

Codeforces Round #266 (Div. 2) A. Cheap Travel

Ann has recently started commuting by subway. We know that a one ride subway ticket costs a rubles. Besides, Ann found out that she can buy a special ticket for m rides (she can buy it several times). It costs b rubles. Ann did the math; she will nee

Codeforces Round #266 (Div. 2) D. Increase Sequence

Peter has a sequence of integers a1,?a2,?...,?an. Peter wants all numbers in the sequence to equalh. He can perform the operation of "adding one on the segment[l,?r]": add one to all elements of the sequence with indices froml to r (inclusive).

Codeforces Round #279 (Div. 2) ABCD

Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name     A Team Olympiad standard input/output 1 s, 256 MB  x2377 B Queue standard input/output 2 s, 256 MB  x1250 C Hacking Cypher standard input/output 1 s, 256 MB  x740 D Chocolate standard input/