CSP-S模拟40

news/2025/10/27 21:52:57/文章来源:https://www.cnblogs.com/countryhuman/p/19170263

前言:

谢谢 养鸡大户 帮我调 \(T1\) 的代码。

谢谢 小青蛙 给我讲解 \(T2\)

T1:公约数神庙(gcd)

思路:

其实大体思路不是很难,但是特判的情况真的好多啊。能在赛时水水的大数据下想到所有特判情况的大佬真的存在吗???

显然从头到尾大体分为两类,直达的和中转的。

直达的好说,判一下首位两个数有无共同的质因数就好。

然后就考虑中转的。遍历首尾之间的点,如果守点能到该点,则相当于该点的质因数也是首点的质因数。或许较为抽象,可以手模一下:

image

显然 \(2\)\(6\) 的连接是合法的。那么 \(2\) 从此以后能通过 \(6\) 到达所有含有质因数 \(3\) 的数,在某种意义上相当于 \(2\) 有了质因数 \(3\)

因为 \(1000\) 内有 \(168\) 个质因数,所以我们可以用 \(bitset\) 预处理出每个数含有哪个质因数。

若两个数的 \(gcd\) 大于 \(1\) ,即 \(bitset\) 按位与后有 \(1\)

中转点可以视为按位或操作。

代码:

$code$
#include<iostream>
#include<bitset> 
using namespace std;
const int N=1e5+5;
int n,m,p,q,cnt,a[N],pri[200];
bool vis[N];
bitset<200> s[N];
inline void init(){for(int i=2;i<=1005;i++){if(!vis[i]) pri[++cnt]=i;for(int j=i*2;j<=1005;j+=i) vis[j]=1;}
}
int main(){freopen("gcd.in","r",stdin);freopen("gcd.out","w",stdout);ios::sync_with_stdio(false);init();cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];int tmp=a[i];for(int j=1;j<=cnt&&pri[j]<=tmp;j++){if(tmp%pri[j]==0){s[i][j]=1;while(tmp%pri[j]==0) tmp/=pri[j];}}}while(m--){cin>>p>>q;//特判 if(p==q){//相等 cout<<"Shi"<<'\n';continue;}if(a[p]==1||a[q]==1){//有一肯定不行呀 cout<<"Fou"<<'\n';continue;}if((a[p]&&!a[q])||(!a[p]&&a[q])){//0跟任何数的gcd都是原数 cout<<"Shi"<<'\n';continue;}if(!a[p]&&!a[q]){//首尾都是0 bool f=0;for(int i=p+1;i<q;i++){if(a[i]>1){//你猜为什么我调了1 hour f=1;cout<<"Shi"<<'\n';break;}}if(!f) cout<<"Fou"<<'\n';continue;}if(a[p]==a[q]&&a[p]&&a[q]){//相等一定可以 cout<<"Shi"<<'\n';continue;}//直达: if((s[p]&s[q]).count()){cout<<"Shi"<<'\n';continue;}//中转:bool f=0;for(int i=p+1;i<q;i++){if(!a[i]){f=1;cout<<"Shi"<<'\n';break;}}if(f) continue;bitset<200> w=s[p];for(int i=p+1;i<q;i++) if((w&s[i]).count()) w=w|s[i];//中转站 if((w&s[q]).count()) cout<<"Shi"<<'\n';else cout<<"Fou"<<'\n';}return 0;
}

T2:栈法师(sort)

思路:

显然我们最多最多只需要两个栈。无论你想要什么,只要把目前看来有点碍事的家伙移到另一个栈就好啦。

所以我们只需要判断一下一个栈能否搞定,不能的话就是两个栈喽

对于一个栈的情况:

我们先将 \(a\) 序列里的东西全部压入栈中,然后碰到我们想要的就弹出。

如果我们想要的在栈的下面,那么很显然一个栈就无法完成操作了。

对于两个栈的情况:

其实就是我们把上面提到的目前看起来有些碍事的家伙移到中转栈里去。

操作数就是它的原始位置的前面的大于它的数,用树状数组维护一下就可以了。

代码:

$code$
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<stack> 
#define lowbit(x) x&(-x)
using namespace std;
const int N=1e5+5;
int T,n,a[N],tr[N],pos[N];
struct flower{int val,num;bool operator < (const flower &css)const{if(val!=css.val) return val<css.val;else return num<css.num;}
}b[N];
stack<int> s;
vector<int> ans;
inline void add(int x,int val){while(x<=n){tr[x]+=val;x+=lowbit(x);}
}
inline int query(int x){int ans=0;while(x){ans+=tr[x];x-=lowbit(x);}return ans;
}
inline bool check(){ans.clear();while(!s.empty()) s.pop();int now=n;for(int i=1;i<=n;i++){while((s.empty()||s.top()!=b[i].val)&&now){s.push(a[now--]);ans.push_back(1);}if(s.top()==b[i].val){ans.push_back(0);s.pop(); }else return 0;}return 1;
}
inline void work(){ans.clear();while(!s.empty()) s.pop();for(int i=1;i<=n;i++) pos[i]=n-b[i].num+1;for(int i=1;i<=n;i++) add(i,1);int c=n;for(int i=1;i<=n;i++){int d=query(pos[i])-query(c);if(d) ans.push_back(d);ans.push_back(0);add(pos[i],-1);c=pos[i];}cout<<2<<'\n';cout<<ans.size()+1<<'\n';cout<<"1 1 "<<n<<'\n';for(int op:ans){if(op>0) cout<<"3 2 1 "<<op<<'\n';if(op<0) cout<<"3 1 2 "<<-op<<'\n';if(!op) cout<<"2 1"<<'\n';}
}
int main(){freopen("sort.in","r",stdin); freopen("sort.out","w",stdout);ios::sync_with_stdio(false);cin>>T;while(T--){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];b[i]=(flower){a[i],i};}sort(b+1,b+1+n);if(check()){cout<<1<<'\n';cout<<ans.size()<<'\n';for(auto op:ans){if(op) cout<<"1 1 1"<<'\n';else cout<<"2 1"<<'\n';}}else work();}return 0;
}

T3、T4还不会呀

后言:

The puppy is divine.

t_251027134622_OIP-C

t_251027134627_OIP-C (1)

t_251027134631_OIP-C (2)

song1

嘲笑谁恃美扬威 没了心如何相配
盘铃声清脆 帷幕间灯火幽微
我和你 最天生一对
没了你才算原罪 没了心才好相配
你褴褛我彩绘 并肩行过山与水
你憔悴 我替你明媚
是你吻开笔墨 染我眼角珠泪
演离合相遇悲喜为谁
他们迂回误会 我却只由你支配
问世间哪有更完美
兰花指捻红尘似水
三尺红台 万事入歌吹
唱别久悲不成悲 十分红处竟成灰
愿谁记得谁 最好的年岁
银临:你一牵我舞如飞 你一引我懂进退
苦乐都跟随 举手投足不违背
将谦卑 温柔成绝对
你错我不肯对 你懵懂我蒙昧
心火怎甘心扬汤止沸
你枯我不曾萎 你倦我也不敢累
用什么暖你一千岁
风雪依稀秋白发尾
灯火葳蕤 揉皱你眼眉
假如你舍一滴泪 假如老去我能陪
烟波里成灰 也去得完美
风雪依稀秋白发尾
灯火葳蕤 揉皱你眼眉
假如你舍一滴泪 假如老去我能陪
烟波里成灰 也去得完美

song2

森林音乐会 现在时间到
太阳睁开眼 公鸡吹起号
松鼠百灵鸟 排队不打闹
狮子老虎 一起蹦蹦跳
乌龟和兔子 远方正赛跑
背上小书包 我要去学校
现在就出发 和世界拥抱
跟我一起
蹦蹦 跳跳 阳光在照耀
蹦蹦 跳跳 我们没烦恼
蹦蹦 跳跳 从不睡懒觉
好事要来到 跟我一起
蹦蹦 跳跳 阳光在照耀
蹦蹦 跳跳 我们没烦恼
蹦蹦 跳跳 从不睡懒觉
好事要来到
小羊低下头 小草土里冒
狗狗在奔跑 小猫喵喵叫
猴子手拉手 不急也不躁
跟我一起
蹦蹦 跳跳 阳光在照耀
蹦蹦 跳跳 我们没烦恼
蹦蹦 跳跳 从不睡懒觉
好事要来到 跟我一起
蹦蹦 跳跳 阳光在照耀
蹦蹦 跳跳 我们没烦恼
蹦蹦 跳跳 从不睡懒觉
好事要来到 跟我一起
蹦蹦 跳跳 阳光在照耀
蹦蹦 跳跳 我们没烦恼
蹦蹦 跳跳 从不睡懒觉
好事要来到 跟我一起
蹦蹦 跳跳 阳光在照耀
蹦蹦 跳跳 我们没烦恼
蹦蹦 跳跳 从不睡懒觉
好事要来到 要来到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CF1608F MEX counting 题解

\(\text{CF1608F MEX counting 题解}\) 求方案数显然是考虑 dp。考虑每次填一个数时 MEX 的变化:显然不降,但增幅不确定。我们并没有办法通过状压等技巧维护各个数的取值,考虑在 MEX 变化的时候维护每次大于当前 ME…

[题解]P7914 [CSP-S 2021] 括号序列

P7914 [CSP-S 2021] 括号序列 学习了 题解 P7914 【[CSP-S 2021] 括号序列】 - enucai 后进行记录。感谢原作者~下文用 \(K\) 表示输入的 \(k\)。 考虑区间 DP。 定义 \(f_{i,j,k\in\{0,1,2,3,4,5\}}\) 为区间 \([i,j…

Windows11安装miniconda

Windows11安装miniconda1. 下载地址https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda操作系统和芯片架构 文件MacOS Intel Chip Miniconda3-latest-MacOSX-x86_64.shMacOS Apple Silicon Miniconda3-latest-M…

【中份薯条】雷柏MT760鼠标上手改装

🍟现在登场的是 Master3 的异父异母亲兄弟 雷柏MT760 改装笔记。兄弟,你也要来点薯条吗?这里有中份的🍟 前言之前买的罗技 G502无线版 和 MX ERGO 在我的高强度使用下,都是先坏微动再坏外壳,罗技发挥相当稳定�…

102302116 田自豪 作业1

作业1 1)用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。 代码与运行结果点击查看代码 import requests from bs4 imp…

实验二:现代C++编程初体验

T.h#pragma once #include <string> // 类T: 声明 class T {// 对象属性、方法 public:T(int x = 0, int y = 0); // 普通构造函数T(const T& t); // 复制构造函数T(T&& t); // 移动构造函数~T(); /…

公众号排版神器:2025年最新顶级AI排版软件索引指南

导语:公众号排版设计总是耗时耗力,容易出错,有什么高效工具能解决这个问题? 公众号运营者常面临排版慢、样式不统一、平台合规风险等痛点。例如,一篇千字文章手动排版需1-2小时,稍不留神可能触发违规词,导致被平…

第四篇:docker底层原理

第四篇:docker底层原理chroot技术(容器底层使用了chroot技术) chroot是一种通过改变进程的根目录来创建隔离文件系统环境的技术ldd命令用于显示二进制可执行文件或共享库所依赖的所有动态链接库# 1.创建工作目录 [r…

【中份薯条】雷柏MT760上手改装

兄弟,你也要来点薯条吗?这里有中份的🍟 前言之前买的罗技 G502无线版 和 MX ERGO 在我的高强度使用下,都是先坏微动再坏外壳,罗技发挥相当稳定🤤 那么接替 G502 的是: Master3 的异父异母亲兄弟 雷柏 MT760�…

软件测试和DevOps的关系

软件测试是 DevOps 成功实践的基石和保障,而 DevOps 为软件测试带来了革命性的挑战和机遇。它们不是对立的关系,而是深度融合、相互依赖的共生关系。你可以把测试看作是贯穿 DevOps 流水线的“质量守护神”。下面我们…

PyPDF无限循环漏洞CVE-2025-62707技术分析

本文详细分析了PyPDF库中的CVE-2025-62707安全漏洞,该漏洞在处理缺少EOF标记的DCT内联图像时会导致无限循环。文章包含漏洞描述、影响版本、解决方案和CVSS评分等技术细节,帮助开发者理解和防范此类安全问题。CVE-20…

重组蛋白技术概述

重组蛋白技术概述重组蛋白是通过基因工程技术在体外表达的蛋白质分子。该技术将目标基因序列导入表达载体,转化至宿主细胞中,利用细胞的转录翻译机制合成蛋白质。重组蛋白技术在生命科学研究中已成为不可或缺的工具,…

题解:luogu P4948 数列求和

题解:luogu P4948 数列求和 要求: \[\sum_{i = 1}^{n}{i^k a^i} \]其中 \(n \leq 10^{18},k \leq 2000\) 这种 \(k\) 次方但是 \(k\) 特别小的一般都是将 \(i^k\) 通过斯特林数展开。 由: \[x^n=\sum_{i = 0}^{n}{i…

关于springboot+Servlet报错404的问题

假如遇到使用springboot+Servlet的方式进行开发或者学习(一般是作业),其中有个经常遇到的问题是访问不到,会报404的错误,资源未加载; 网上有很多解决方法,例如加ServletComponentScan()包扫描路径,但是我帮一…

10.27 CSP-S模拟40 改题记录

爆零场HZOJ 写在前面 没想到离CSP还有4天然后创造了一次保龄的经历。。。然后就是读假题专场。其实感觉没有太难但是。。。好吧,碍于时间不多,也不说废话了。A. 公约数神庙 我无言。我以为我败在了空间,结果其实是败…

Codechef Painting Tree 题解 [ 蓝 ] [ 树形 DP ] [ 概率期望 ] [ 分类讨论 ]

Painting Tree 若干个月前模拟赛切的题,当时写了 3h+,被细节恶心坏了,遂记之。 题意可以转化为求树上存在相交链的期望时间。 考虑如何计算这个期望。显然我们可以枚举选取链的个数,根据期望的定义式来算: \[E(X)…

Linux运行命令三种方式对比

三种方式临时测试 → nohup 稳定运行 → supervisor 系统级守护 → systemd测试用例/data/test.sh #!/bin/bash # /data/test.sh - Linux 简单输出时间的 demo 脚本while true doecho "$(date +%Y-%m-%d %H:%M:%S…

P14322 「ALFR Round 11」E 空崎ヒナ 题解 (markdown)

P14322 「ALFR Round 11」E 空崎ヒナ 题解 (markdown)## P14322 「ALFR Round 11」E 空崎ヒナ 题解**Sorasaki Hina 赛高!**也是做上 BA 的题了!也是写上 BA 的题的题解了!我们 BA 厨的日子真是蒸蒸日上啊!求审核大…

详细介绍:论文阅读 (1) :Control Flow Management in Modern GPUs

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

公众号排版2025年权威推荐:揭秘有一云AI编辑器为何高效?

01|痛点雷区清单:为什么总被“排版”拖慢?层级乱:复制到后台后行距、间距、引用样式全乱,返工 ≥ 2 轮。 版式碎:字体、分隔、留白没节奏,读者滑两屏就流失。 配图难:素材东拼西凑、风格不统一,还担心侵权。 …