
其他---技巧题/数学题/STL
forezxl
水君一枚
展开
-
BZOJ3668: [Noi2014]起床困难综合症(洛谷P2114)
贪心 位运算乱搞原创 2017-12-12 19:46:27 · 464 阅读 · 0 评论 -
BZOJ2456 mode
思维题题目传送门开始以为是SB题,然后发现空间只给1M。。。因为众数的个数一定>n/2>n/2>n/2,那么我们就把不相同的数两两相消,剩下的就是众数了。代码:#include<cctype>#include<cstdio>using namespace std;int ans,sum;inline char readc(){ ...原创 2018-07-03 18:04:53 · 211 阅读 · 0 评论 -
BZOJ2005 [Noi2010]能量采集(洛谷P1447)
莫比乌斯反演/乱搞BZOJ题目传送门 洛谷题目传送门题目要我们求2∑ni=1∑mj=1(i,j)−nm2∑i=1n∑j=1m(i,j)−nm2\sum_{i=1}^n\sum_{j=1}^m(i,j)-nm主要是求∑ni=1∑mj=1(i,j)∑i=1n∑j=1m(i,j)\sum_{i=1}^n\sum_{j=1}^m(i,j)我们设f(x)=∑ni=1∑mj=1[(i,j)=...原创 2018-07-06 16:22:45 · 266 阅读 · 0 评论 -
BZOJ2761 [JLOI2011]不重复数字(洛谷P4305)
STL 大水题BZOJ题目传送门 洛谷题目传送门不想说什么了。。。set水过,hash都懒得打。简直PJ题代码:#include<set>#include<cctype>#include<cstdio>#include<cstring>#include<algorithm>#define N 50005#de...原创 2018-07-07 11:09:12 · 301 阅读 · 0 评论 -
BZOJ1177 [Apio2009]Oil(洛谷P3625)
枚举BZOJ题目传送门 洛谷题目传送门一点都不会的暴枚题把原地图用两条垂直于边界的直线分成三块,让三个正方形分别在这三块里取。那么可以分成六种情况:对第一行的情况枚举其交点。对于第二行的情况枚举其中一条直线,另一条离枚举的这条距离为k。要预处理四个数组分别表示点i,ji,ji,j左上/右上/左下/右下内的最大K*K正方形权值。具体实现见代码(BZOJ不能用读优我也不知道为...原创 2018-07-29 20:31:51 · 256 阅读 · 0 评论 -
洛谷P3579 [POI2014]PAN-Solar Panels(BZOJ3834)
数学题洛谷题目传送门 BZOJ题目传送门考虑枚举答案,那么我们只要判断sminans<smaxanssminans<smaxans\frac{smin}{ans}wminans<wmaxanswminans<wmaxans\frac{wmin}{ans}...原创 2018-08-28 19:17:34 · 219 阅读 · 0 评论 -
BZOJ1800 [Ahoi2009]fly 飞行棋(洛谷P2165)
几何题BZOJ题目传送门 洛谷题目传送门疯狂划水根据初中的知识,圆周角为90度的弦就是直径。两个直径就可以拼成一个矩形。那么我们找出所有的直径就好了。代码:#include<cstdio>using namespace std;int n,s[25],ans;int main(){ scanf("%d",&n); for (int i...原创 2018-09-04 19:30:08 · 234 阅读 · 0 评论 -
BZOJ1483 [HNOI2009]梦幻布丁(洛谷P3201)
启发式合并BZOJ题目传送门 洛谷题目传送门对每个颜色记录其出现的所有位置,每次改变颜色的时候把小的并到大的上面并更新答案。这样可能大的是要改变的颜色,那么再记录一下当前修改的实际上是哪个颜色就好了。记录位置可以用链表。我用了vector。代码:#include&lt;vector&gt;#include&lt;cctype&gt;#include&lt;cstdio&g...原创 2018-09-07 20:28:57 · 186 阅读 · 0 评论 -
BZOJ4424 Cf19E Fairy(codeforces 19E/洛谷CF19E)
树上差分 DFSBZOJ题目传送门 codeforces题目传送门 洛谷题目传送门首先只有当图中没有奇环时一张图才能够二分图染色。因为只允许删一条边,那么答案就是所有奇环的交,并且奇环不能和偶环有交。对于原题数据范围较小,可以随便建一棵生成树,每次路径+1就好了,用树剖/LCT维护。而BZOJ那道题不能这么搞。对原图建DFS树,那么所有的非树边就都是返祖边了。因此对于修改我们只...原创 2018-09-13 20:08:41 · 218 阅读 · 0 评论 -
BZOJ1965: [Ahoi2005]SHUFFLE 洗牌(洛谷P2054)
找规律BZOJ题目传送门洛谷题目传送门找规律就可以发现ans∗2m≡l(mod&ThinSpace;&ThinSpace;n+1)ans*2^m\equiv l(\mod n+1)ans∗2m≡l(modn+1)而2在n+1n+1n+1下的逆元为n/2+1n/2+1n/2+1。那么我们把2m2^m2m乘过去就行了。会爆long long ,需要快速乘代码:#inclu...原创 2018-09-19 21:46:40 · 231 阅读 · 0 评论 -
BZOJ2721: [Violet 5]樱花(洛谷P1445)
数学BZOJ题目传送门洛谷题目传送门来因式分解。1x+1y=1n!xy−n!(x+y)=0(x−n!)(y−n!)=(n!)2\frac1x+\frac1y=\frac1{n!}\\xy-n!(x+y)=0\\(x-n!)(y-n!)=(n!)^2x1+y1=n!1xy−n!(x+y)=0(x−n!)(y−n!)=(n!)2然后算n!n!n!的因数个数就好了。代码:#i...原创 2018-10-28 15:14:39 · 405 阅读 · 0 评论 -
BZOJ1833: [ZJOI2010]count 数字计数(洛谷P2602)
乱搞BZOJ题目传送门洛谷题目传送门把题目转化成求1到n的出现次数。设f[i]f[i]f[i]表示第iii位出现的总次数,那么有f[i]=f[i−1]∗10+10i−1f[i]=f[i-1]*10+10^{i-1}f[i]=f[i−1]∗10+10i−1(先不管前导0)。我们对n的每一位进行处理。对于第iii位,没有到达边界的数字答案即为10i−1+f[i−1]∗a[i]10^{i-1}+...原创 2018-10-25 18:06:03 · 214 阅读 · 0 评论 -
BZOJ4419: [Shoi2013]发微博(洛谷P3998)
STLBZOJ题目传送门洛谷题目传送门数据结构蒙蔽了我的双眼。对每个人用一个set维护当前和他成为好友的人,并记录他发的微博数。那么对于两个人x,yx,yx,y,xxx对yyy的贡献即为从成为好友到解除好友中xxx发的微博数量,yyy同理。所以减一减答案就出来了。注意最后结束后还要算一遍。因为有些人还没有解除好友。代码:#include<set>#include<...原创 2018-10-26 18:35:47 · 256 阅读 · 4 评论 -
BZOJ1108: [POI2007]天然气管道Gaz
水题目传送门总代价即为∑xj−xi+yi−yj\sum x_j-x_i+y_i-y_j∑xj−xi+yi−yj,与顺序无关。那么直接算就好了。代码:#include<cstdio>#define N 50005using namespace std;typedef long long LL;int n; LL sx1,sx2,sy1,sy2;int main(...原创 2018-10-24 16:18:57 · 179 阅读 · 0 评论 -
codeforces 1066E. Binary Numbers AND Sum
前缀和题目传送门疯狂划水题目大意: 两个很大的二进制数a,ba,ba,b,每次把答案加上a&amp;ba\&amp;ba&b并把bbb左移一位。求最终答案。考虑aaa的每一位对答案的贡献。如果这一位是000没有贡献,否则贡献为2i∗sum[i]2^i*sum[i]2i∗sum[i],其中sum[i]sum[i]sum[i]为bbb从最高位到第iii位的1的个数。扫一...原创 2018-11-06 19:40:28 · 292 阅读 · 1 评论 -
codeforces 165E. Compatible Numbers
高维前缀和题目传送门学了一发高维前缀和。一般我们求多维前缀和是用容斥的,但是当维度很高时会很烦,这时就要用另一种求前缀和的方法。打个比方,假设我们要求二维前缀和:for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) a[i][j]+=a[i][j-1];for (int i=1;i<=n;i++) ...原创 2018-11-04 16:58:32 · 298 阅读 · 0 评论 -
BZOJ3293 [Cqoi2011]分金币(BZOJ1045/1465、洛谷P3156/2512)
数学题题目传送门:BZOJ3293 BZOJ1045 BZOJ1465 洛谷P3156 洛谷P2512三倍经验。。。我们设第iii个人向第i+1i+1i+1个人传递了xixix_i个糖果,sumsumsum为最终每个人手上的糖果(也就是平均值),那么我们可以得到一个方程组: a1−x1+x2=suma2−x2+x3=suma3−x3+x4=sum⋮an−xn+x1=sum...原创 2018-07-02 19:26:28 · 215 阅读 · 0 评论 -
BZOJ5366 [Lydsy1805月赛]代码派对
差分 乱搞题目传送门%%%法老学长秒了这道题。考虑一个方案怎么被唯一表示。三个矩形的交一定也是一个矩形。那么我们不妨设这个矩形的左下角为(x,y)(x,y)(x,y),然后记这样四个东西:s1[i][j]s1[i][j]s1[i][j]表示包含但左下角不为(x,y)(x,y)(x,y)的矩形个数。 s2[i][j]s2[i][j]s2[i][j]表示左下角为(x,y)(x,y...原创 2018-05-28 21:37:48 · 428 阅读 · 0 评论 -
洛谷P2038 无线网络发射器选址(NOIp2014)
枚举原创 2017-10-24 19:34:13 · 1113 阅读 · 0 评论 -
fread读优
可能什么时候会用到,先记着。原创 2017-08-24 21:00:28 · 706 阅读 · 0 评论 -
HDU6147 Pokémon GO II (2017百度之星程序设计大赛 - 复赛)
乱搞题原创 2017-08-23 20:34:22 · 390 阅读 · 0 评论 -
BZOJ1257 余数之和sum(洛谷P2261)
乱搞BZOJ题目传送门 洛谷题目传送门对于x mod p,可以理解为x-p*(x/p)。不难发现存在区间[l,r],x/i的值都是相同的,因此sigma(x mod i (r>=i>l))的值就是一个等差数列。于是开始我们先把sum赋成n*m,然后减去每个区间的sigma(i*(x/i))即可。一直做到sqrt(n)。 但是算完后还有[1,n/(sqrt(n)+1)]这个区...原创 2017-08-20 15:19:41 · 390 阅读 · 0 评论 -
BZOJ1088: [SCOI2005]扫雷Mine(洛谷P2327)
技巧题BZOJ题目传送门 洛谷题目传送门使劲划水对于两列的扫雷,有个十分显然的性质:只要确定了前两个的情况,其他的就都确定了。而当第一个数是0或2时,前两个都是确定的,直接算就好了。 当第一个数是1时,计算第一个是雷、第二个不是雷和第一个不是雷、第二个是雷的情况即可。其实答案只可能是0、1、2。。。代码:#include<cctype>#include...原创 2018-02-09 12:09:36 · 348 阅读 · 0 评论 -
BZOJ5168: [HAOI2014]贴海报(洛谷P3740)
BZOJ5168: [HAOI2014]贴海报(洛谷P3740)离散BZOJ题目传送门 洛谷题目传送门md这道题有毒洛谷WA了10发。。。离散区间后直接暴力。有一个坑点就是离散后需要强制在每个区间里加一个数字隔开,不能在离散前加因为会重掉。至于为什么要加数字自行YY一下。 还有就是有可能区间右端甚左端至超过nnn,要把它判掉。代码:#include<c...原创 2018-02-27 13:37:25 · 441 阅读 · 0 评论 -
BZOJ4811: [Ynoi2017]由乃的OJ(洛谷P3613)
树链剖分 位运算乱搞BZOJ题目传送门 洛谷题目传送门前言 建议先把睡觉困难综合征这道题给做了题解和睡觉困难综合征一样,考虑每一位放1和放0的情况。那么我们只需要弄清楚如何合并区间就行了。定义p0,p1表示全放0/1时经过这一个区间后会变成什么。那么在合并左右区间时就变成了这两个东西://y是左区间,z是右区间x.p0=(y.p0&z.p1)|((~y.p0)&z.原创 2017-12-16 10:24:29 · 825 阅读 · 0 评论 -
洛谷P2312 解方程(NOIp2014)
乱搞题目传送门很奇怪的一个题目。。。因为一个多项式=0,那么它mod一个质数也=0。 然后我们选几个质数,使劲膜就可以了。。。计算的话用秦九韶算法就行。似乎这种做法会t掉(常数巨大),需要加些优化。 当xxx modmodmod q≠0q≠0q≠0时,x+q∗kx+q∗kx+q*k modmodmod q≠0q≠0q≠0。于是再判一下就行但是洛谷数据貌似很弱,所...原创 2017-10-24 17:03:49 · 753 阅读 · 0 评论 -
洛谷P1351 联合权值(NOIp2014)
技巧题题目传送门题目意思很简单,求两个距离为2的点的点权。可以转化为求一个点其中两条出边的点权。刚开始写DFS,然后华丽丽地T掉了。。。以为哪里写挂了,算了一下发现是O(n2)O(n2)O(n^2)的。。。于是重新想算法后来发现一个公式:2∗(a[1]∗a[2]+a[2]∗a[3]+a[1]∗a[3])=(a[1]+a[2]+a[3])2−(a[1]2+a[2]2+a[3]2)2∗...原创 2017-10-23 16:03:13 · 1002 阅读 · 0 评论 -
洛谷P2827 蚯蚓(NOIp2016) (BZOJ4721)
技巧题洛谷题目传送门 BZOJ题目传送门初看时觉得用堆,但是m=7e6,貌似刚好卡log。于是只能另寻出路。我们用堆的是要维护最大值,因为蚯蚓的长度每次都会变。 但是题目有这么一句话: 除了刚刚产生的两只新蚯蚓,其余蚯蚓的长度都会增加q(是一个非负整常数)。也就是说,刚切的是不会涨长度的。而我们只需要它们之间的大小关系。因此我们只需考虑长度之间的差值。 那么,给所有...原创 2017-10-19 16:09:58 · 760 阅读 · 0 评论 -
BZOJ1058: [ZJOI2007]报表统计(洛谷P1110)
STLBZOJ题目传送门 洛谷题目传送门学了一发set。用两个set,一个维护全局的差值,一个维护每个位置的差值。 对每个位置记录起始元素和最终元素,就可以用set维护了。 map用来判断元素是否存在,堆快速得出答案。代码:#include<map>#include<set>#include<queue>#include<c...原创 2018-03-16 20:36:46 · 469 阅读 · 0 评论 -
洛谷P2260 [清华集训2012]模积和(BZOJ2956)
数学题洛谷题目传送门 BZOJ题目传送门推式子: ∑i=1n∑j=1m(n mod i)×(m mod j)(i≠j)∑i=1n∑j=1m(n mod i)×(m mod j)(i≠j)\sum_{i=1}^n\sum_{j=1}^m(n\ mod\ i)\times(m\ mod\ j)(i\not=j...原创 2018-05-20 16:22:30 · 256 阅读 · 0 评论 -
BZOJ1218 [HNOI2003]激光炸弹(洛谷P2280)
前缀和 枚举BZOJ题目传送门 洛谷题目传送门因为坐标≤5000≤5000\leq5000,直接前缀和统计然后暴枚就好了。。。一道SB题我WA了6发。。。无力吐槽代码:#include<cctype>#include<cstdio>#include<cstring>#include<algorithm>#define N...原创 2018-05-15 21:23:56 · 301 阅读 · 0 评论 -
洛谷P3896 [湖南集训]Clever Rabbit(BZOJ3662)
打表洛谷题目传送门 BZOJ题目传送门这套题老师拿给我们考简直有毒强烈吐槽为什么会有打表这种题目(可能有正解???) 我们可以枚举ggg(lll也行)在哪个地方分数字,即用9个隔板隔开不同的数字(ggg递减),这样的效率是C9n+9Cn+99C_{n+9}^9的,跑个大概7分钟表就出来了。打表代码:#include<cstdio>#include<cs...原创 2018-06-02 18:22:11 · 440 阅读 · 0 评论 -
BZOJ1968 [Ahoi2005]COMMON 约数研究
数学题题目传送门大水题考虑每个数对答案的贡献。能整除iii的数显然有n/in/in/i个,那么答案就是∑ni=1ni∑i=1nni\sum_{i=1}^n\frac ni。迄今写过除了输入输出题之外最短的代码:#include<cstdio>using namespace std;int n,ans;int main(){ scanf("%d",&...原创 2018-06-04 21:39:28 · 189 阅读 · 0 评论 -
codeforces Gym 101623 F(BZOJ5200)
启发式分治BZOJ题目传送门codeforces题目传送门题目大意: 有一种二叉树,每个节点有权值 ,并且满足它与所有祖先的权值互质。现在给出一个序列,问这个序列是否是一棵这种树的中序遍历。还有启发式分治这种操作。。。显然如果一个点要是一颗子树的根,那么它一定与这颗子树里的所有点互质。在序列上则为与一段包含它的区间互质。我们预处理出每个位置左右与它互质的第一个位置。对于一个区间,同时用...原创 2018-11-07 18:31:09 · 376 阅读 · 0 评论