首页 > 其他分享 >『模拟赛』多校A层冲刺NOIP2024模拟赛11

『模拟赛』多校A层冲刺NOIP2024模拟赛11

时间:2024-10-22 18:10:58浏览次数:7  
标签:11 ch int lx qr 模拟 fo NOIP2024 define

Rank

考前不挂就是赢

image

A. 冒泡排序

签,简单的有点格格不入。

发现错误代码实质上是将原序列划分成了若干个连通块,并对每个连通块做一遍排序。并查集维护,\(\mathcal{O(n)}\) 扫一遍合并连通块,然后按顺序输出即可。复杂度最坏 \(\mathcal{O(n\log n)}\)。

点击查看代码
#include<bits/stdc++.h>
#define fo(x, y, z) for(register int (x) = (y); (x) <= (z); (x) ++)
#define fu(x, y, z) for(register int (x) = (y); (x) >= (z); (x) --)
using namespace std;
typedef long long ll;
#define lx ll
inline lx qr()
{
    lx x = 0, f = 1; char ch = getchar();
    for(; ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
    for(; ch >= '0' && ch <= '9'; ch = getchar()) x = (x << 3) + (x << 1) + (ch ^ 48);
    return x * f;
}
#undef lx
#define fi first
#define se second
#define pii pair<int, int>
#define P_B(x) push_back(x)
#define M_P(x, y) make_pair(x, y)
#define qr qr()
const int Ratio = 0;
const int N = 1e6 + 5;
int n, k;
int a[N], fx[N], tim[N];
vector<int> v[N];
bool yz[N];
namespace Wisadel
{
    int Wfind(int x)
    {
        if(x == fx[x]) return x;
        return fx[x] = Wfind(fx[x]);
    }
    short main()
    {
        freopen("bubble.in", "r", stdin) , freopen("bubble.out", "w", stdout);
        n = qr, k = qr;
        fo(i, 1, n) a[i] = qr, fx[i] = i;
        fo(i, 1, n - 1)
        {
            if(i + k > n) break;
            int _ = Wfind(i), __ = Wfind(i + k);
            fx[__] = _;
        }
        fo(i, 1, n) v[Wfind(i)].P_B(a[i]);
        fo(i, 1, n) if(v[i].size()) sort(v[i].begin(), v[i].end());
        fo(i, 1, n)
        {
            int _ = Wfind(i);
            printf("%d ", v[_][tim[_]++]);
        }
        puts("");
        return Ratio;
	}
}
int main(){return Wisadel::main();}

B. 染色

后面唯一的可做题(大概。

发现正着很难在计数的过程中去重,因此我们直接考虑最后的结果。关键的性质是:将原序列相邻项去重,可以操作得到的序列只能是它的子序列。手模还是好理解的。然后问题就很简单了,考虑设 \(f_{i,j}\) 表示以 \(i\) 结尾长度为 \(j\) 的方案数,转移显然有 \(f_{i,j}=1+\sum_{k\neq i}\ f_{k,j-1}\)。发现时间空间都是 \(\mathcal{O(n^2)}\) 的,直接上 bitset 优化,然后就做完了,复杂度 \(\mathcal{O(\frac{n^2}{w})}\)。

点击查看代码
#include<bits/stdc++.h>
#define fo(x, y, z) for(register int (x) = (y); (x) <= (z); (x) ++)
#define fu(x, y, z) for(register int (x) = (y); (x) >= (z); (x) --)
using namespace std;
typedef long long ll;
#define lx ll
inline lx qr()
{
    lx x = 0, f = 1; char ch = getchar();
    for(; ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
    for(; ch >= '0' && ch <= '9'; ch = getchar()) x = (x << 3) + (x << 1) + (ch ^ 48);
    return x * f;
}
#undef lx
#define fi first
#define se second
#define pii pair<int, int>
#define P_B(x) push_back(x)
#define M_P(x, y) make_pair(x, y)
#define qr qr()
const int Ratio = 0;
const int N = 1e5 + 1, M = 2e4 + 1;
const int mod = 2;
int n, m, ans;
int a[N];
bitset<N> f[M], zc, tot;
namespace Wisadel
{
    inline int Wc(int n, int m){return (n & m) == m;}
    short main()
    {
        freopen("color.in", "r", stdin) , freopen("color.out", "w", stdout);
        int T = qr;
        while(T--)
        {
            n = qr, m = qr, ans = 0;
            fo(i, 1, n) a[i] = qr;
            fo(i, 1, m) f[i].reset();
            tot.reset();
            fo(i, 1, n)
            {
                int cz = a[i];
                zc = tot ^ f[cz];// 其它结尾的方案数和
                f[cz] = zc << 1;
                f[cz][1] = 1;
                tot = zc ^ f[cz];
            }
            fo(i, 1, n) ans ^= Wc(n - 1, i - 1) * tot[i] % 2;
            printf("%d", ans);
        }
        return Ratio;
	}
}
int main(){return Wisadel::main();}

C. 图

出题人说是套路题,然后 std 23k。

D. 山峦

简单(?)计数题。

挺温暖的,给爆搜送了 40pts,需要一点优化,不然会挂到 30~35pts。

题解做法用到什么高维前缀和优化,不会,std 写的依托,所以学了一个不知名大神的 75pts 做法,就是搜着转移。但是竖着搜需要开 \(n\times 184756\times m\) 的 dp 数组,速度也不够,然后就 GG 了。

期待一手晚上能改出来这道。

赤石场 ++。

厕所听到的
我前 10min 拿 100pts,后 230min 拿 4pts。

这难度梯度跨度我认可了。

nt 出题人压行还能打出 700 行 23k 的 std。

没挂分,rp++。


完结撒花~

image

标签:11,ch,int,lx,qr,模拟,fo,NOIP2024,define
From: https://www.cnblogs.com/Ratio-Yinyue1007/p/18493454

相关文章

  • 多校A层冲刺NOIP2024模拟赛11
    多校A层冲刺NOIP2024模拟赛11\(T1\)A.冒泡排序\(100pts/100pts/100pts\)将循环\(j\)提到外面,本质上是对\(a_{j},a_{j+k},a_{j+2k},\dots,a_{j+xk}\)进行排序迭代的过程。按下标模\(k\)的余数分别排序即可。点击查看代码inta[1000010];vector<int>b[1000......
  • YOLOv11模型改进-注意力-引入简单无参数注意力模块SimAM 提升小目标和遮挡检测
                本篇文章将介绍一个新的改进机制——卷积和注意力融合模块SimAM ,并阐述如何将其应用于YOLOv11中,显著提升模型性能。首先,SimAM是一种用于卷积神经网络的简单且无参数的注意力模块,它基于神经科学理论定义能量函数来计算3-D注意力权重,能有效提升网络......
  • 多校A层冲刺NOIP2024模拟赛11
    又双叒叕垫底了。rank11,T190,T212,T35,T435。accdoer上rank44,T1100,T20,T35,T435。难度难评,T1签,剩下的不可做?死磕T3了,猜一个结论假一个,打完暴力遗憾离场。好像两个题库都挂了几分,不管了,赛前挂分RP就++。慢报:5k_sync_closer成功地取得了NFLS模拟赛第一名的好成绩。冒泡......
  • Docker 部署 JDK11 图文并茂简单易懂
    部署JDK11(Docker)[Step1]:下载JDK11-JDK11|Oracle甲骨文官网[Step2]:jdk11上传服务器/root/jdk11可自行创建文件夹进入目录/root/jdk11解压文件tar-zxvfjdk-11.0.22_linux-x64_bin.tar.gz解压后进入/root/jdk11/jdk-11.0.22创建jre文件......
  • [DMY]CSP-S 模拟赛 Day 20
    CSP-S前最后一场代码源了。赛时T1看上去是一个很神秘的题目,在纸上推了半天勉勉强强想到一个奇怪的贪心做法。看到数据范围,发现直接做的话会超时,但是考虑到C++内置的sort函数可以帮助优化时间复杂度,所以写了个很丑的神秘排序。发现做完以后只能判断两种特殊情况,思考怎样......
  • 2024淘宝双十一红包口令大全,双11满300减多少?
    2024年双十一淘宝红包活动已经于10月14日晚上20点正式启动。朋友们都在寻找2024年双十一淘宝领红包的口令。那么,这个神秘的超级红包口令到底是什么呢?让我们一起加入这场购物的盛宴吧!那么,2024最新的的淘宝双十一红包口令到底是什么呢?2024淘宝双十一红包口令是【¥CZ00017DEM3N......
  • 11-案例:多线程版用户聊天程序
    1.多线程版用户群聊程序的_多用户聊天运行结果2.多线程版用户群聊程序的_服务端代码3.多线程版用户群聊程序的_客户端代码4.多线程版用户群聊程序的_双用户聊天运行结果5.多线程版用户群聊程序的_双用户聊天运行服务端代码6.多线程版用户群聊程序的_双用户聊天运行客户端代码......
  • 使用PIC单片机驱动OLED模块(软件模拟IIC模式)
    @使用PIC单片机驱动OLED模块(软件模拟IIC模式)使用PIC单片机驱动OLED模块(软件模拟IIC模式)最近学习Microchhip的PIC18系列单片机,使用该款单片机进行一些外设的开发。发现网上的资料很少,故开了此个博客,对自己的学习过程进行一些记录,希望未来国内Microchip的社区能有更多的资源......
  • Cpp::STL—容器适配器priority_queue的讲解和模拟实现(17)
    文章目录前言一、优先级队列的使用介绍使用一道题目二、仿函数的讲解对内置类型对自定义类型三、模拟实现priority_queue两个仿函数构造函数向上调整和向下调整插入数据和删除数据其他常用接口总概一览总结前言  承接上一篇容器适配器的内容,本篇我们再来学一个......
  • Win11安装WSL2,自定WSL2安装位置,安装到其他磁盘(非C盘)
    参考:【Linux】自定义WSL2安装位置,安装到其他磁盘(非C盘)_wsl2指定安装路径-CSDN博客超详细Windows10/Windows11子系统(WSL2)安装Ubuntu20.04(带桌面环境)_wsl安装ubuntu20.04-CSDN博客旧版WSL的手动安装步骤|MicrosoftLearn【安装笔记-20240520-Windows-自定义WSL2安装......