首页 > 其他分享 >Codeforces Round 974 (Div. 3)

Codeforces Round 974 (Div. 3)

时间:2024-09-22 20:24:09浏览次数:1  
标签:974 int sum Codeforces ++ num solve year Div

Codeforces Round 974 (Div. 3)

A - Robin Helps

按题目要求一步步计算就行

#include<bits/stdc++.h>
using namespace std;

int n, k;
void solve(){
	cin >> n >> k;
	int sum = 0, num, ans = 0;
	for(int i = 1; i <= n; ++i){
		cin >> num;
		if(num >= k){
			sum += num;//拿走所有
		}else if(num == 0){
			if(sum > 0){//如果有金币
				sum--;//减去一个现有金币
				ans++;//加一个被施舍的人
			}
		}
	}
	cout<< ans << endl;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int _;
	cin >> _;
	while(_--){
		solve();	
	}
	return 0;
}

B - Robin Hood and the Major Oak

偶数乘偶数还是偶数,奇数乘奇数还是奇数

因为偶数无法对当前奇偶产生影响,因此直接对区间内奇数进行判断,

因为持续时间为k,那么n - k + 1之前的所有叶子都不会对结果产生任何影响

综上,找到有效区间,进行区间内奇数个数的统计,就能得到答案

#include<bits/stdc++.h>
using namespace std;

int n, k;
void solve(){
	cin >> n >> k;
	int year = 1;
	if(k >= n){
		if(n % 2 == 1){
			year = n / 2 + 1;
		}else{
			year = n / 2;
		}
	}else{
		if(k % 2 == 1){
			if(n % 2 == 1){
				year = k / 2 + 1;
			}else{
				year = k / 2;
			}
		}else{
			year = k / 2;
		}
	}
	
	if(year % 2 == 0){
			cout << "YES" << endl;
			return ;
		}
	cout << "NO" << endl;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int _;
	cin >> _;
	while(_--){
		solve();	
	}
	return 0;
}

C - Robin Hood in Town

读入,对财富进行排序。特判n为1和2的时候

找出严格中值,对其乘2乘n,计算出不会让罗宾汉出现的最低财富总值minn

用minn和现有财富进行比较,输出结果(相等的时候结果为一,不等的时候向上取整)。

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
int n;
long double peo[N], sum[N];
long double num;

void solve(){
	cin >> n;
	for(int i = 1; i <= n; ++i){
		cin >> peo[i];
		sum[i] = sum[i - 1] + peo[i];
	}
	
	if(n < 3){
		cout << "-1" << endl;
		return;
	}
	
	int mid = n / 2 + 1;
	sort(peo + 1, peo + 1 + n);
	long double minn = peo[mid] * n * 2.0;
	if(minn < sum[n]){
		cout << 0 << endl;
		return;
	}
	long long ans = (minn - sum[n]);
	ans++;
	cout << ans << endl;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int _;
	cin >> _;
	while(_--){
		solve();	
	}
	return 0;
}

D - Robert Hood and Mrs Hood

#include<bits/stdc++.h>
using namespace std;

void work(){
	int n, k, d;
	cin >> n >> d >> k;
	vector<int>  ss(n + 1), es(n + 1);
	
	for(int i = 0; i < k; ++i){
		int a, b;
		cin >> a >> b;
		ss[a]++;//标记开始时间 
		es[b]++;//标记结束时间 
	}
	//计算 
	for(int i = 0; i < n; ++i) ss[i + 1] += ss[i];
	for(int i = 0; i < n; ++i) es[i + 1] += es[i];
	int most = 0;
	int robert = 0;
	int mrs = 0;
	int least = 1e9;
	for(int i = d; i <= n; ++i){
		int cur = ss[i] - es[i - d];//计算当前天数有几份工作 
		if(cur > most)most = cur, robert = i - d + 1;//更新最大值 
		if(cur < least)least = cur, mrs = i - d + 1;//更新最小值 
	}
	cout << robert << ' ' << mrs << '\n';//输出 
}

int main(){
	int t;
	cin >> t;
	while(t--) work();
	return 0;
}

标签:974,int,sum,Codeforces,++,num,solve,year,Div
From: https://www.cnblogs.com/lyx9785/p/18425803

相关文章

  • Codeforces Round 974 (Div. 3)
    A.RobinHelps模拟即可。B.RobinHoodandtheMajorOak注意到\(i^i\equivi\pmod2\),因此\(\sumi^i\equiv\sumi\pmod2\)。等差数列求和即可。C.RobinHoodinTown二分答案即可。D.RobertHoodandMrsHood枚举区间\([l,l+d-1]\)。此时我们需要快速......
  • Codeforces Round 974 (Div. 3)
    A:按题意模拟。B:\(i^i\)与\(i\)奇偶性相同,求\((n-k,n]\)的奇数个数。C:二分答案。D:即求每个\((i-d,i]\)有多少线段覆盖。扫到\(i\)时加入所有\(i=l\)的,弹出所有\(r\lei-d\)的。E:枚举相遇点,答案就是\(\min\big(\max(d_1,d_2)\big)\),最短路时记录状态......
  • Codeforces Round 973 (Div. 2)
    CodeforcesRound973(Div.2)A-Zhan'sBlender由于总量固定因此只用计算两个处理时间最大值即是所求#include<bits/stdc++.h>usingnamespacestd;intn;doublex,y;voidsolve(){ cin>>n; cin>>x>>y; inttim1=ceil(n*1.0/x); inttim2......
  • Codeforces Round 974 (Div. 3)
    A.RobinHelps题意:Robin一开始的钱为0,每个人都有ai个金币,如果ai>=k则Robin会拿着它的金币, 如果ai==0且手上有金币,Robin会送出1金币,输出Robin送了几次思路:按照题意Code:#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;usingi6......
  • Codeforces Round 973 (Div. 2)
    SolCF2013A每次最多操作\(\min(x,y)\),故答案为\(\lceil\frac{n}{\min(x,y)}\rceil\)。#include<bits/stdc++.h>usingnamespacestd;usingu32=unsigned;usingi64=longlong;usingu64=unsignedlonglong;usingi128=__int128;#defineIOS#de......
  • Codeforces Round 973 (Div. 2) B. Battle for Survive
    题目链接:题目大意:把题目的操作翻译一下就是拿一个数去减后面的一个数,然后前面这个数会消掉。最小化最后剩下的数。思路:容易看出,最后剩下的一定是最后一个数,因为最后一个数一定不会被消去,又已知最后只剩下一个数,那么就是最后一个数。前面的所有数都要被消去,最差的情况就......
  • for循环—不同div显示不同样式
    for出来的div想要显示不同的样式,可以通过动态class,根据需要的条件指示控制样式,例如用index第一个div显示first-card的样式,第二个div显示second-card的样式<divclass="meal"><el-cardclass="meal_details"v-for="(item,index)inm......
  • POLIR-Society-Sociology-Individual-Social Identity Theory: 社会身份理论
    POLIR-Society-Sociology:社会学Individual:SocialIdentityTheory:社会身份理论InSociology,WehavethisSocialIdentifyTheory,Whichisabouthowwedefineourselvesasindividualperson,ShowcasingWhowewanttobeandHowotherpeopleseeusasaperso......
  • Educational Codeforces Round 135 (Rated for Div. 2)D. Letter Picking
    注意读题,每次拿完之后是放在开头。所以先手不败,因为最后剩下两个的时候,先手一定可以取较小值。考虑怎样会出现平局?首先已经知道了先手不败,那么对于后手来说,他追求的就是平局,也就是尽可能的保证每一步都都与先手相同。所以,如果是回文串,或者两两相同,或者回文串包两两相同的情况,才......
  • Educational Codeforces Round 136 (Rated for Div. 2) D. Reset K Edges
    这道题目我们可以考虑二分做,二分出最终的深度,然后尝试是否能使用不超过\(k\)次操作使得深度符合条件。考虑如何和判断,我们可以从根节点开始搜索,如果当前点的深度为\(mid+1\),就对当前点进行操作。但很可惜,这种贪心方法可以很容易的举出反例,比如深度为\(mid\)的点下面有很多个叶......