思维游戏
文章平均质量分 89
&*^*&
这个作者很懒,什么都没留下…
展开
-
acm-(异或、思维)Codeforces Round #705 (Div. 2) E. Enormous XOR
传送门首先给出结论:若l0=0,r0=1l_0=0,r_0=1l0=0,r0=1,那么答案就是111...1111...1111...1(长度为nnn)。否则若rrr为奇数或l+1≥rl+1\ge rl+1≥r,那么答案是rrr。否则(rrr为偶数并且l+1<rl+1<rl+1<r)答案是r+1r+1r+1。下面给出证明:第一种情况下我们可以找到长度为nnn的01111..101111..101111..1与1000..01000..01000..0串,两者异或就能得.原创 2021-03-07 09:46:49 · 495 阅读 · 0 评论 -
acm-(交互题、思维、二分、子序列、好题)2020 年 “游族杯” 全国高校程序设计网络挑战赛 B. Binary String
vj传送门本题实在是非常妙,首先二分求出000和111中数量较小的一个的数量,方便起见,假设000数量最少,设cnt0,cnt1cnt_0,cnt_1cnt0,cnt1分别表示000和111的数量。假设序列是如下形式:111...10111..10111..1.....111..10111...1111...10111..10111..1.....111..10111...1111...10111..10111..1.....111..10111...1,即假设第i−1i-1i−1个000与第iii.原创 2021-01-23 10:50:37 · 316 阅读 · 0 评论 -
acm-(好题、kmp、思维、字符串)Good Bye 2020 G. Song of the Sirens
传送门设ans[i]ans[i]ans[i]表示www在sis_isi重复的次数,我们要求的其实就是ans[k]ans[k]ans[k]。设g[i]g[i]g[i]表示www在sis_isi中的重复次数,但是必须包含ti−1t_{i-1}ti−1。于是不难写出ans[i]=2ans[i−1]+g[i]ans[i]=2ans[i-1]+g[i]ans[i]=2ans[i−1]+g[i],假设s[cur]s[cur]s[cur]是最小的满足len(scur)≥len(w)len(s_{cur})\.原创 2021-01-01 18:18:46 · 185 阅读 · 0 评论 -
acm-(思维、反面、01串)Educational Codeforces Round 101 (Rated for Div. 2) E. A Bit Similar
传送门考虑反面,要求构造一个串使得它和每个串有至少一位相同等价于构造一个串使得与所有长度为kkk的串取反后不同,其实只需要考虑这些串的最后20位即可,因为220>1e62^{20}>1e6220>1e6,也就是说当k≥20k\ge 20k≥20的时候总是存在一个长度为202020的串使得它跟所有的串反面不同,这也是我们需要找的串。由于要求串最小,那么除了最后202020位外我们可以让其它的位全是000,最后202020位直接从小到大暴力枚举看是否存在一个长度为kkk的串的末尾2020.原创 2020-12-29 21:53:17 · 214 阅读 · 0 评论 -
acm-(单调栈)CF1402A Fancy Fence
传送门设f(x)=x(x+1)2f(x)=\frac{x(x+1)}2f(x)=2x(x+1)考虑矩形的左边界和有边界的位置,如果在同一个sectionsectionsection以内的话,答案即为f(w)f(h)f(w)f(h)f(w)f(h)。否则答案为∑1≤i<j≤nwiwjf(mini≤k≤j{hk})\sum_{1\le i<j\le n}w_iw_jf(min_{i\le k\le j}\{h_k\})∑1≤i<j≤nwiwjf(mini≤k≤j{hk}),.原创 2020-12-16 11:54:32 · 221 阅读 · 0 评论 -
acm-(好题、分类讨论、思维)CF1425E Excitation of Atoms
传送门首先预处理数组aaa的前缀和sumsumsum。本题考虑分三种情况讨论:k=0k=0k=0,此时我们考虑答案为maxi=1n{sum[n]−sum[i−1]−d[i]}max_{i=1}^n\{sum[n]-sum[i-1]-d[i]\}maxi=1n{sum[n]−sum[i−1]−d[i]}。k≥2k\ge 2k≥2,此时我们可以选定一个i(2≤i≤n−1)i(2\le i\le n-1)i(2≤i≤n−1),然后设置ei=1,ei−1=i+1e_i=1,e_{i-1}=i+1ei.原创 2020-12-15 21:58:16 · 138 阅读 · 0 评论 -
acm-(构造、模的性质)2020 China Collegiate Programming Contest Changchun Onsite L. Coordinate Paper
传送门首先假设不考虑ai−ai+1=ka_i-a_{i+1}=kai−ai+1=k这个规则,那么表达式就是a1+(a1+1)+(a1+2)+...+(a1+n−1)=na1+n(n−1)2a_1+(a_1+1)+(a_1+2)+...+(a_1+n-1)=na_1+\frac{n(n-1)}2a1+(a1+1)+(a1+2)+...+(a1+n−1)=na1+2n(n−1),如果考虑了ai−ai+1=ka_i-a_{i+1}=kai−ai+1=k之后,相当于要减去若干k+1k+1k+.原创 2020-12-03 17:30:11 · 207 阅读 · 0 评论 -
acm-(好题、思维、dp)Codeforces Round #687 (Div. 1) D. Cakes for Clones
传送门本题考虑设置两种状态:当1∼i−11\sim i-11∼i−1的蛋糕均已被收集,当前处于蛋糕iii所在位置(还没有收集蛋糕iii),并且分身处于闲置状态(即没有放在任何地方),对于到达这种情况我们所需要花费的最小时间设为mit[i]mit[i]mit[i]。当第iii个蛋糕恰好被收集,并且1∼i−11\sim i-11∼i−1的蛋糕已经被收集,分身位于第jjj个蛋糕处等待第jjj个蛋糕出现时,我们用dp[i][j]=0/1dp[i][j]=0/1dp[i][j]=0/1表示这种状态不可达或可.原创 2020-12-02 15:32:26 · 203 阅读 · 0 评论 -
acm-(最短路、有向图、思维)Codeforces Round #669 (Div. 2) E. Egor in the Republic of Dagestan
传送门本题让给出一个状态分配方案使得从111到nnn的最短路最大。考虑设dis[i][j]dis[i][j]dis[i][j]为从第iii个城市处于状态jjj(j=0,1j=0,1j=0,1)出发到达nnn城市的最短路的最大值,那么有方程dis[i][j]=minw[i][k]=j{max{dis[k][0],dis[k][1]}+1}dis[i][j]=min_{w[i][k]=j}\{max\{dis[k][0],dis[k][1]\}+1\}dis[i][j]=minw[i][k]=j{max.原创 2020-12-01 23:45:08 · 102 阅读 · 0 评论 -
acm-(交互题、模的性质)Codeforces Round #669 (Div. 2) C. Chocolate Bunny
传送门本题主要用到这么个性质,若x%y>y%xx\%y>y\%xx%y>y%x,那么x=x%yx=x\%yx=x%y,因为x<yx<yx<y,此时满足x=x%y,y%x<x⇒x%y>y%xx=x\%y,y\%x<x\Rightarrow x\%y>y\%xx=x%y,y%x<x⇒x%y>y%x。利用这个性质,我们每两次询问可以获得一个数的值,最后剩下的数是nnn。int ask(int x,int y){ printf("? %.原创 2020-12-01 23:28:07 · 206 阅读 · 0 评论 -
acm-(好题、思维、字典序、分类讨论)Educational Codeforces Round 99 (Rated for Div. 2) F. String and Operations
传送门考虑当前位于第iii位,如何让该位的字母最小,假设1∼i−11\sim i-11∼i−1的字母已经固定并且无法在再改变,而第i+1∼ni+1\sim ni+1∼n位的字母和顺序都还未被改变,第iii位上的字母可能被改变,也可能没有被改变,令fgfgfg为111表示未被改变,也就是说在该位置上还有一次操作可使用,否则代表被改变,即第iii位不具有操作可用。设f(c)f(c)f(c)表示字母ccc经过up/down/0up/down/0up/down/0操作后可以变成的最小字母(若fg=0fg=0f.原创 2020-12-01 17:21:25 · 141 阅读 · 2 评论 -
acm-(贪心、思维)Educational Codeforces Round 99 (Rated for Div. 2) E. Four Points
传送门本题考虑枚举每个点到达正方形的位置(左上角、右上角、左下角、右下角),总共有4!4!4!种可能,对于每种可能而言,假设去左上角、右上角、左下角、右下角的点分别用1、2、3、41、2、3、41、2、3、4表示,先分别考虑x、yx、yx、y的贡献,设x1′=min{x1,x3},x2′=max{x1,x3},x3′=min{x2,x4},x4′=max{x2,x4}x_1'=min\{x_1,x_3\},x_2'=max\{x_1,x_3\},x_3'=min\{x_2,x_4\},x_4'=max\.原创 2020-12-01 10:58:31 · 236 阅读 · 0 评论 -
acm-(构造、异或、思维)Codeforces Global Round 11 E. Xum
传送门方法一:考虑找到一个数yyy使得gcd(x,y)=1gcd(x,y)=1gcd(x,y)=1,也就是∃a,b≥0,ax−by=1\exist a,b\ge 0,ax-by=1∃a,b≥0,ax−by=1,也就是ax=by+1ax=by+1ax=by+1,如果yyy是个偶数,那么我们让(ax) xor(by)(ax)\,xor (by)(ax)xor(by)就能得到111了,其中a,ba,ba,b可以通过扩欧寻找,要让ax,byax,byax,by出现在黑板上可以通过倍增实现。而如何寻找一个适合的.原创 2020-11-27 11:39:27 · 195 阅读 · 0 评论 -
acm-(线段树、栈、思维)Codeforces Raif Round 1 (Div. 1 + Div. 2) F. Fruit Sequences
传送门本题有至少三种方法可以做。方法一:考虑对每个连续的111段求解贡献,首先是整体的贡献,此时我们可以分别向左和向右延伸,得到延伸最远的lll和rrr,注意到如果多个连续111段长度相同的,我们把贡献计算在最左边的段上,故延伸到最远的lll必须满足长度小于当前段,最远的rrr则满足小于等于当前段,对于000段需要特殊判断。然后是当部分贡献,此时我们固定左端点或者右端点然后让另一个端点向对应的方向延伸,类似地讨论来得出当前段的部分的贡献,固定的端点不位于边界上。具体代码实现的时候需要用线段树来查找.原创 2020-11-25 09:27:59 · 105 阅读 · 0 评论 -
acm-(思维、找规律、打表)Codeforces Round #676 (Div. 2) E. Swedish Heroes
传送门首先答案一定是∑i=1nbiai,(bi=−1,1)\sum_{i=1}^nb_ia_i,(b_i=-1,1)∑i=1nbiai,(bi=−1,1)。我们考虑最终的答案中的{bi}\{b_i\}{bi}序列有何性质,假设其中−1-1−1有xxx个,111有yyy个,那么满足(2x+y)%3=1(2x+y)\%3=1(2x+y)%3=1。这个可以通过打表看出(我其实看不出 ),这里给出一个证明:利用数学归纳法来证明,每次我们都会合并两个序列,考虑两个序列的性质,若两个序列都满足(2x.原创 2020-11-24 07:14:48 · 164 阅读 · 0 评论 -
acm-(分类讨论、思维、对称性)Codeforces Round #676 (Div. 2) D. Hexagons
传送门本题主要是利用对称性减少码量,首先注意到我们可以把从(0,0)(0,0)(0,0)出发的六条射线画出来,大致如下图所示:不难发现,我们可以从起点的六条射线之一出发,然后走到终点的六条射线之一,再顺着终点的射线走到终点。因此两个点的射线之间的交点显得尤为重要。由于终点不固定,我们考虑终点的射线与起点的射线相交的情况,然后根据对称性,我们先只考虑终点的②、⑥②、⑥②、⑥类型的射线与起点射线的相交情况,也就是我们只考虑这样的一条路径:从起点出发,经过起点的六条射线之一走到某个与终点②、⑥②、⑥②、.原创 2020-11-24 06:53:25 · 119 阅读 · 0 评论 -
acm-(思维、构造)Difficult Problems Equal Product
传送门首先由x1y1=x2y2x_1y_1=x_2y_2x1y1=x2y2我们可以推知∃a<b,a∣x1,b∣y1,x2=x1ab,y2=y1ba\exist a<b,a\mid x_1,b\mid y_1,x_2=\frac {x_1}{a}b,y_2=\frac{y_1}{b}a∃a<b,a∣x1,b∣y1,x2=ax1b,y2=by1a。证明:考虑令g=gcd(x1,x2),a=x1g,b=x2gg=gcd(x_1,x_2),a=\frac {x_1}g.原创 2020-11-23 07:24:18 · 91 阅读 · 0 评论 -
acm-(树、二分、思维)Codeforces Round #678 (Div. 2) D. Bandit in a City
传送门本题其实就是让把所有节点上的值通过单向路径转移到叶子节点,问叶子结点中最大值的最小值是多少。很容易想到二分,考虑二分最大值midmidmid,checkcheckcheck的时候直接让所有叶子节点都减去midmidmid,然后dfsdfsdfs不断往上求和即可,出现大于0的时候,说明叶子结点中的最大值一定会大于midmidmid,故返回falsefalsefalse,否则truetruetrue。不过需要小心可能会爆longlonglong longlonglong,当累加和绝对值大于1e161.原创 2020-11-23 06:56:07 · 123 阅读 · 0 评论 -
acm-(交互、随机、完全二叉树、lca)CF Difficult Problems Olha and Igor
传送门首先有个结论:以www为根的lca(u,v)lca(u,v)lca(u,v)是到u,v,wu,v,wu,v,w三点距离和最小的点。结论显然正确,证明略。我们考虑所有满足ask(u,v,w)≠u,v,wask(u,v,w)\ne u,v,wask(u,v,w)=u,v,w的三元组(u,v,w)(u,v,w)(u,v,w),对于d=ask(u,v,w)d=ask(u,v,w)d=ask(u,v,w)而言,假设有cnt[d]cnt[d]cnt[d]个这样不同的三元组。假设dep[d]=i,i>.原创 2020-11-22 13:23:07 · 231 阅读 · 0 评论 -
acm-(异或、与、或、交互、思维)Codeforces Round #685 (Div. 2) E.Bitwise Queries
传送门本题中数字范围[0,n−1][0,n-1][0,n−1]这个条件以及nnn是2的幂次这个条件是解决问题的关键。首先有个结论:(x&y)+(x∣y)=x+y(x\&y)+(x|y)=x+y(x&y)+(x∣y)=x+y,然后很容易联想到通过计算a1,a2,a3a_1,a_2,a_3a1,a2,a3这三个数两两之间的与或值,来解个方程从而得到它们三个分别的值,然后再让a1a_1a1与剩下的数去异或从而得到其他数的值,可惜这样做要花费6+n−3=n+36+n-3=n+3.原创 2020-11-22 13:04:43 · 223 阅读 · 0 评论 -
acm- (完全子图、团、暴力)Codeforces Round #684 (Div. 2) D. Graph Subset Problem
传送门首先,如果存在度数小于kkk的点,如果这个点的度数为k−1k-1k−1,那么它有机会成为一个大小为kkk的完全子图的一个顶点,于是我们不妨暴力遍历跟这个点相连的所有点,如果这些点的对应的边集的另一个顶点都能找到彼此,那么就找到了完全子图了。可以用binary_searchbinary\_searchbinary_search函数快速查找某个元素是否存在于某个有序数组中。如果发现不满足条件,那么这个点肯定不会成为大小为kkk的完全子图的某一个顶点,因此可以将这个点以及它连接的边从整个图中删除。度数.原创 2020-11-19 16:44:43 · 202 阅读 · 0 评论 -
acm-(构造,思维,质因数分解)Codeforces Round #671 (Div. 2)E. Decryption
传送门本题意思就是给定一个数字n,然后让给出关于n的所有因数的一个圆排列,要满足这个圆排列最少能够使得圆排列中所有相邻两数不互质的操作次数最小化。这个操作每次可选择任意相邻两数然后再它们中间插入它们的最小公倍数。最后输出方案和该方案对应的最小操作次数。题意似乎有点拗口,但理解后思路还是很清晰的。一个数的因数无非是它的所有质因子的组合,假设n=p1a1p2a2p3a3...pkak\mathbf{n=p_1^{a_1}p_2^{a_2}p_3^{a_3}...p_k^{a_k}}n=p1a1p2a2.原创 2020-10-02 20:58:45 · 226 阅读 · 0 评论 -
acm-(区间交,贪心,multiset,排序,思维)Codeforces Round #672 (Div. 2) D.Rescue Nibel!
考虑将所有区间按照左端点由小到大排序,然后按这个顺序来枚举区间并进行check,对于当前区间而言,考虑在它之前的区间中能否挑出k-1个区间使得它们与当前区间都至少有一个公共交点。由于之前的区间的左端点都是小于等于当前区间的左端点,因此只要保证它们的右端点大于等于当前区间左端点那么就一定与当前区间存在交集,也就是符号条件的区间。那么如何获得满足该条件(即右端点大于等于当前区间左端点)区间的个数呢,考虑使用multiset来解决该问题,我们每次check完一个区间后,就将该区间的右端点加入multiset,.原创 2020-09-27 07:52:41 · 135 阅读 · 0 评论 -
acm-盘点那些对代码能力要求低的思维题
引言acm中有些题目并不需要特定的算法去解决,而是靠一些比较灵活的思维,这些题目第一次见往往很难被迅速解决,因此本文目的是收集大量这种类型的题目,希望从中发现它们的某些共性。本文侧重于对于题目的思维分析,而且由于这些题目属于一旦想出解法就很容易码出代码的题目类型,出于节省版面与实践的缘故,不会给出代码。例题一题目来源:2020上海高校程序设计竞赛暨第18届上海大学程序设计联赛夏季赛(同步赛)I题:露营题面:一句话题意:给定一个n∗m(n∗m≤100000)\mathbf{n*m(n原创 2020-08-07 10:10:16 · 426 阅读 · 0 评论