10.12 csp-s模拟测试70 木板+打扫卫生+骆驼

T1 木板

求\sqrt{n}~n间有多少个数的平方是n的倍数

通过打表可以发现(我没带脑子我看不出来),符合条件的数构成一个等差数列,公差为首项

而首项就是将n质因数分解后每个质因数出现次数除二,向上取整,这个数一定是大于\sqrt{n}的最小的符合条件的数

\sqrt{n}将n分解质因数后求出首项,(n-1)/首项就是小于n里有几个,即答案

积累:papa大神教我,打表之前先猜规律,用小点看看猜的对不对,然后再用大点验证,想不出来的数学题就打打表,找找规律

T2 打扫卫生

首先肯定是dp

考场写的是n^2的,每次用桶把a[j]的贡献减去,更新答案,最后再循环一遍都加回来,T60

但我们发现如果不同的数的个数大于了\sqrt{n},那么他一定不优(大于\sqrt{n},那还不如一段就一个,这样就只有n)

所以我们可以在往回加的时候特判,如果cnt大于\sqrt{n},那就记录下这个位置,然后break,下次循环就只从pos循环就行了,加上这个减枝可以到T80

正解:cnt一定小于\sqrt{n},那么我们枚举i前不同的数的个数,复杂度就降到了O(n\sqrt{n})

用pre[a[i]]记录a[i]上次出现的位置,b[j]表示从b[j]+1~i一共有j个不同的数,c[j]表示从b[j]+1~i有多少个不同的数

i++后,如果pre[a[i]]<=j,说明a[i]在b[j]+1~i-1这一段没有出现过,所以b[j]+1~i这一段中不同数的个数就变成了c[j]+1,更新c[j],同时更新f[i]数组

如果c[j]>j,我们为了维护c[j]==j,就需要调整b[j]的位置,使b[j]合法

设pos=b[j]+1(原位置),如果pre[a[pos]]>pos说明在后面还有一个a[pos],那么删掉这个对个数没有影响,直到pre[a[pos]]<=pos,那么删掉这个数,pos+1~i这个区间就正好有j个数了,更新b[j]=pos,c[j]=j

原文地址:https://www.cnblogs.com/jrf123/p/11664119.html

时间: 2024-10-22 16:07:28

10.12 csp-s模拟测试70 木板+打扫卫生+骆驼的相关文章

csps模拟69chess,array,70木板,打扫卫生题解

题面:https://www.cnblogs.com/Juve/articles/11663898.html 69: 本以为T2傻逼题结果爆零了...T3原题虽然打的不是正解复杂度但是都不记得做过这道题... T1:组合数dp,发现i列与n+i列棋子个数一样,所以可以dp转移 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define int long l

[考试反思]1012csp-s模拟测试70:盘旋

这套题比较烂... 上来看到T2是原题,一想上一次考试遇到原题就不换,这次应该也是,于是直接开始码,码了一半然后换题了 T1打表找规律或者推式子都不难... T2水的一匹暴力剪枝即可,但是我并不知道数据那么那么水所以还花了很多时间优化 T3神奇的大模拟,挺有意思但是考场上不可能有人能拿到20+ 所以因为题比较烂,所以我就上去了? 隔了一场之后RP守恒又恢复了? 啊啊不要乱说啊再过十几分钟就又要考一场了啊... T1:木板 具体化式子也就是个初中数学,结论就是(最大平方因子的平方根-1)<<3,

csp-s模拟测试70

发现不码题解还是记不清题. A. 木板 枚举$y_E$,求出$x_F$关于$y_E$的式子,设$y_E$为$x$,发现$Ans=\sum\limits_{x=1}^{n-1} [n|x^2]$ 考场上受<神炎皇>启发,提出$gcd$,设$gcd(x,n)=d$ $n'd|x'^2d^2$ $n'|x'^2d$ 又因为$gcd(n',x')=1$ 所以$gcd(n',x'^2)=1$ 就有$n'|d$ 设$kn'=d$ 联立$n'd=n$ 得$kn'^2=n$ 所以有$n' \leq \sqrt

黑苹果macOS Sierra 10.12 安装教程(venue11 pro测试)

黑苹果macOS Sierra 10.12 安装教程(venue11 pro测试) 2017-03-12 03:46:24 by SemiconductorKING PS:刚刚装好黑苹果,来记录一篇折腾过程(手动滑稽) 说说准备工作: 1.TransMac.exe(写苹果镜像文件到U盘的工具) 2.clover文件(我这里提供一个已经调试好的已注入驱动的可以直接给venue11 Pro 7130用的clover) 3.苹果镜像文件(我给的是社区压缩打包过的,它自带一个clover,装完后和官方的

[模拟赛10.12] 老大 (二分/树的直径/树形dp)

[模拟赛10.12] 老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n ? 1 条边的无向连通图),由于新建的办公室太大以至于要将奖杯要分放在两个不同的地方以便同学们丢硬币进去开光,OB 想请你帮帮他看看奖杯放在哪两个办公室使得在任意一个在劳模办公室做题的小朋友能最快地找到奖杯来开光. 一句话题意:给出一个 n 个点的树,在两个合适且不同的点放上奖杯,使得每个点到最近的奖杯距离最大值最小. 输入

「10.12」木板(数学)&#183;打扫卫生(神仙DP)

A. 木板 一个很简单的数学题,简单推一下就好,路丽姐姐教你学数学. 将式子化出我们发现只需求出$i\times i/n$的个数 那么我们将$n$质因数分解,可知因子个数 为了整除$n$,令$i==\sqrt{n\times k} $,我们需要让$k$含有$n$中奇数个数的因子 然后同时还可以有其他的平方因子,直接爆求即可. 思路积累: 1.对于求$i\times i/n$可以从$n$的因子上下手 B. 打扫卫生 一个$DP$的大神题,考场被各种剪枝cao过 $ \%\%\%\%\%kx,Dua

微信在线信息模拟测试工具(基于Senparc.Weixin.MP)

目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具在线DEMO:http://weixin.senparc.com/SimulateTool Senparc.Weixin.MP是一个开源的微信SDK项目,地址:https://github.com/JeffreySu/WeiXinMPSDK (其中https://github.com/Jeffrey

noip模拟测试11

T1:string 第一眼秒出思路,这不就是排序那道题的加强版吗? 然而歪?解复杂度虽然是对的,但常数过大,竟被卡到70 歪?解:(实际上std写的就是这个,但据说std被卡掉了 OAO) 因为字符集很小,所以我们可以把区间排序改为区间查询和覆盖 即:先查询区间内所有字符的个数,再从左端点开始按照大小关系依次将长度为字符个数的区间修改为该字符. 期望复杂度O ( 26*mlogn ),实际复杂度O ( 26*mlogn*(巨大的常数) ) 所以需要一(feng)定(kuang)的卡常 正?解:

[考试反思]0929csp-s模拟测试55:沦陷

菜得过分. 面对T1的大板子不知所措,然后T2的贪心不小心把排序语句删了... T1这种大模板啊...其实我是觉得我能打出来的,然后先用一个小时码了一个2k. 然后做T2想贪心就出来了.十分钟码完T3暴力之后回T1打对拍瞬间爆炸. 于是又重新打了一个2k,WA0.对拍发现. 然后考试就没几分钟了交暴力走了. 不要打完就跑,记得早点对拍改进思路. T1: 的确是挺裸的线段树.离散化或者权值线段树都可以. 但是考场上两个都打出来都死了. 最后用离散化A的. 1 #include<cstdio> 2