首页 > 其他分享 >【codeforces】cf880div2 vp小结

【codeforces】cf880div2 vp小结

时间:2023-10-16 21:48:53浏览次数:31  
标签:金币 int 机器人 codeforces long sol vp cf880div2 清空

碎碎念

多测要清空!清空从0开始循环!!!!!!!爆哭
不知道因为初始化和清空罚了多少次了呜呜呜呜呜
这次真的真的记得清空了,但是因为一直习惯下标从1开始所以导致for循环清空的时候a[0]没有清空
A和B简简单单的两个签,但是C的难度就突然升高,补题的时候发现1700的时候真的...犹豫了一下要不要补(但还是补了,开都开了那就补吧)

A.Destroyer

  • 题意:

约翰是独立操作系统联邦空间海军的一艘驱逐舰上的首席程序员。他的任务之一是检查机器人的电子大脑是否在战斗中受损。 一个标准的测试是命令机器人排成一行或多行,每行机器人应该一个接一个地站立。然后,每个机器人报告它所在行前面的机器人数量。
机器人排列的一个例子(行的前面在左边)。机器人报告的数字如上所示。第i个机器人报告了数字
li。不幸的是,约翰不知道每个机器人所在的行,并且无法检查报告的数字。请确定是否可能以这样的方式排列机器人,使得所有报告的数字都是正确的。

  • 思路:
    统计再输出,很简单的一个题目。排列策略是尽可能的先排满一行再去排下一行,所以排头一定不比排在二号位的少。
  • code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[105];
void sol(){
	int n,k;cin>>n;
	for(int i=1;i<=n;i++){
		cin>>k;
		a[k]++;
	}
	int f=1;
	for(int i=1;i<=100;i++){
		if(a[i]>a[i-1]){
			f=0;
			break;
		}
	}
	if(f==0)cout<<"NO"<<endl;
	else cout<<"YES"<<endl;
	for(int i=0;i<=100;i++){
		a[i]=0;
	}
	return ;
}
signed main(){
	int t;cin>>t;
	while(t--){
		sol();
	}
	return 0;
}

B.Astrophysicists

  • 题意:

有 n 个人,k 个金币,每个金币价值 g 个银币。良心公司要把这 k 个金币作为工资分给这n 个人,但是没有办法平均分配,良心老板想出了分配规则:由你设定每个人分配的银币数xi。
老板会把银币数转化为金币发放,所以想出了以下规则:四舍五入
问,能节约的最多金币数

  • 思路:
    节约的原则:尽可能给尽可能多的人发舍的最大值。
  • code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[105];
void sol(){
	int n,k,g;
	cin>>n>>k>>g;
	int tot=k*g,re=(g+1)/2-1;
//	cout<<re<<endl;
//	cout<<tot<<' '<<re<<endl;
	if(re*n>=tot){
		cout<<tot<<endl;
		return;
	}
	int res,ans;
	res=re*(n-1);
//	cout<<res<<endl;
	ans=res;
	res=tot-res;
//	cout<<res<<endl;
	int r=res%g;
//	cout<<r<<endl;
	if(r<=re)ans+=r;
	else ans+=r-g;
	cout<<ans<<endl;
	return ;
}
signed main(){
	int t;cin>>t;
	while(t--){
		sol();
	}
	return 0;
}

C.k-th equality

  • 题意:

对于等式A+B=C,已知A、B、C的位数a、b、c,问符合要求的第k小式子。如果没有则输出"-1"

  • 思路:
    枚举A,分别计算符合要求的有多少个。
  • code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
void sol(){
	int a,b,c,k;cin>>a>>b>>c>>k;
	for(int i=pow(10,a-1);i<pow(10,a);i++){
		int l=max(pow(10,b-1),pow(10,c-1)-i);
		int r=min(pow(10,b)-1,pow(10,c)-i-1);
		if(l>r)continue;
		if(k<=(r-l+1)){
			cout<<i<<" + "<<l+k-1<<" = "<<i+l+k-1<<endl;
			return;
		}
		k-=(r-l+1);
	}
	cout<<"-1"<<endl;
	return;
} 
signed main(){
	int t;cin>>t;
	while(t--){
		sol();
	}
	return 0;
}

标签:金币,int,机器人,codeforces,long,sol,vp,cf880div2,清空
From: https://www.cnblogs.com/muyi-meow/p/17768429.html

相关文章

  • Codeforces Round 697 (Div. 3) A. Odd Divisor
    给定一个正整数\(n\),询问是否存在一个\(>1\)的奇数因子。在唯一分解定理下观察\(n\),发现若存在除\(2\)以外的质因子,则\(n\)存在\(>1\)的奇数因子。换句话说\(n\)不是二次幂形式则存在\(>1\)的奇数因子。view#include<bits/stdc++.h>voidsolve(){ long......
  • Codeforces Round 895 (Div. 3) B. The Corridor or There and Back Again
    你在一个向右延申的无限坐标轴上,且你初始在坐标\(1\)。有\(n\)个陷阱在坐标轴上,第\(i\)个陷阱坐标为\(d_i\),且会在你踩上这个陷阱的\(s_i\)秒过后发动。这时候你不能进入坐标\(d_i\)或者走出坐标\(d_i\)。你需要确定最远的\(k\),保证你能够走到坐标\(k\),并且顺......
  • Codeforces Round 896 (Div. 2) A. Make It Zero
    给一个大小为\(n\)的数组\(a\)\((n\geq2)\)。你希望进过一些操作使得\(\foralli,a_i=0\)。在一步操作中,可以选择\(1\leql\leqr\leqn\)并且执行:\(s=\bigoplus_{i=l}^{r}a_i\)。\(\foralll\leqi\leqr,a_i=s\)。输出一个解决方案,使得操作......
  • Codeforces Round 635 (Div. 2) B. Kana and Dragon Quest game
    你需要击败一只巨龙,他有\(h\)点血量,你可以使用以下两种攻击方式:黑洞:使巨龙的血量变为\(\lfloor\frac{h}{2}\rfloor+10\)。可以使用\(n\)次。雷击:使巨龙的血量变为\(h-10\)。可以使用\(m\)次/当巨龙的血量\(h\leq0\)时,你将他击败了。询问你是否可以将他击......
  • Codeforces Round 637 (Div. 2) - Thanks, Ivan Belonogov! A. Nastya and Rice
    纳斯塔亚掉了\(n\)个谷物,每个谷物的重量范围在\([a-b,a+b]\)。她猜测谷物的总重量范围在\([c-d,c+d]\)。询问她的猜测是否正确。显然,若\([n(a-b),n(a+b)]\)和\([c-d,c+d]\)有交,则她的猜测正确。view#include<bits/stdc++.h>typedeflonglongll;......
  • Codeforces Round 633 (Div. 2) A. Filling Diamonds
    给定一个正整数\(n\),询问有多少种方式填充满图中\(4n-2\)的图。你可以使用的菱形:竖着摆放和横着摆放都是一种方案。显然选择某个位置竖着摆放,其他所有地方只能横着摆放,这样的位置有\(n\)个。具体图形见:https://codeforces.com/problemset/problem/1339/Aview#includ......
  • Codeforces Round 636 (Div. 3) A. Candies
    \(vv\)有\(n\)个糖果,\(vv\)记得这些糖果是按如下方式购买的:第\(i\)天买了\(2^{i-1}x\)个,总共买了\(k\)天,\(k>1\)。但是\(vv\)忘了\(x\)是多少,询问任意一个满足条件的\(x\)。保证给出的\(n\)存在这样一个\(x\)。显然,根据几何或二进制证明,有\(\sum_{......
  • CodeForces 887E Little Brother
    洛谷传送门CF传送门根据初中数学知识,圆心在\(AB\)线段的中垂线上。又因为给定圆与\(AB\)线段所在直线不交,所以圆心在中垂线的一端极远处完全包含这个给定圆,在另一端极远处与这个给定圆相离。而具体在哪一端只与圆心在\(AB\)的左侧还是右侧有关。因此可以二分找到与给......
  • Educational Codeforces Round 91 (Rated for Div. 2) A. Three Indices
    给一个\(n\)个整数的排列\(p_1,p_2,\cdots,p_n\),需要找到三个数\(i,j,k\)满足:\(1\leqi<j<k\leqn\)\(p_i<p_j\),\(p_j<p_k\)否则回答不可能。\(key\):若存在上述\(i,j,k\),则存在\(x\)满足\(p_{x-1}<p_{x},p_{x}>p_{x+1......
  • * Codeforces Round 665 (Div. 2) A. Distance and Axis
    有一个点\(A\)在\(OX\)正坐标轴上的\(x\)坐标为\(n\)。需要找到一个点\(B\),使得\(||OB|-|AB||=k\)。现在给出非负整数\(n\)\(k\),你可以执行任意次以下操作:每步操作可以使\(A\)的坐标加一或减一。询问最少需要进过多少次操作使\(B\)可以存在。先假设出......