2023年多校联训NOIP层测试4+洛谷 8 月月赛 I & RiOI Round 2
2023年多校联训NOIP层测试4
爆零了

T1 幸运数字 \(0pts\)

- 首先考虑一个结论: \(4\) 的倍数一定满足最后两位能被 \(4\) 整除。
- 从 \(1\) 进行输入,方便处理。若枚举到 \(i\) 位的位置,判断第 \(i-1\) 位和当前位组成的数( \(10×(s[i-1]-'0')+s[i]-'0'\) )即能否被 \(4\) 整除,如果可以,方案总数加上 \(i-1\) 。
- 额外加上 \(0,4,8\) 的个数。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
char s[3000010];
int main()
{
ll ans=0,len,i;
cin>>(s+1);
len=strlen(s+1);
s[0]='0';
for(i=1;i<=len;i++)
{
if((10*(s[i-1]-'0')+s[i]-'0')%4==0)
{
ans+=i-1;
}
if((s[i]-'0')%4==0)//在这里挂了100pts,if打成了else if,结果minecraft418直接出了个hack
{
ans++;
}
}
cout<<ans<<endl;
return 0;
}
T2 密码 \(0pts\)

- 没做到,咕了。
T3 小X和他的朋友们 \(0pts\)

- 没做到,咕了。
T4 树上询问 \(0pts\)

- 没做到,咕了。
【LGR-150-Div.2】洛谷 8 月月赛 I & RiOI Round 2
比赛时间又重了, \(4.5h\) 打三场比赛。

T1 luoguP9496 「RiOI-2」hacker \(100pts\)
赛场上读假题了,以为是按位或上一个操作形成的数字,觉得是不可做题,跳到了T2。
- 解法一:将 \(n,m\) 分别转成二进制,易知答案结果只有 \(0,1,2\) ,然后进行分类讨论:
- 若转出二进制后第 \(i\) 位 \(n\)的值为 \(1\) ,\(m\)的值为 \(0\) ,需要进行 「ACCEPT」操作。
- 若转出二进制后第 \(i\) 位 \(n\)的值为 \(0\) ,\(m\)的值为 \(1\) ,需要进行 「BOTH」操作。
//转二进制模拟
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
ll aa[100],bb[100];
int main()
{
ll n,i,j,a,b,la,lb,sum1,sum2;//十年OI一场空,不开 long long见祖宗
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a>>b;
if(a==b)
{
cout<<"0"<<endl;
}
else
{
la=lb=sum1=sum2=0;
while(a>0)//转二进制,倒序储存,方便处理
{
la++;
aa[la]=a%2;
a/=2;
}
while(b>0)
{
lb++;
bb[lb]=b%2;
b/=2;
}
if(la>lb)
{
for(j=lb+1;j<=la;j++)//空位补零,下同
{
bb[j]=0;
}
lb=la;
}
if(la<lb)
{
for(j=la+1;j<=lb;j++)
{
aa[j]=0;
}
la=lb;
}
for(j=1;j<=la;j++)
{
if(aa[j]==1&&bb[j]==0)
{
sum1=1;
}
if(aa[j]==0&&bb[j]==1)
{
sum2=1;
}
}
cout<<sum1+sum2<<endl;
}
}
return 0;
}
- 解法二:利用位运算进行分类讨论:
- 若\(a==b\) ,易知不需要进行操作。
- 若 \((a|b)==a\) ,说明 \(b\) 在二进制下与 \(a\) 同一位不同时存在一种情况( \(1和0\) 或 \(0和1\) ) ;若 \((a|b)==b\) ,同理。
- 若\((a|b)\ne a \ne b\),说明 \(b\) 在二进制下与 \(a\) 同一位不同时存在两种情况( \(1和0\) 和 \(0和1\) )
//位运算
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
ll aa[100],bb[100];
int main()
{
ll n,i,j,a,b,la,lb,sum1,sum2;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a>>b;
if(a==b)
{
cout<<"0"<<endl;
}
else
{
if(((a|b)==a)||((a|b)==b))
{
cout<<"1"<<endl;
}
else
{
cout<<"2"<<endl;
}
}
}
return 0;
}
- 解法一:将 \(n,m\) 分别转成二进制,易知答案结果只有 \(0,1,2\) ,然后进行分类讨论:
T2 luoguP9497 「RiOI-2」weight \(100pts\)
赛场上又双叒叕读假题了,觉得是不可做题,跳到了T3。
正解:将矩阵压缩成一维, \(sort\) 一遍+二分查找即可。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
int a[20000000];
int main()
{
int n,q,i,j,x,num;
cin>>n>>q;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[j+(i-1)*n];
}
}
sort(a+1,a+1+n*n);
for(i=1;i<=q;i++)
{
cin>>x;
num=n*n-(lower_bound(a+1,a+1+n*n,x)-a)+1;
cout<<min(n,num)<<endl;//记得和 n 取min
}
return 0;
}
T3 luoguP9498 「RiOI-2」equals \(55pts\)
- 直接从T3开写,起初爆搜骗到了 \(40pts\) ,优化到 \(55pts\) ,才去打的T1和T2。
- \(DFS\) 求深度不做讲解。
- 部分分: 爆搜(C++大法好,先剪枝后爆搜)
- \(45pts\)
- 跑一遍luoguP7535 [COCI2016-2017#4] Kas的滚动数组优化,判断是否有解,接着爆搜。
- \(55pts\)
- luoguP7535 [COCI2016-2017#4] Kas的滚动数组优化毫无用处。
- 隔壁wkh卡到了 \(95pts\),minecraft418爆搜AC了,但是我这个才 \(55pts\)。
- \(95pts\)
- wkh教我的对 \(memset\) 的优化 ,记一个 \(g\) 记录第 \(g\) 次进行搜索,那么当\(vis[x]\ne g\) 则等价于用 \(memset\) 初始化全 \(0\) 的情况。
- 可以特判一下链的情况,估计能过(口胡)。
- \(45pts\)
- 正解:贪心
- 发现一个性质,当深度之和为奇数时一定无解,为偶数时一定有解。
- 证明:当深度之和为偶数时,此处与luoguP7535 [COCI2016-2017#4] Kas 不同,因为一条链上的深度具有单调递增性,即若存在深度为 \(x(x>1)\) 的点,则一定存在深度为\(x-1\) 的点,用后者代替前者,则导致 \(\sum\limits_{ans_i=1}^{} dep_i\) 或者 \(\sum\limits_{ans_i=0}^{} dep_i\) 减小1,这样就保证了这样贪心不会错过任何一个实际能取到的值,故一定有解。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define sort stable_sort
#define endl '\n'
struct node
{
ll to,next;
}e[20000001];
struct equals
{
ll dep,val;
}c[20000001];
ll head[20000001],ans[20000001],cnt=0;
bool cmp(equals p,equals q)
{
return p.dep>q.dep;
}
void add(ll u,ll v)
{
cnt++;
e[cnt].next=head[u];
e[cnt].to=v;
head[u]=cnt;
}
void dfs(ll x,ll fa)
{
ll i;
c[x].dep=c[fa].dep+1;
c[x].val=x;
for(i=head[x];i;i=e[i].next)
{
if(e[i].to!=fa)
{
dfs(e[i].to,x);
}
}
}
int main()
{
ll n,i,j,u,v,sum=0;
cin>>n;
for(i=1;i<n;i++)
{
cin>>u>>v;
add(u,v);
add(v,u);
}
dfs(1,0);
for(i=1;i<=n;i++)
{
sum+=c[i].dep;
}
if(sum%2==0)
{
sum/=2;
sort(c+1,c+1+n,cmp);
for(i=1;i<=n;i++)
{
if(c[i].dep<=sum)
{
sum-=c[i].dep;
ans[c[i].val]=1;
}
}
for(i=1;i<=n;i++)
{
cout<<ans[i]<<" ";
}
}
else
{
cout<<"-1";
}
return 0;
}
- 发现一个性质,当深度之和为奇数时一定无解,为偶数时一定有解。
T4 luoguP9499 「RiOI-2」change \(0pts\)
- 没做到,咕了。
【LGR-150-Div.1】洛谷 8 月月赛 I & RiOI Round 2

T1 luoguP9498 「RiOI-2」equals \(55pts\)
- 同 \(2C\) 。
T2 luoguP9499 「RiOI-2」change \(0pts\)
- 没做到,咕了。
T3 luoguP9500 「RiOI-2」tnelat \(0pts\)
- 没做到,咕了。
T4 luoguP9501 「RiOI-2」likely \(0pts\)
- 没做到,咕了。
总结
当你觉得题很难时,请重读题面,看是不是读假题了。
当你觉得题很简单时,请重读题面,看是不是读假题了。
2023年多校联训NOIP层测试4+洛谷 8 月月赛 I & RiOI Round 2的更多相关文章
- Contest1893 - 2019年6月多校联训b层测试1
传送门 密码:waxadyt T1 暴力 对于任意相邻的两个值 中间能到达的最大高度是固定的 加上头尾,判一下就好了 代码//感谢Th Au K #include<bits/stdc++.h&g ...
- NOIP模拟赛(洛谷11月月赛)
T1 终于结束的起点 题解:枚举啊... 斐波那契数 第46个爆int,第92个爆long long.... 发现结果一般是m的几倍左右....不用担心T. #include<iostream ...
- NOIP 2008 传纸条(洛谷P1006,动态规划递推,滚动数组)
题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using na ...
- HXY玩卡片(水题测试2017082401&洛谷2192)
题目链接:HXY玩卡片 很水, 简单讲一下思路. 如果没有0,直接无解,因为不可能是10的倍数. 是9的倍数,则各个数位上的数字和为9的倍数,所以5的数量一定是9的倍数,所以只要尽可能多输出9的倍数个 ...
- Peter的烟(水题测试2017082401&洛谷1150)
题目链接:Peter的烟 这道题基本做法很水,不解释. #include<bits/stdc++.h> using namespace std; int main(){ int n,k; ...
- NOIP 2013 提高组 洛谷P1967 货车运输 (Kruskal重构树)
题目: A 国有 nn 座城市,编号从 11 到 nn,城市之间有 mm 条双向道路.每一条道路对车辆都有重量限制,简称限重. 现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)
2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】
[题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组
2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...
随机推荐
- ClickHouse的Join算法
ClickHouse的Join算法 ClickHouse是一款开源的列式分析型数据库(OLAP),专为需要超低延迟分析查询大量数据的场景而生.为了实现分析应用可能达到的最佳性能,分析型数据库(OLAP ...
- 如果诸葛亮用C#写出师表...
看到一篇18年的文章 "C++版<出师表>",站长觉得挺有意思的,就用C# 控制台也实现了一遍,技术上没啥难度,但复制代码费了1.2个小时,纯粹无聊写着玩,看者别在意枚 ...
- 配置Maven项目的pom.xml时遇到input contained no data问题
1.问题 2.解决 我发现每次当我修改一些部分之后,就会遇到这个问题 我遵循了他的建议重新排列标记属性,然后重新加载就解决了报错 个人怀疑是修改后并没有识别之类的? 最终原因:是我在Maven项目中的 ...
- phpcms: Warning: "continue" targeting switch is equivalent to "break" 解决方案
Warning: "continue" targeting switch is equivalent to "break". Did you mean to u ...
- SpringMVC06——数据绑定——2021-05-09
数据绑定介绍 在执行程序时,SpringMVC会根据客户端请求参数的不同, 将请求信息中的信息以一定的方式转换并绑定到控制器类的方法参数中. 在数据绑定过程中,SpringMVC框架会通过数据绑定组件 ...
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.15)
一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.23)
一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...
- .NET集成IdGenerator生成分布式全局唯一ID
前言 生成分布式唯一ID的方式有很多种如常见的有UUID.Snowflake(雪花算法).数据库自增ID.Redis等等,今天我们来讲讲.NET集成IdGenerator生成分布式全局唯一ID. 分布 ...
- [转帖]Spring为啥不推荐使用@Autowired注解?
https://my.oschina.net/u/5079097/blog/5289666 引言 使用IDEA开发时,同组小伙伴都喜欢用@Autowired注入,代码一片warning,看着很不舒 ...
- [转帖]oracle数据库中RMAN备份格式化format解释
格式化解释: 使用格式串 更改格式命令: RMAN> configure channel device type disk format ' E:\app\Administrator\db_ba ...