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. python爬虫下载小说

    1. from urllib.request import urlopen from urllib import request from bs4 import BeautifulSoup from ...

  2. js判断手机系统是android还是ios?

    var u = navigator.userAgent; //识别各种浏览器 var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Ad ...

  3. Java 编码那些事(一)

    编码 做Web的同学,最开始一定遇到过乱码问题,工作这么久,一定听说过Unicode, GB2312等编码.典型的记事本选择的四种选项:ANSI,Unicode,Unicode big endian, ...

  4. R数据分析:扫盲贴,什么是多重插补

    好多同学跑来问,用spss的时候使用多重插补的数据集,怎么选怎么用?是不是简单的选一个做分析?今天写写这个问题. 什么时候用多重插补 首先回顾下三种缺失机制或者叫缺失类型: 上面的内容之前写过,这儿就 ...

  5. Spring Boot:自定义 Whitelabel 错误页面

    一.概述在本文中,我们将研究如何禁用和自定义 Spring Boot 应用程序的默认错误页面,因为正确的错误处理描述了专业性和质量工作. 2.禁用白标错误页面 首先,让我们看看如何通过将server. ...

  6. 这篇关于Oracle内存管理方式的介绍太棒了!我必须要转发,很全面。哈哈~

    "Oracle内存管理可分为两大类,自动内存管理和手动内存管理.其中手动内存管理又可分为自动共享内存管理,手动共享内存管理,自动PGA内存管理以及手动PGA内存管理.本文会简单的介绍不同的内 ...

  7. 2022春每日一题:Day 16

    题目:不同子串个数 这题需要利用后缀数组求出的height的性质,我们发现对于每个后缀,他的height后的所有子串就是算在答案里,因此答案只需要求出n-height[i]-sa[i]+1的和就可以了 ...

  8. Go语言核心36讲53

    你好,我是郝林. 在2019年的春节来临之际,我恰好也更新完了专栏所有的配图和思考题答案.希望这些可以帮助到你,在新的一年中,祝你新年快乐,Go语言学习之路更加顺利. 基础概念篇 1. Go语言在多个 ...

  9. tcp网络交互的理解 以及代码实现

    服务端 import socketserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind(("127.0. ...

  10. 解决mysql本地连接速度慢

    解决方法 用127.0.0.1而不用localhost 原因 听说是有什么DNS的反向解析