Codeforces Round #645 (Div. 2) 题解 (ABCD) (E一定补!)

Posted axiomofchoice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #645 (Div. 2) 题解 (ABCD) (E一定补!)相关的知识,希望对你有一定的参考价值。

https://codeforces.com/contest/1358

A. Park Lighting

输出 (lceil dfrac{ab}2 ceil)

#include <bits/stdc++.h>
using namespace std;
#define repeat(i,a,b) for(int i=(a),_=(b);i<_;i++)
#define repeat_back(i,a,b) for(int i=(b)-1,_=(a);i>=_;i--)
int cansel_sync=(ios::sync_with_stdio(0),cin.tie(0),0);
const int N=200010; typedef long long ll;
#define int ll
int T,a,b;
signed main(){
	cin>>T;
	while(T--){
		cin>>a>>b;
		cout<<(a*b+1)/2<<endl;
	} 
	return 0;
}

B. Maria Breaks the Self-isolation

题面真长。排序,然后求 (a[1]+a[2]+...+a[i]<=i)(i) 的最大值

当然答案要加 (1) 因为要算上Maria

#include <bits/stdc++.h>
using namespace std;
#define repeat(i,a,b) for(int i=(a),_=(b);i<_;i++)
#define repeat_back(i,a,b) for(int i=(b)-1,_=(a);i>=_;i--)
int cansel_sync=(ios::sync_with_stdio(0),cin.tie(0),0);
const int N=200010; typedef long long ll;
#define int ll
int T,n,a[N];
signed main(){
	cin>>T;
	while(T--){
		cin>>n;
		repeat(i,0,n)cin>>a[i];
		sort(a,a+n);
		int ans=1;
		repeat(i,0,n)if(a[i]<=i+1)ans=i+2; //我编号从0开始有点不同
		cout<<ans<<endl;
	} 
	return 0;
}

C. Celex Update

怎么说呢……比如要从1走到18,有这么两种走法

技术图片

右图比左图数字之和刚刚好多了1。这说明一旦出现类似 (4, 7, 12) 这样的上三角形拐角,我们可以让它拐下来变成 (4,8,12)。这样操作 ((y_2-y_1)(x_2-x_1)) 次后就彻底找不到这种拐角了,因此答案是 ((y_2-y_1)(x_2-x_1)+1)

#include <bits/stdc++.h>
using namespace std;
#define repeat(i,a,b) for(int i=(a),_=(b);i<_;i++)
#define repeat_back(i,a,b) for(int i=(b)-1,_=(a);i>=_;i--)
int cansel_sync=(ios::sync_with_stdio(0),cin.tie(0),0);
const int N=200010; typedef long long ll;
#define int ll
int T,x1,x2,y1,y2;
signed main(){
	cin>>T;
	while(T--){
		cin>>x1>>y1>>x2>>y2;
		cout<<(x2-x1)*(y2-y1)+1<<endl;
	}
	return 0;
}

D. The Best Vacation

最优解的区间的右端点一定一定是某个月的月末(这里的区间左右端点都表示某一天)。小证一下,假设有个右端点不是月末的区间,如果左端点(那一天的拥抱次数,下同)大于右端点就让它向左平移,如果左端点小于右端点就让它向右平移,这样总拥抱次数必定增大,因此结论成立qwq

这样就容易好多,我们枚举每个月的月末,二分查找区间左端点即可(不二分查找应该也可)

我这题fst了,尴尬至极,代码先删了避免误导

以上是关于Codeforces Round #645 (Div. 2) 题解 (ABCD) (E一定补!)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #645 (Div. 2)

Codeforces Round #645 (Div. 2)

Codeforces Round #645 (Div. 2) 题解 (ABCD) (E一定补!)

Codeforces Round #645 (Div. 2) 题解 (ABCD) (E一定补!)

Codeforces Round #645 (Div. 2) C - Celex Update 思维

Codeforces Round #645 (Div. 2) C - Celex Update 思维