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

就只做出了 \(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 Codeforces Round 33 (Rated for Div. 2) 虚拟赛体验的更多相关文章
- Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays
题目链接 题意:给你两个数x,yx,yx,y,让你构造一些长为yyy的数列,让这个数列的累乘为xxx,输出方案数. 思路:考虑对xxx进行质因数分解,设某个质因子PiP_iPi的的幂为kkk,则这个 ...
- Educational Codeforces Round 33 (Rated for Div. 2) F. Subtree Minimum Query(主席树合并)
题意 给定一棵 \(n\) 个点的带点权树,以 \(1\) 为根, \(m\) 次询问,每次询问给出两个值 \(p, k\) ,求以下值: \(p\) 的子树中距离 \(p \le k\) 的所有点权 ...
- Educational Codeforces Round 33 (Rated for Div. 2) 题解
A.每个状态只有一种后续转移,判断每次转移是否都合法即可. #include <iostream> #include <cstdio> using namespace std; ...
- Educational Codeforces Round 33 (Rated for Div. 2)A-F
总的来说这套题还是很不错的,让我对主席树有了更深的了解 A:水题,模拟即可 #include<bits/stdc++.h> #define fi first #define se seco ...
- Educational Codeforces Round 33 (Rated for Div. 2) D. Credit Card
D. Credit Card time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Educational Codeforces Round 33 (Rated for Div. 2) C. Rumor【并查集+贪心/维护集合最小值】
C. Rumor time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- Educational Codeforces Round 33 (Rated for Div. 2) B. Beautiful Divisors【进制思维/打表】
B. Beautiful Divisors time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Educational Codeforces Round 33 (Rated for Div. 2) A. Chess For Three【模拟/逻辑推理】
A. Chess For Three time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Educational Codeforces Round 33 (Rated for Div. 2)
A. Chess For Three time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Educational Codeforces Round 33 (Rated for Div. 2) D题 【贪心:前缀和+后缀最值好题】
D. Credit Card Recenlty Luba got a credit card and started to use it. Let's consider n consecutive d ...
随机推荐
- 成功解决IDEA中建立新项目Maven会默认选择配置(图解详细说明)
文章目录 1.File-->Other Settings --> Settings for New Projects 2.选择自己的maven配置 3.效果展示(我这里省略建立新项目的过程 ...
- 9.channels layers
settings.py配置 # 存储在内存里 CHANNEL_LAYERS = { "default": { "BACKEND": "channels ...
- 11.-ORM-基本操作-创建数据
一.ORM-操作 基本操作包括增删改查,即(CRUD)操作 CRUD是指在做计算处理时增加(create).读取查询(read).更新(update).删除(delete) ORM CRUD 核心 - ...
- Hugging Face发布diffuser模型AI绘画库初尝鲜!
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 TensorFlow 实战系列:https://www.showmeai ...
- 2流高手速成记(之五):Springboot整合Shiro实现安全管理
废话不多说,咱们直接接上回 上一篇我们讲了如何使用Springboot框架整合Nosql,并于文章最后部分引入了服务端Session的概念 而早在上上一篇中,我们则已经讲到了如何使用Springboo ...
- Linux系统文件与启动流程
Linux系统文件与启动流程 /etc初始化系统重要文件 /etc/sysconfig/network-scripts/ifcfg-eth0:网卡配置文件 /etc/resolv.conf:Linux ...
- MongoDB数据库新手入门
windows安装mongodb 5.0.2 官网下载msi文件 自定义安装到 d:/apptoools/mongodb/ 不要勾选mongodb compass 报错:verify that you ...
- 833——B题题解
题目链接 题目大意: 给一串字符串(只包含0~9),定义一个最优子串的定义:如果该子串同字符种类数大于最最多字符出现数,那么这个子串可以被称为最优子串. 解题思路: 大眼一看这个数据范围他用n^2的算 ...
- oracle常用查看命令
select sum(bytes/1024/1024/1024) from dba_segments; #注:查看表空间大小,除以3个1024后的大小为GB du instance_name(实例 ...
- Dubbo-Activate实现原理
前言 在Dubbo中有Filter使用,对于Filter来说我们会遇到这样的问题,Filter自身有很多的实现,我们希望某种条件下使用A实现,另外情况下使用B实现,这个时候我们前面介绍@SPI和@Ad ...