06 2025 档案
摘要:题意: 给定一个序列A,q次操作 每次操作给定 下标i和x 使得a[i]=x 求每次操作后序列的mex 思路: 不维护序列中已经存在的数字,反而维护不存在的数字 因为n为3e5范围 所以mex最多为n 用set维护不在序列中的数字,map进行操作 void solve(){ int n,q;cin>
阅读全文
摘要:邀请码:AXdVUrQ 邀请链接为:https://www.nowcoder.com/courses/cover/live/707?coupon=AXdVUrQ。
阅读全文
摘要:D 题意: 搜索长度为k的不同的路径 const int dx[]={1,-1,0,0}; const int dy[]={0,0,1,-1}; int n,m,k; char g[20][20]; int vis[20][20]; int ans=0; int res=0; int dfs(int
阅读全文
摘要:题意: 初始颜色数组ai=i,两种操作 操作1:将x位置即其左右与他颜色相同的格子都涂为c 操作2:输出颜色c有多少个格子 思路: 珂朵莉树,每次维护修改x的区间后左右两个区间是否颜色相同,如果相同则变为同一个 struct node{ int l,r; mutable int val; bool
阅读全文
摘要:这一份代码能够判断线性方程组是否有解,无法判断是否有无穷多解 int gauss(){ for(int i=1;i<=n;i++){ int r=i; for(int k=i;k<=n;k++){ if(fabs(a[k][i])>fabs(a[r][i])){ r=k; } } if(r!=i)s
阅读全文
摘要:D 题意: 操作1:种花 操作2:等待k天,已经种下的花长了k cm 操作3:将所有高度大于等于H的花收割,输出收割花的个数 思路: 队列,将先种的花以及种下的天数塞进队列,查询时当差值当前DAY-花种下的时间大于等于H出队并统计 void solve(){ int q;cin>>q; priori
阅读全文
摘要:题意: 初始HP=H,MP=M,n个怪物,每消灭一个怪物需要消耗Ai个HP,或Bi个MP,求最多能消灭多少个怪物? 思路: 好像是个很典的DP,但是我连这场的D都没开出来(悲 设f[i][j]为到第i个怪物,HP=j时MP的最大值 显然有两种转移方式,外层从1n枚举,内层从0h枚举 答案仅需看f[i
阅读全文
摘要:int d[maxn]; int f; void insert(int x){ for(int i=63;i>=0;i--){ if(x&(1ll<<i)){ if(!d[i]){ d[i]=x;break; }else x^=d[i]; } } f=1; } int check(int x){ f
阅读全文
摘要:小红的数组操作 题意: 初始有一个全黑的数组,可以染一段前缀和一段后缀为红,求让黑数组中元素不重的最小代价 思路: 枚举染的前缀,通过双指针预处理最长的合法序列,那么后缀染的起始点一定要在在序列末尾的前面,通过ST表预处理出这段的后缀最小值 `int f[maxn][31]; int n; void
阅读全文
摘要:[小红的区间修改(二)](https://ac.nowcoder.com/acm/contest/111159/F) 题意: q次查询,每次[l,r,x]进行区间推平并覆盖的操作,每次操作后输出数组元素种类数 思路: 珂朵莉树板子 用区间set维护,按左端点排序 map维护数组元素种类数,当右键为0
阅读全文
摘要:A 略 B 桶 C 模拟 void solve(){ int n;cin>>n; vector<int>p(n+1); vector<int>q(n+1); vector<int>a(n+1); rep(i,1,n)cin>>p[i]; rep(i,1,n){ cin>>q[i]; a[q[i]]=
阅读全文
摘要:A 略 B 排序后遍历一下即可 C void solve(){ int n;cin>>n; string s;cin>>s;s=" "+s; vector<int>cnt(26); vector<int>a(26); rep(i,1,n){ int k=s[i]-'a'; a[k]++; if(i>
阅读全文
摘要:P5522 [yLOI2019] 棠梨煎雪 题意: 给定m个字符串,由0,1,?构成,每次询问[l,r]中有多少种字符串S,能使得区间所有字符串均可以通过改变?来得到 以及单点修改字符串操作 思路: 显然当区间字符串在相同位置同时出现0,1是无解的 如果有位置是0或1,一定把?替换成0或1 剩下来的
阅读全文
摘要:题目链接 思路: 每个节点额外维护的信息为,区间前缀最长01交替区间,区间后缀最长01交替区间,区间的最长01交替区间 由于单点修改,不需要维护懒标记 也就不需要pushdown操作 考虑pushup 当左儿子右端点的值和右儿子左端点的值不同时,显然可以连接起来 某个节点的最长前缀01区间:可以由左
阅读全文
摘要:int f[maxn]; int val[maxn]; int find(int x){ if(f[x]!=x){ int p=f[x]; f[x]=find(f[x]); val[x]+=val[p]; } return f[x]; } int merge(int x,int y,int c){
阅读全文
摘要:A 略 B 用set模拟即可 int cal(int x,int y){ set<int>st; set<int>st2; while(x){ st.insert(x%10);x/=10; } while(y){ st2.insert(y%10);y/=10; } if(st==st2&&st.si
阅读全文
摘要:A 略 B 题意:给一个数B,询问A^A=B的A为多少 思路:快速幂暴力即可 ll ksm(ll a,ll b){ ll res=1; while(b){ if(b&1)res=res*a; a=a*a; b>>=1; } return res; } // void solve(){ ll b;ci
阅读全文
摘要:真是越来越菜了,牛客已经掉到蓝了(悲 6.7/21:57:喜报,ABC终于能自己A5题了,虽然好像这场前五题比之前简单 C 题意:略 思路: 666,p=1时,只有第一位为1,其余位都是0 void solve(){ int d,p;cin>>d>>p; int k; int td=d,tp=p;
阅读全文
摘要:A 略 B 题意: 给定一个01序列,如果是1,答案加上以它下标为次数,2为底数的值 思路: 需要注意long long最大值为2^63 -1,也就是说如果遇到2^63就歇菜了 考虑用ull,或者__int128存储 其中__int128无法用标准的输入和输出,但是可以正常的运算 C 模拟即可,用p
阅读全文
摘要:A 思路: 比较100以内5的倍数与给定数的差值,绝对值最小的即为答案 B 题意: 给定一些点的位置,求给定两点的距离 思路: 开个map模拟即可 C 题意: 给定一个.矩阵,其中有一个由#构成的长方形 该长方形缺了一个点,即该处为.,求该点的位置 思路: 观察发现其他.上下左右至多只有一处和#接触
阅读全文
摘要:A 略 B 题意: 给定一个n,让它区间为长度-3的后缀区间的位全部变为0 思路: 把数字看成字符串读入,然后模拟 void solve(){ string s;cin>>s; int len=s.size(); int k=len-3; s=" "+s; if(k>0){ for(int i=le
阅读全文
摘要:树的中心:相当于树上一点,使得其他节点到该点的最大距离最小 实际上在直径中点 求法:求得子树内最长链和次长链,再求得父方向子树的最长链,这三者的最大值最小时,即为树的中点
阅读全文

浙公网安备 33010602011771号