暑假集训csp提高模拟9

news/2024/9/8 10:23:15/文章来源:https://www.cnblogs.com/hzoi-Cu/p/18327019

赛时rank15 T1 0,T2 100,T3 0,T4 0

T1,T3 都会做,然后都挂了。

恼了,挂200,不愧是我,唐

T1 大众点评

「JOISC 2014 Day1」拉面比较

简单的交互。

考虑选择相邻的两组,小的单独存一个,大的单独存一个,是比较200次

再将大的互相比较,小的互相比较,各200次

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
#include "ramen.h"
using namespace std;
void Ramen(int N){vector<int> mn,mx;// Answer(1000000,10000);if(N == 1)return Answer(0,0),void();int mxpos,mnpos;for(int i = 1;i < N; i += 2){int res = Compare(i-1,i);if(res == -1){mn.push_back(i-1);mx.push_back(i);}else{mx.push_back(i-1);mn.push_back(i);}}if(N&1) mn.push_back(N-1),mx.push_back(N-1);mxpos = mx[0];for(int i = 1;i < mx.size(); ++i){if(Compare(mx[i],mxpos) == 1) mxpos = mx[i];}mnpos = mn[0];for(int i = 1;i < mn.size(); ++i){if(Compare(mn[i],mnpos) == -1) mnpos = mn[i];}Answer(mnpos,mxpos);
}

T2 录取查询

[ABC285F] Substring of Sorted String

简单题。

我们发现当一个字符串可以是子串时当且仅当它是升序排列的,且除了第一个字符和最后一个字符,中间的字符在整个字符串的其他位置没有出现过。

权值树状数组记录一下出现次数,线段树记录一下区间极值、区间是否单调。注意一下树状数组和线段树的细节。

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
using namespace std;
#define infile(x) freopen(x,"r",stdin)
#define outfile(x) freopen(x,"w",stdout)
#define errfile(x) freopen(x,"w",stderr)
using ll=long long;using ull=unsigned long long;using db = double;
#ifdef LOCALFILE *InFile = infile("in.in"),*OutFile = outfile("out.out");// FILE *ErrFile=errfile("err.err");
#elseFILE *Infile = stdin,*OutFile = stdout;//FILE *ErrFile = stderr;
#endif
const int N = 1e5 + 10;
struct BIT{
private:#define lowbit(x) (x&(-x))int tree[N];
public:int mx;inline void update(int pos,int val){for(int i = pos;i <= mx;i += lowbit(i)) tree[i] += val;}inline int query(int pos){int res = 0;for(int i = pos; i;i -= lowbit(i)) res += tree[i];return res;}
}T[27];
char s[N];
int n,m;
class Segment_Tree{
private:struct segment_tree{int l,r;bool pd;char mn,mx;#define l(x) tree[x].l#define r(x) tree[x].r#define pd(x) tree[x].pd#define mn(x) tree[x].mn#define mx(x) tree[x].mx}tree[N<<2];
public:inline void pushup(int k){pd(k) = ((s[r(k<<1)] <= s[l(k<<1|1)]) && pd(k<<1) && pd(k<<1|1));mn(k) = min(mn(k<<1),mn(k<<1|1));mx(k) = max(mx(k<<1),mx(k<<1|1));}void build(int k,int l,int r){l(k) = l,r(k) = r;if(l == r) return pd(k) = true,mn(k) = mx(k) = s[l],void();int mid = (l+r)>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);pushup(k);// cerr<<l(k)<<' '<<r(k)<<' '<<r(k<<1)<<' ' <<s[r(k<<1)]<<' '<<l(k<<1|1)<<' '<<s[l(k<<1|1)]<<'\n';}void update(int k,int pos){if(l(k) == r(k)) return mn(k) = mx(k) = s[pos],void();int mid = (l(k) + r(k))>>1;if(pos <= mid) update(k<<1,pos);else update(k<<1|1,pos);pushup(k);}bool query(int k,int l,int r){if(l <= l(k) && r(k) <= r) return pd(k);int mid = (l(k) + r(k)) >> 1;if(l > mid) return query(k<<1|1,l,r);if(r <= mid) return query(k<<1,l,r);return query(k<<1,l,r) && query(k<<1|1,l,r) && (s[r(k<<1)] <= s[l(k<<1|1)]);}char query_min(int k,int l,int r){if(l <= l(k) && r(k) <= r) return mn(k);int mid = (l(k) + r(k)) >> 1;if(r <= mid) return query_min(k<<1,l,r);if(l > mid) return query_min(k<<1|1,l,r);return min(query_min(k<<1,l,r),query_min(k<<1|1,l,r));}char query_max(int k,int l,int r){if(l <= l(k) && r(k) <= r) return mx(k);int mid = (l(k) + r(k)) >> 1;if(r <= mid) return query_max(k<<1,l,r);if(l > mid) return query_max(k<<1|1,l,r);return max(query_max(k<<1,l,r),query_max(k<<1|1,l,r));}
}St;
signed main(){cin.tie(nullptr)->sync_with_stdio(false);cout.tie(nullptr)->sync_with_stdio(false);cin>>n>>(s+1);for(int i = 0;i <= 26; ++i) T[i].mx = n;for(int i = 1;i <= n; ++i) T[s[i]-'a'].update(i,1);St.build(1,1,n);cin>>m;while(m--){int op,l,r,x;char c;cin>>op;if(op == 1){cin>>x>>c;T[s[x]-'a'].update(x,-1);s[x] = c;T[s[x]-'a'].update(x,1);St.update(1,x);}else{cin>>l>>r;if(!St.query(1,l,r)) cout<<"No\n";else{bool flag = true;int bg = St.query_min(1,l,r)-'a';int ed = St.query_max(1,l,r)-'a';for(int i = bg;i <= ed; ++i){if(i == s[l]-'a' || i == s[r] -'a') continue;if(l > 1?T[i].query(r) - T[i].query(l-1) != T[i].query(n):T[i].query(r) != T[i].query(n)){cout<<"No\n";flag = false;break;}}if(flag) cout<<"Yes\n";}}}
}

T3 精准打击

[ABC290G] Edge Elimination

从根节点考虑,若任意一棵子树都大于x,那么就将根节点的所有连边剪断,递归至任意子树。

如果任意一颗子树不大于x,那么就保留根节点,看看要保留几颗子树。如果有不满一颗的,递归处理。

注意根节点上是否要剪边。

就,没了

点此查看代码
#include<bits/stdc++.h>
#include<bits/extc++.h>
// using namespace __gnu_pbds;
// using namespace __gnu_cxx;
using namespace std;
#define infile(x) freopen(x,"r",stdin)
#define outfile(x) freopen(x,"w",stdout)
#define errfile(x) freopen(x,"w",stderr)
using ll=long long;using ull=unsigned long long;using db = double;
#ifdef LOCALFILE *InFile = infile("in.in"),*OutFile = outfile("out.out");// FILE *ErrFile=errfile("err.err");
#elseFILE *Infile = stdin,*OutFile = stdout;//FILE *ErrFile = stderr;
#endif
ll d,k,x;
signed main(){cin.tie(nullptr)->sync_with_stdio(false);cout.tie(nullptr)->sync_with_stdio(false);int T;cin>>T;while(T--){cin>>d>>k>>x;ll res = k;ll a[100];a[0] = 1;for(int i = 1;i <= d; ++i) a[i] = a[i-1] * k + 1;ll ans = 1e18;for(int i = 0;i <= d; ++i){if(a[i] >= x){ll res = !(i == d);ll tot = a[i] - x,j = i - 1;while(tot && j >= 0){res += tot/a[j];tot %= a[j];j--;}ans = min(ans,res);}}cout<<ans<<'\n';}
}

T4 你画我猜

[BJOI2018] 双人猜数游戏

两个神仙玩游戏,Alice不知道,Bob也不知道,几个不知道后,就都知道了。

太难了。跳了。

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

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

相关文章

ComfyUI插件:ComfyUI Impact 节点(一)

前言: 学习ComfyUI是一场持久战,而 ComfyUI Impact 是一个庞大的模块节点库,内置许多非常实用且强大的功能节点 ,例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用,我们可以实现的工作有很多,例如自动人脸检测和优化修…

ComfyUI进阶:Comfyroll节点 (最终篇)+应用实例

前言: 学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业的图像生成与编辑工具。借助这些节点,用户可以在静态图像的精细调整和动态动画的复杂构建方面进行深入探索。Comfyroll 的节点设计简洁易用,功能…

松灵机器人scout mini小车 自主导航(4)——运行lio-sam建图

松灵机器人Scout mini小车运行lio-sam 在之前的工作中,我们已经实现了用小车搭载传感器,采用gmapping建图和navigation导航实现小车在2D环境中自主导航,但是实际我们采用的激光雷达多为三维激光雷达。因此决定采用lio-sam来建图。具体操作步骤如下。 1.下载雷达仿真 1.1下载…

[题解]P2672 [NOIP2015 普及组] 推销员

P2672 [NOIP2015 普及组] 推销员 为了便于操作,将住户信息按疲劳值从大到小排序。 那么对于选\(X\)个住户,有\(2\)种情况:选疲劳值前\(X\)大的住户,答案即为\(\sum\limits_{i=1}^X a[i] + 2\times \max\limits_{i=1}^X s[i]\)。 选疲劳值前\(X-1\)大的住户,然后在剩下的住…

LockSupport

LockSupprot 用来阻塞和唤醒线程,底层实现依赖于 Unsafe 类(后面会细讲)。 该类包含一组用于阻塞和唤醒线程的静态方法,这些方法主要是围绕 park 和 unpark 展开。 public class Main {public static void main(String[] args) {Thread mainThread = Thread.currentThread(…

计算机组成与体系结构-浮点数表示

定点数: 是一种在计算机中表示和处理实数的方法,其中,小数点的位置是固定的,不会随着数值的大小而变化。浮点数: 是计算机中用于表示实数的一种数据类型。小数点 位置浮动浮点数表示阶码(指数部分): 决定了浮点数可以表示的范围。阶码越长,可以表示的指数范围就越大 尾数(有…

渗透

渗透测试 一、简介 ​ 渗透测试(Penetration Testing)是一种通过模拟攻击的技术与方法,挫败目标系统的安全控制措施并获得控制访问权的安全测试方法。 ​ 网络渗透测试主要依据CVE(Common Vulnerabilities and Exposures,通用漏洞与披露)已经发现的安全漏洞,模拟入侵者的攻击…

学习Java的第四周

第四周的学习记录来喽,本周的重点就是之前提到过的判断和循环(其中包括流程控制语句的三种结构:顺序、分支、循环;顺序结构即Java程序的默认流程,分支结构学了if判断语句的三种格式、switch语句练习和扩展知识,循环结构学了for循环格式和练习、累加思想和统计思想、while…

idea在pom中引入第三方依赖

项目右侧点击maven,点击加号(鼠标放上去会出现add maven project字样) 找到要导入的项目的pom文件选中,ok(这里我以及导入过了,所以ok是灰色) 回到原项目中,在pom中添加dependency 其中,artifactId是导入进来的姓名的名字,groupId是导入进来的项目的java目录下的包名…

计算机组成与体系结构-cache

概念 Cache,高速缓冲存储器。是解决CPU与主存之间速度不匹配而采用的一项重要技术,位于主存与CPU之间,由静态存储芯片(SRAM)组成,容量比较小,Cache存储了频繁访问的内存数据命中率 CPU欲访问的信息已在Cache中的比率,设在一段程序执行期间cache完成存取次数为NC,主存完成…

《Programming from the Ground Up》阅读笔记:p88-p94

《Programming from the Ground Up》学习第5天,p88-p94总结,总计7页。 一、技术总结 1.touppercase.s #PURPOSE: This program converts an input file #to an output file with all letters #converted to uppercase.#PROCESSING: #(1)Open the input file #(2)Open the o…

计算机网络第三讲 数据链路层

计算机网络第三讲 数据链路层 第一节:数据链路层功能 1. 概述2. 数据链路层的功能封装成帧透明传输差错控制实现无比特差错 不是可靠传输 丢失,乱序,重复无法解决