![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维
文章平均质量分 90
&*^*&
这个作者很懒,什么都没留下…
展开
-
acm-(好题、神题)2020-2021 Winter Petrozavodsk Camp, Day 5 B.Lockout vs tourist
传送门简要题意:你和tourist一起比赛做题,你们两个每轮同时决策做哪道题,如果选择相同的题目,那么你不得分,比赛继续进行,如果选择了不同的题目,那么你能拿下你选择的这道题的全部分数,比赛结束,tourist想让你得分最少,你想让得分最多,问在双方均采取最优决策的情况下你的期望得分。这道题一看就非常难以下手,直接给出题解的神仙做法吧。首先tourist的决策一定是基于概率的,我们考虑给每个问题设置一个概率pip_ipi,代表touristtouristtourist有pip_ipi的概率在当前轮.原创 2021-09-15 20:06:54 · 1133 阅读 · 0 评论 -
acm-Codeforces Round #596 Div1 E. To Make 1 (状压dp)
传送门这道题真是人类智慧题,难想~~首先如果最终能够得到1那么一定可以写成如下表达式:∑i=1naik−bi=1\sum_{i=1}^{n}a_ik^{-b_i}=1∑i=1naik−bi=1。不过难就难在这个式子反过来也是成立的,下面给出证明。设B=maxi(bi)B=max_i(b_i)B=maxi(bi),那么有∑i=1naikB−bi=kB\sum_{i=1}^na_ik^{B-b_i}=k^B∑i=1naikB−bi=kB,然后可以证明的是一定有∑i=1n[bi=B]≥2.原创 2021-04-09 19:05:18 · 93 阅读 · 0 评论 -
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 · 484 阅读 · 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 · 176 阅读 · 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 · 197 阅读 · 0 评论 -
acm-(gcd、思维)第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)L.Traveling in the Grid World
传送门当gcd(n,m)=1gcd(n,m)=1gcd(n,m)=1的时候,容易发现直接走直线即可,并且不会经过任何网格点,显然是一条最短路。当gcd(n,m)≠1gcd(n,m)\ne 1gcd(n,m)=1的时候,暴力枚举(0,0)(0,0)(0,0)向(n,m)(n,m)(n,m)连线的路径附近的整点,考虑将它们作为转折点,就像下图一样(标记红的点就是要枚举的转折点):那么为什么答案一定是出现在以这些红点中的某一个点为转折点的路径下呢?先考虑以一个点为转折点的最短路径的情况,设起点为A.原创 2020-12-24 11:58:53 · 341 阅读 · 0 评论 -
acm-(dp、优化)第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)E.The Journey of Geor Autumn
传送门设dp[n]dp[n]dp[n]表示在kkk的情况下的答案,那么考虑nnn个数中最小的那个数的放置情况,显然只能放在前kkk个数中,于是枚举这个数的位置,那么更新方程就是dp[n]=∑i=1kdp[n−i]⋅Cn−1i−1⋅(i−1)!dp[n]=\sum_{i=1}^{k}dp[n-i]\cdot C_{n-1}^{i-1}\cdot (i-1)!dp[n]=∑i=1kdp[n−i]⋅Cn−1i−1⋅(i−1)!,这个方程的更新总复杂度是O(nk)O(nk)O(nk),考虑变形一下,得到dp.原创 2020-12-24 08:47:40 · 409 阅读 · 0 评论 -
acm-(dp、思维、找规律)Codeforces Global Round 10 D. Omkar and Bed Wars
传送门先令′L′'L'′L′为000,′R′'R'′R′为111,然后本题就可以无脑dp,设dp[i][j][k][h][w]dp[i][j][k][h][w]dp[i][j][k][h][w]表示考虑到字符串第iii位,s[1]=j,s[2]=ks[1]=j,s[2]=ks[1]=j,s[2]=k,s[i−1]=h,s[i]=ws[i-1]=h,s[i]=ws[i−1]=h,s[i]=w的时候对应的最小改变字符数(使得前iii个字符合法,头尾不保证合法,在最后的时候对nnn特判)。方程有亿点点不好写.原创 2020-12-19 00:11:45 · 205 阅读 · 1 评论 -
acm- (思维、构造)Codeforces Round #662 (Div. 2) C. Pinkie Pie Eats Patty-cakes
传送门假设数字iii有cnticnt_icnti个,设x=max1≤i≤n{cnti}x=max_{1\le i\le n}\{cnt_i\}x=max1≤i≤n{cnti},设cnti=xcnt_i=xcnti=x的iii有kkk个,那么我们将这kkk个数绑定在一起,呈周期性的放置到结果序列中,假设将1,2,31,2,31,2,3绑定在一起,那么序列就是1,2,3,...,1,2,3,...,1,2,3...1,2,3,...,1,2,3,...,1,2,3...1,2,3,...,1,2,3.原创 2020-12-18 22:23:38 · 190 阅读 · 1 评论 -
acm-(图论、环、暴力、集合哈希)Codeforces Round #664 (Div. 1) B. Boboniu Walks on Graph
传送门可以发现当每个点都只有一个入度的时候恰好满足条件,这时候图由若干个环组成,也可以认为是从每个点出发到达的点构成的集合恰好是1∼n1\sim n1∼n的时候就满足了条件。注意到kkk很小,因此可以暴力k!k!k!枚举所有情况,对于每种情况考虑当前集合的哈希值是否与1∼n1\sim n1∼n构成的集合的哈希值相同,相同的话答案加加。那么问题在于如何快速获得当前的集合哈希值,由于哈希可以进行加减操作,我们考虑预处理出度数为iii的点在cic_ici由preprepre变成xxx的时候哈希值对应的该.原创 2020-12-18 20:48:49 · 121 阅读 · 1 评论 -
acm-(模拟、暴力枚举)Codeforces Round #664 (Div. 1) A. Boboniu Chats with Du
传送门将元素分为两类,大于mmm的和小于等于mmm的。对于大于mmm的,我们将最大的那个放在序列末端,然后枚举其它元素有多少个能产生贡献,假设有xxx个能产生贡献,那么这xxx个元素还会消耗xdxdxd个其它(包括小于等于mmm的)元素,如果x(d+1)+1>nx(d+1)+1>nx(d+1)+1>n,那么这种枚举不成立,否则的话我们可以快速计算出当前情况下的最大值。不过需要注意的是,最大的那个不一定会放在序列末端,事实上我们有时候大于mmm的元素无法被消耗完,这时候可以往队列末端.原创 2020-12-18 19:34:27 · 127 阅读 · 1 评论 -
acm-(模拟、set)Educational Codeforces Round 93 (Rated for Div. 2) Two Types of Spells
传送门首先如果有xxx个1类型技能,那么意味着最多可以提供xxx个位置,这xxx个位置可以任意选择某种已存在的技能值,并使之扩大两倍。因此考虑用一个集合aaa维护这些扩大两倍的技能值,用一个集合bbb记录其它没有被扩大两倍的技能值,再用一个集合ccc记录1类型技能的值。有一种特殊情况就是aaa集合等于ccc集合的时候,这时候其实1类型技能不可能给自己提供两倍的buff,因此这时候要特判。#include <bits/stdc++.h>using namespace std;typ.原创 2020-12-18 17:57:27 · 95 阅读 · 1 评论 -
acm-(好题、拓扑序、并查集)Educational Codeforces Round 100 (Rated for Div. 2) E. Plan of Lectures
传送门首先这kkk对两元组可以形成若干条链或者环,当然如果形成了环就不合法了,特别地,我们把所有不在这kkk对二元组中的点也看成是长度为1的链。要输出一个合法的解就得保证链条按照拓扑序被一条条输出。首先利用并查集将同一条链的所有点放入并查集。然后写一个checkcheckcheck函数来检查链条的合法性,合法性即不能拥有环以及链条上不能出现违背拓扑序的情况(具体实现的时候,checkcheckcheck函数只检查链条的每个连通块中是否存在违背拓扑序的情况,块与块之间违背拓扑序的情况则会在下一部分自.原创 2020-12-18 11:56:02 · 316 阅读 · 0 评论 -
acm-(打表、找规律)2018-2019 ACM-ICPC, Asia Nanjing Regional Contest G.Pyramid
传送门本题考虑打表找规律,打表程序很好写,暴力枚举三角形的三个点即可。然后打出前面几项:1、5、15、35、70、126、210、330...1、5、15、35、70、126、210、330...1、5、15、35、70、126、210、330...貌似没什么规律,考虑对前后两项作除法,得到51,31,73,21,95,53...\frac 51,\frac 31,\frac 73,\frac 2 1,\frac 95,\frac 53...15,13,37,12,59,35...乍..原创 2020-12-17 21:18:25 · 385 阅读 · 0 评论 -
acm-(思维、区间交) Codeforces Round #690 (Div. 3) F. The Treasure of The Segments
传送门考虑反面会更简单,也就是找到和某个线段不相交的线段个数,假设当前考虑线段为(l,r)(l,r)(l,r),那么与它不相交的线段要么满足r′<lr'<lr′<l,要么满足l′>rl'>rl′>r,那么就upperbound()upper_bound()upperbound()找即可,这里有个小技巧,将rrr开成负数,这样就可以写成跟lll一样了(还不用特判)。#include <bits/stdc++.h>using namespace std;.原创 2020-12-16 23:39:10 · 97 阅读 · 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 · 127 阅读 · 0 评论 -
acm-(好题、贪心、思维)Codeforces Round #674 (Div. 3) E. Rock, Paper, Scissors
传送门首先是一波暴力打法,考虑直接枚举Alice的出拳顺序,并且保证当前拳头用完后再进入下一个拳头类型。对于当前拳头,枚举对局的Bob的拳头即可。#include <bits/stdc++.h>using namespace std;const int inf = 2147483647;int a[3],b[3],aa[3],bb[3],c[3];int ans1=inf,ans2=0;bool win(int a,int b){ return a==0&.原创 2020-12-14 11:39:55 · 154 阅读 · 0 评论 -
acm-(树上差分、lca)2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest G. Rikka with Intersections of Paths
传送门首先找规律,可以发现任意kkk条简单路径,假如它们存在公共的交点,那么这些公共的交点中一定有且仅有一个交点满足是某些路径的最近公共祖先。于是我们枚举每个点,假设它是某kkk条简单路径的交点,并且是这kkk条简单路径中某些路径的最近公共祖先,这样就能不重不漏的枚举所有的存在交点的kkk条简单路径。设对于某点存在cntcntcnt条路径经过它,并且有lcacntlcacntlcacnt条路径以它作为最近公共祖先,那么这个点对答案的贡献就是Ccntk−Ccnt−lcacntkC_{cnt}^k-C_.原创 2020-12-13 22:22:55 · 177 阅读 · 0 评论 -
acm-(离散化、单调栈)CF1454F. Array Partition
传送门首先离散化,然后枚举值xxx作为区间的最大最小值是否能够找到对应的ansansans。首先xxx最左边和最右边的两个位置tl,trtl,trtl,tr是必须被左区间和右区间所取的,设mxl[i]mxl[i]mxl[i]表示max(a1,a2,...,ai)max(a_1,a_2,...,a_i)max(a1,a2,...,ai),mxr[i]mxr[i]mxr[i]表示max(ai,ai+1,...,an)max(a_i,a_{i+1},...,a_n)max(ai,ai+1,...,.原创 2020-12-12 22:24:13 · 135 阅读 · 0 评论 -
acm-(构造、思维、染色)Codeforces Global Round 12 C. Errich-Tac-Toe (Hard Version)
传送门先考虑简单版本怎么做,对每个格子按照(r+c)%3(r+c)\%3(r+c)%3进行分类,等于000的一组,等于111的一组,等于222的一组,假设cnticnt_icnti表示(r+c)%3=i(r+c)\%3=i(r+c)%3=i的′X′'X'′X′的数量,我们考虑枚举iii,将所有iii属性的′X′'X'′X′改成′O′'O'′O′,这样一定能够保证不存连续的333个′X′'X'′X′,因为连续的333个′X′'X'′X′中必有一个′X′'X'′X′的属性是iii。由于cnt0+cnt1+.原创 2020-12-07 16:06:52 · 188 阅读 · 0 评论 -
acm-(好题、STL、dp、模拟)Educational Codeforces Round 99 (Rated for Div. 2) G. Forbidden Value
传送门考虑设dp[i][j]dp[i][j]dp[i][j]表示读完第iii行语句后,若xxx值为jjj所需要花费的最小代价。假设本题只有setsetset语句,那么我们不难发现,每当遇到语句set y vset\;y\;vsetyv时我们只需要更新∀j≠y,dp[i][j]+=v\forall j\ne y,dp[i][j]+=v∀j=y,dp[i][j]+=v以及dp[i][y]=mink{dp[i−1][k]}dp[i][y]=min_{k}\{dp[i-1][k]\}dp[i][y]=.原创 2020-12-04 20:38:41 · 160 阅读 · 0 评论 -
acm-(好题、动态规划)Codeforces Round #666 (Div. 1) C. Monster Invaders
传送门本题考虑设dp[i][0]dp[i][0]dp[i][0]表示打第iii关时bossbossboss只剩一滴血,且此时正好位于第iii关并即将前往第i+1i+1i+1关,而前i−1i-1i−1关所有怪物被清空所需要的最少时间。dp[i][1]dp[i][1]dp[i][1]表示前iii关所有怪物被清空(当前正在第iii关,即将前往第i+1i+1i+1关)所需要的最少时间。注意到如果有一关bossbossboss只剩一滴血,一定要去左边或者右边相邻的一个关卡,如果左边关卡的bossbossboss.原创 2020-12-04 16:54:17 · 317 阅读 · 0 评论 -
acm-(博弈、思维)Codeforces Round #666 (Div. 1) B. Stoned Game
传送门首先如果一开始有一堆的石子数比其它所有堆的石子数的总和还要多,那么先手就可以一直从这个最多石子数的堆中取石子,最终一定会先手胜利。然后考虑普遍情况,假设不存在某一堆,使得这一堆石子数比其它堆石子数总和还要多,那么双方一定会避免在拿走某一堆的一颗石子后,突然出现一堆石子数大于其它堆的石子数之和,因为这样就会让对手有机可乘。假设现在的局面是某一堆石子与其他所有堆石子数量相等,那么当前的操作方一定会去从那一堆石子中拿走一颗石子,否则对手就会胜利,于是最终会剩下一颗石子,拿走最后一颗石子的会赢得胜利。.原创 2020-12-04 11:35:31 · 131 阅读 · 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 · 182 阅读 · 0 评论 -
acm-(好题、模拟、思维、构造)Codeforces Global Round 11 D. Unshuffling a Deck
传送门构造方式大致就是,按照1、n、2、n−1、...1、n、2、n-1、...1、n、2、n−1、...的方式交替选择,对于每个选择的数iii,我们通过一次操作将它放到对应的位置上,每次我们都是在一个区间[l,r][l,r][l,r]内选择数字,这个区间会不断缩小,直到所有数字的排序完成。注意到这里放到对应的位置上,这个位置并不完全固定,每次我们都会让整个序列反转一下,所有这个位置也会跟着反转。具体如何通过一次操作放到对应的位置上,如果是想放到[l,r][l,r][l,r]的左边,假设数字iii位于.原创 2020-11-27 08:30:37 · 184 阅读 · 0 评论 -
acm-(贪心、dp)Educational Codeforces Round 96 (Rated for Div. 2) F. Realistic Gameplay
传送门本题有两种做法:dp、贪心。先说dp怎么做。设dp[i]dp[i]dp[i]表示第iii波及之前所消耗的最少子弹数。我们考虑在哪一波结束的时候换弹夹来更新dpdpdp数组,首先枚举最后一次换弹夹的波次iii,对于后面的波次j(j>i)j(j>i)j(j>i)而言,都保证波与波之间不换弹夹,也就是说只有子弹打空的时候再换弹夹,于是可以直接模拟jjj从i+1i+1i+1到nnn的消灭怪物的子弹变化情况,顺便可以更新dp[j]dp[j]dp[j],由于第iii波结束的时候更换了弹夹,.原创 2020-11-26 08:05:54 · 135 阅读 · 0 评论 -
acm-(分组背包、lcm)2020 China Collegiate Programming Contest, Weihai Site L. Clock Master
传送门本题就是让将nnn分解为若干数,然后让这些数的lcmlcmlcm最大。本质上来说,我们就是让选择一些pkp^kpk,使得它们之和为nnn,且乘积最大,这其实相当于分组背包,对于每一组而言,我们可以选0,p1,p2,...0,p^1,p^2,...0,p1,p2,...,最后选出来的总和为nnn,而求最大乘积,由于题目取了InInIn,事实上就是求最大InInIn和,方程可以写成dp[j]=max(dp[j],dp[j−pk]+In(k))dp[j]=max(dp[j],dp[j-p^k]+In(.原创 2020-11-24 07:45:04 · 127 阅读 · 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 · 157 阅读 · 0 评论 -
acm-(分类讨论、思维、对称性)Codeforces Round #676 (Div. 2) D. Hexagons
传送门本题主要是利用对称性减少码量,首先注意到我们可以把从(0,0)(0,0)(0,0)出发的六条射线画出来,大致如下图所示:不难发现,我们可以从起点的六条射线之一出发,然后走到终点的六条射线之一,再顺着终点的射线走到终点。因此两个点的射线之间的交点显得尤为重要。由于终点不固定,我们考虑终点的射线与起点的射线相交的情况,然后根据对称性,我们先只考虑终点的②、⑥②、⑥②、⑥类型的射线与起点射线的相交情况,也就是我们只考虑这样的一条路径:从起点出发,经过起点的六条射线之一走到某个与终点②、⑥②、⑥②、.原创 2020-11-24 06:53:25 · 110 阅读 · 0 评论 -
acm-(bfs、思维)2020 China Collegiate Programming Contest, Weihai Site B.Labyrinth
传送门本题要求处理qqq次询问,每次求解任意两点之间距离。注意到障碍物其实非常少,只有42个,当起点和终点形成的矩形中没有障碍物的时候,最短路距离一定是∣xs−xt∣+∣ys−yt∣|x_s-x_t|+|y_s-y_t|∣xs−xt∣+∣ys−yt∣。当矩形中存在障碍物的时候,一定有一条最短路能够经过障碍物周围然后再到达终点,因此不妨预处理出所有障碍物周围四个位置到其它所有点的最短路,那么我们枚举这些位置作为起点到终点的中间位置,那么最短路就是dist(s,i)+dist(i,t)dist(s.原创 2020-11-23 15:01:14 · 153 阅读 · 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 · 89 阅读 · 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 · 215 阅读 · 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 · 207 阅读 · 0 评论 -
acm-(异或、博弈)CF Difficult Problems GameGame
传送门设cnticnt_icnti表示第iii位为1的数的数量。当cnti%2=0cnt_i\%2=0cnti%2=0的时候,容易发现无论怎样博弈最终两方的异或值在这一位上的情况一定是相同的,故这一位不能决定胜负。考虑一个最大的i=ki=ki=k使得cnti%2==1cnt_i\%2==1cnti%2==1,如果cntk−12%2==0\frac {cnt_k-1}2\%2==02cntk−1%2==0,容易发现先手必赢,而当cntk−12%2==1\frac{cnt_k-1}2\%2==.原创 2020-11-20 21:38:56 · 174 阅读 · 0 评论 -
acm-(思维、差分)Codeforces Round #681 (Div. 2) D. Extreme Subtraction
传送门考虑关于aaa的差分数组ddd,操作一相当于给某一个ddd值加上kkk,操作二相当于给某一个ddd值减去kkk,我们发现最终一定要让ddd值都为000,于是我们让负的ddd做操作一,正的ddd做操作二,由于操作一会导致a1a_1a1的减少,我们关注操作一的总贡献,假设其为sumsumsum,比较sumsumsum和a1a_1a1的大小即可。若sum<a1sum<a_1sum<a1说明a1a_1a1最终会被减少为负数,输出NONONO即可,否则输出YESYESYES。in.原创 2020-11-15 00:58:32 · 86 阅读 · 0 评论 -
acm-(思维、异或)Codeforces Round #682 (Div. 2) E. Yurii Can Do Everything
传送门考虑固定lll,假设ala_lal的最高位为kkk,于是我们从lll出发向右暴力枚举rrr的位置,在此期间保证sum(l+1,r−1)<2k+1sum(l+1,r-1)<2^{k+1}sum(l+1,r−1)<2k+1,然后对于每一个rrr都checkcheckcheck是否满足sum(l+1,r−1)=al xor arsum(l+1,r-1)=a_l\,xor\,a_rsum(l+1,r−1)=alxorar,满足的话答案+1+1+1。正着做完一遍后我们反转aaa数组然.原创 2020-11-14 16:21:21 · 206 阅读 · 0 评论 -
acm-(思维、异或、构造)Codeforces Round #682 (Div. 2) D. Powerful Ksenia
传送门本题考虑直接构造,对于nnn为奇数的情况,我们发现只需要按照如下方式就能让所有数变得相同:1,2,31,2,31,2,33,4,53,4,53,4,55,6,75,6,75,6,7.........n−2,n−1,nn-2,n-1,nn−2,n−1,n1,2,n1,2,n1,2,n3,4,n3,4,n3,4,n5,6,n5,6,n5,6,n.........n−4,n−3,nn-4,n-3,nn−4,n−3,n不难发现只需要n−2n-2n−2次操作即可。对于nnn为偶数的情.原创 2020-11-14 12:43:27 · 184 阅读 · 0 评论 -
acm-(思维、奇偶性、矩阵)Codeforces Round #682 (Div. 2) C. Engineer Artem
传送门要让所有相邻数两两不同,不妨考虑让相邻格子奇偶性不同,也就是对于ai,ja_{i,j}ai,j而言当i+ji+ji+j为奇数的时候那么我们让ai,ja_{i,j}ai,j为奇数,当i+ji+ji+j为偶数的时候我们让ai,ja_{i,j}ai,j为偶数。题目给出的+1+1+1操作实际上就是改变奇偶性的操作,也就是我们能够控制ai,ja_{i,j}ai,j的奇偶性,因此本题也就得到了解决。int main(){ int t=rd(); while(t--){ int n=rd(),.原创 2020-11-14 12:16:15 · 206 阅读 · 0 评论 -
acm-(区间dp、回文串、子序列)ICPC SG Preliminary Contest 2018 C - Making Palindromes
kattis传送门vj传送门对于sss串而言,考虑设dp[i][j][k]dp[i][j][k]dp[i][j][k]表示所有长度为len=j−i+1+klen=j-i+1+klen=j−i+1+k的包含s[i∼j]s[i\sim j]s[i∼j]的子串为子序列的回文串的个数,其也等价于在s[i∼j]s[i\sim j]s[i∼j]的基础上再添加kkk个任意字符串使得字符串成为一个回文串的方案数,注意保证这些回文串两两不同,那么dp[1][n][n]dp[1][n][n]dp[1][n][n]即为答案.原创 2020-10-27 08:11:53 · 212 阅读 · 0 评论 -
acm-(构造、数学、好题)2020ICPC·小米 网络选拔赛第一场 K. Sqrt Approaching
传送门一道神仙构造题,首先将题目给的式子化解了,我们能得到AB<CD<n\frac AB<\frac CD<\sqrt nBA<DC<n或n<CD<AB\sqrt n<\frac CD<\frac ABn<DC<BA。以第一个式子为例,由于CD>AB\frac CD>\frac ABDC>BA,由于C,DC,DC,D都是正数,不妨设CD=Xn+YBn+Z,(X>A)\frac CD=\fra.原创 2020-10-26 18:46:42 · 178 阅读 · 0 评论