Codeforces Round #845 (Div. 2) and ByteRace 2023 A-D

A. Everybody Likes Good Arrays!

题意:对给定数组进行操作:删除相邻两项,替换为两项的乘积,使得该数组奇偶相间。 

题解:从前向后遍历模拟

代码:

void solve(){
int n=read(),ans=0;
for(int i=1;i<=n;i++) a[i]=read()%2;
for(int i=1;i<n;i++){
if(a[i]&&a[i+1]) ans++;
else if(!a[i]&&!a[i+1]) ans++;
}
cout<<ans<<endl;
}

B. Emordnilap

题意:对n个数的每个全排列拼接上其逆序排列后的逆序对总数

题解:找规律  对于n个数 有如下性质:

    1.有n!个排列

    2.每个排列拼接上自己的逆序后 有n*(n-1)个逆序对

    由此:逆序对总和即为n!*n*(n-1)个

代码:

void solve(){
int n=read(),ans=1;
for(int i=1;i<=n;i++){
ans*=i;
ans%=mod;
}
ans*=n;
ans%=mod;
ans*=(n-1);
ans%=mod;
}

C. Quiz Master

题意:在给定的数组中 选择其中几个使1~m的每个数是至少是一个选择的数字的因子 若选不出这样的几个数则输出-1 否则输出选择的最大数与最小值的差

题解:朴素的双指针思想 在对给定数组排序后 指向最大数与最小数的指针(分别记为R,L)有如下性质:

      1.取上两个指针间所有数对最后答案无影响

      2.对于目前不能构成选择区间的L,R指针,若L指针不动,只有R指针向后移动才可能重新构成满足题意的区间

    所以采用双指针算法  R向后移动时记录新R的因子  L向后移动时去掉原L的因子 以此维护双指针区间

代码:

int a[N],cnt[N],n,m;
bool check(){
for(int i=1;i<=m;i++){
if(cnt[i]<=0) return false;
}
return true;
}
void solve(){
n=read(),m=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int i=1;i<=m;i++) cnt[i]=0;
sort(a+1,a+n+1);
int ans=inf;
for (int i = 1, j = 1; i <=n; i ++ ){
for(int h=1;h*h<=a[i];h++){
if(a[i]%h==0){
cnt[h]++;
cnt[a[i]/h]++;
}
}
while (j <= i && check()){
ans=min(ans,a[i]-a[j]);
j++;
for(int h=1;h*h<=a[j-1];h++){
if(a[j-1]%h==0){
cnt[h]--;
cnt[a[j-1]/h]--;
}
}
}
}
if(ans<inf)cout<<ans<<endl;
else cout<<-1<<endl;
}

D. Score of a Tree

题意:现有一棵根为1的树,其中初始点权是0或1。每一秒,一个点的点权变为其所有子节点的值的异或值。求在所有时间下,所有01配置的树节点的总值。

题解:对每一结点,有如下性质:

    1.每个初始时刻值的期望为1/2    

    2.每个节点都存在一个时间点 tx ,在 tx 后该节点值始终为0。 且 tx 等于该节点的子树最大深度    

    3.每个节点在tx之前,其值的期望仍为1/2  (对于性质3,可采用数学归纳法证明这一点)   

   所以对于整颗树,要求的值即为每个节点的最大子树深度*2^(n-1).

Codeforces Round #845 (Div. 2) and ByteRace 2023 A-D的更多相关文章

  1. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  2. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  3. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  4. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  5. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  6. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  7. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  8. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  9. Codeforces Round #268 (Div. 2) ABCD

    CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...

  10. 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts

    题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...

随机推荐

  1. pinpoint:初始化hbase数据库

    安装完成hbase之后,需要初始化hbase的pinpoint库(创建表). 1. 登录数据库 [root@monitor default]# cd /home/pinpoint/hbase-1.7. ...

  2. vue传值

    在vue 中组件间的传参是必不可少的,下面说下几种传参方式 1.父组件传值给子组件,首先父组件发送的形式是用bind(用缩写:)绑定值到子组件身上.然后子组件用属性props接收 2.子组件传值父组件 ...

  3. MPC:百万富翁问题

    学习文章:"一起学MPC:(一)百万富翁问题"和"[隐私计算笔谈]MPC系列专题(一):安全多方计算应用场景一览" 百万富翁问题 将问题具体化: Alice有\ ...

  4. 【题解】P7860 [COCI2015-2016#2] ARTUR

    题面传送门 好题. 主要思路和另一位巨佬差不多,详细讲一下判断的部分. 解决思路: 首先考虑本题与拓扑排序有和关系.可以想到,某些棍子的先后移动顺序是有限制的.比如: 这里红色的必须比蓝色的先移动,因 ...

  5. C#面试题基础

    1.什么是GAC,他的作用是什么? 我的这篇文章有详细的介绍 https://www.cnblogs.com/zxtang/p/14313273.html 2.描述一个被protected inter ...

  6. python——os模块学习

    import os #1.获取当前使用的操作系统 #返回操作系统类型,nt是windows,posix是linux print(os.name) #print是一个函数,函数里面进行条件判断'posi ...

  7. Go语言核心36讲07

    在前文中,我解释过代码块的含义.Go语言的代码块是一层套一层的,就像大圆套小圆. 一个代码块可以有若干个子代码块:但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块). ...

  8. 学习 vue3 第一天 vue3简介,创建vue3项目 Composition Api 初识

    前言: 从今天开始来和大家一起学习 vue3 相信大家都不陌生,已经火了一段时间了,但是还是有不少人没有学习,那就跟着六扇老师来简单的入个门 废话不多说,来开始今天的学习 Vue3 简介: 2020年 ...

  9. 7 STL-deque

    ​ 重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦!  生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...

  10. Mybatis SQL 对应Oracle中javaType和jdbcType对应

    <resultMap type="java.util.Map" id="resultjcm"> <result property=" ...