首页 > 其他分享 >Educational Codeforces Round 33 (Rated for Div. 2) 虚拟赛体验

Educational Codeforces Round 33 (Rated for Div. 2) 虚拟赛体验

时间:2022-08-19 16:58:13浏览次数:86  
标签:Educational Rated fa 33 ret int now include find

前言

image

就只做出了 \(A,B,C,D\) 是不是很弱?

A.Chess For Three

A,B,C 三人下棋,A和B先下,每次下完棋之后由现在观战的人(例如第一局就由C)代替下输的人。 每次输入一个数表示谁赢了(A是1,B是2,C是3),如果每一次输入的赢家都不是当时旁观者,则输出 “YES”,否则输出“NO”。

预计难度普及-。

直接模拟即可。

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

int n;
int ret=0;

signed main(){
	cin>>n;
	ret=3;
	for(int i=1;i<=n;i++){
		int v;
		cin>>v;if(v==ret){
			cout<<"NO";
			return 0;
		}
		if(ret==1){
			ret=5-v;
		}
		else if(ret==2){
			ret=4-v;
		}
		else{
			ret=3-v;
		}
	}
	cout<<"YES";
	return 0;
}

B.Beautiful Divisors

给定n,求n最大的因数s,使s能表示成 \((2^k-1)*(2^{k-1})\) 的形式

预计难度普及-。

暴力枚举 \(O(n\log n)\) 可过。

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

int n;
int ret=1;

int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		if(!(n%i)){
			for(int k=1;(pow(2,k)-1)*(pow(2,k-1))<=i;k++){
				if((pow(2,k)-1)*(pow(2,k-1))==i){
					ret=i;
					break;
				}
			}
		}
	}
	cout<<ret;
}

C.Rumor

有n个人,其中有m对朋友,现在你有一个秘密你想告诉所有人,第i个人愿意出价a[i]买你的秘密,获得秘密的人会免费告诉它的所有朋友(他朋友的朋友也会免费知道),现在他们想出最少的价钱买秘密,那么你最少能得到多少钱?

预计难度普及。(洛谷难度提高+,有点虚高)

考虑并查集。显然,如果谁的秘密低,就当作并查集的根节点,朋友和朋友之间连边,这样子只要买根节点就可以了。

时间复杂度 \(O(n+m\log n)\)。

代码:

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

int a[1000005];

namespace UnionFind{
	int fa[1000005];
	int find(int x){
		if(fa[x]==x)return fa[x];
		else return fa[x]=find(fa[x]);
	}
	void merge(int x,int y){
		if(a[find(x)]>a[find(y)]){
			fa[find(x)]=find(y);
		}
		else{
			fa[find(y)]=fa[find(x)];
		}
	}
}

int n,m;
int isroot[1000005];
int ret=0;

signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		UnionFind::fa[i]=i;
	}
	for(int i=1,liwenx,daniel2020;i<=m;i++){
		cin>>liwenx>>daniel2020;
		UnionFind::merge(liwenx,daniel2020);
	}
	for(int i=1;i<=n;i++){
		int rt=UnionFind::find(i);
		if(!isroot[rt]){
			ret+=a[rt];
			isroot[rt]=1;
		}
	}
	cout<<ret;
	return 0;
}

D.Credit Card

Recenlty Luba有一张信用卡可用,一开始金额为0,每天早上可以去充任意数量的钱。到了晚上,银行会对信用卡进行一次操作,操作有三种操作。 1.如果a[i]>0,银行会给卡充入a[i]元。 2.如果a[i]<0 银行从卡中扣除a[i]元。 3.如果a[i]=0 银行会查询卡里的金额。 有两条规则,如果违背信用卡就会被冻结。 1.信用卡里的金额不能大于d。 2.当银行查询卡里的金额时,金额不能为负。 Recenlty Luba想知道最少去充多少次钱,可以使她在接下来的n天里信用卡不被冻结。

预计难度提高。

这道题考虑贪心。维护最大和最小,如果最小的都大于 \(t\) 显然无解。如果最大都要充钱那么计数器++,最后输出计数器。

时间复杂度 \(O(n)\)。

代码:

#include <bits/stdc++.h>
#define NO_SOLVE cout<<-1;return 0
using namespace std;

int n,d;
int least,most;
int now;
int ans;

signed main(){
	cin>>n>>d;
	for(int i=1;i<=n;i++){
		cin>>now;
		if(now!=0){
			least+=now;
			most+=now;
			if(least>d){
				NO_SOLVE;
			}
			most=min(most,d);
		}
		else{
			least=max(least,0);
			if(most<0){
				ans++;
				most=d;
			}
		}
	}
	cout<<ans<<'\n';
	return 0;
}

标签:Educational,Rated,fa,33,ret,int,now,include,find
From: https://www.cnblogs.com/zheyuanxie/p/codeforces893-virtual-participation.html

相关文章

  • 《GB27833-2011》PDF下载
    《GB27833-2011危险化学品有机过氧化物包装规范》PDF下载《GB27833-2011》简介本标准规定了危险化学品有机过氧化物包装的分类、要求、标记和标签;本标准适用于危险化......
  • [Oracle] LeetCode 333 Largest BST Subtree
    Giventherootofabinarytree,findthelargestsubtree,whichisalsoaBinarySearchTree(BST),wherethelargestmeanssubtreehasthelargestnumberof......
  • 【区块链与隐私保护系列】基于Linux的TensorFlow Federated安装与使用
    一、TensorflowTederated安装基础环境:操作系统:Ubuntu20.04首先,安装Anaconda:具体的安装步骤可以查看这篇文章,亲测实用,https://blog.csdn.net/ITBigGod/artic......
  • leetcode1033-移动石子直到连续
    移动石子直到连续分类讨论classSolution{publicint[]numMovesStones(inta,intb,intc){if(a>b){intt=a;a=b;b=t;}if(a>......
  • P6733 「Wdsr-2」间歇泉——二分答案
    二分可以将优化问题转为判定问题,也可以将\(k\)大问题转为计数问题分析由于已知条件,\(\displaystyleT=\frac{a_ic_i+a_jc_j}{a_i+a_j}\),转为计数问题则是固定T,统计有多少......
  • 33.语法一致原则
    主语和谓语动词之间的一致关系主要表现在“数”的形式上。一般来说,如果主语是复数形式,谓语动词应用复数形式;如果主语是单数形式,谓语动词应用单数形式。这种一致关系叫作“......
  • BZOJ3306 树
    记当前根为root,查询的节点为x若x=root,答案即为所有结点的最小值若x与root在1的不同子树中,答案即为x的子树最小值若x与root在1的同一子树中若x在......
  • 听,引擎的声音「GitHub 热点速览 v.22.33」
    这期的热点速览异常Cool,因为有呜呜声内燃机引擎加成的engine-simengine-sim坐镇,听到如此曼妙的引擎声,相比你的人生也在高速上升吧。还有,自己搭建个服务就能在本地用上......
  • 33.
    illustrate说明       round圆形物blend混合approval同意survive 幸存community社区Christian基督教徒upper上面的prohibit 禁止comme......
  • 力扣233(java)-数字1的个数(困难)
    题目:给定一个整数n,计算所有小于等于n的非负整数中数字1出现的个数。 示例1:输入:n=13输出:6示例2:输入:n=0输出:0 提示:0<=n<=109来源:力扣(LeetCode)链接:h......