自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Crush_Z

纵有千古,横有八荒;前途似海,来日方长。

  • 博客(85)
  • 收藏
  • 关注

原创 ACM历程(持续更新)

2019/09/27 注册洛谷,正式接触编程2019/11/20 第四届“深信服杯”上海第二工业大学新生程序设计大赛第三名2020/01/22 洛谷200AC2020/01/22 第一场CF Codeforces Round #615(Div. 3)2020/03/21 洛谷300AC...

2020-04-05 18:16:39 562 1

原创 历届蓝桥杯题解合集

第十一届蓝桥杯省赛C/C++ A组C/C++ B组Java A组Java B组Python组第十二届蓝桥杯省赛C/C++ A组C/C++ B组Java B组Python组第三届-第十届蓝桥杯省赛声明:合集内题解均为转载

2021-11-21 18:53:11 1250

原创 Ubuntu设置自定义分辨率并开机自启

打开终端输入cvt 2560 1440(自定义分辨率)得到:Modeline "2560x1440_60.00" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync输入xrandr结果中包含显示器名称,如:Virtual1输入:sudo xrandr --newmode "2560x1440_60.00" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync.

2021-08-29 19:08:50 853 1

原创 Http请求中Get与Post的区别

待补

2021-08-25 23:08:13 229

原创 2020ICPC昆明-I.Mr. Main and Windmills(计算几何) -- 叉乘求两直线交点

Mr. Main and Windmills题意:火车从sss向ttt运动,在轨道的一侧有nnn个风车,当火车到达某一点的时候,风车的相对方向会发生改变。例如:aaa原本在bbb的左边,火车运动到某一点时,从火车的视角,aaa出现在了bbb的右边。mmm次询问,每次询问输出一个坐标,对于hih_ihi​风车而言,恰好发生了kik_iki​次方向改变。题解:例如aaa和bbb风车,当它们的相对位置改变时,火车应位于直线ababab和直线ststst的交点处题目就转变为:求hih_ihi​和其他风车所

2021-04-08 22:47:31 477

原创 第十七届程序设计大赛暨蓝桥杯校内选拔赛

银行业务队列简单模拟题解:队列模拟,注意编号奇数到A,偶数BCode:#include <bits/stdc++.h>using namespace std;queue<int> q1,q2;int main(void) { ios::sync_with_stdio(0); int n; cin>>n; for(int i=1;i<=n;i++) { int x; cin&g

2020-12-30 16:18:17 1202 1

原创 CF1459D.Glass Half Spilled(DP)

D. Glass Half Spilled题解:对于每个kkk,假设SSS为选取的杯子集合,SaS_aSa​为选取杯子的总容量,SbS_bSb​为选取杯子的当前水量,BBB为全部杯子中的总水量,为使这kkk个杯子的水量最多,最优的选择是将其他杯子中的水全部倒入这kkk个杯子中,结果为min(Sa,B/2+Sb/2)min(S_a,B/2+S_b/2)min(Sa​,B/2+Sb​/2)。根据这个式子可以得知,当SaS_aSa​确定时,SbS_bSb​越大一定不会使结果变劣。问题就转变为,选取kkk个杯

2020-12-21 16:04:03 497

原创 “菜鸟杯”华中师范大学程序设计新生赛 F-你猜我是签到吗?(贪心+模拟)

你猜我是签到吗题解:很显然,一个形如010的串可以对结果产生2的贡献,10或01对结果产生1的贡献0110,与010产生的贡献是一样的,题意要求二进制数最小,所以应该避免这样的形式从后向前模拟就好了,如果m为奇数,就在1或n的位置的放一个1。为偶数时,如果前一个位置为0且该位置可以放1,就在该位置放1这样会有一个特殊情况,比如3 2 1 2这组样例,输出"QAQ!",但实际上是有解的:101。在赛场上没有想到怎么简便的处理这种情况,赛后一想,好像加个特判就行了:1和n都可填且2和n-1的位置都为0

2020-12-20 14:47:29 254 1

原创 2020第五届上海第二工业大学新生程序设计竞赛

A-迎新小游戏——抽奖品命题人:19计科C1 占淼题解:概率通过组合数求得:Ca2Ca+b2‾\begin{aligned}C_{a}^{2}\\ \overline{C_{a+b}^{2}}\end{aligned}Ca2​Ca+b2​​​,化简得:a×(a−1)(a+b)×(a+b−1)\dfrac{a\times \left( a-1\right) }{\left( a+b\right) \times \left( a+b-1\right) }(a+b)×(a+b−1)a×(a−1)​记m=a

2020-12-10 00:13:00 2912 9

原创 CF1452D. Radio Towers(DP)

Radio Towers题意:有一个长为n的线段,每个点设置被信号塔的概率为0.5,每个信号塔可以覆盖一个以自己为中心的奇数线段,覆盖范围不可重叠,请问存在解的概率题解:每个位置都有等概率设置或不设置,共有2n2^n2n种情况,且等概率关建点是求有多少情况可以存在解考虑DP,枚举前面的合法状态去更新,因为必须是奇数段,所以就是前-1,-3,-5…的情况数之和,这个和可以用前缀和来维护,注意奇偶需要分开之后就费马小定理求逆元就行了Code:#include<bits/stdc++.h&

2020-12-01 22:25:43 350

原创 2018新生赛-还是简单题

还是简单题题意:给定两个数,忽略左右移的情况下,需要几次加减法可以得到他们的乘积。题解:对于a*b,可以将a或b转换为二进制并拆解,以b为例假设b等于21,转换为二进制:10101,则21=24+22+2021=2^4+2^2+2^021=24+22+20a∗b=a∗(24+22+20)=a∗24+a∗22+a∗20=(a<<4)+(a<<2)+(a<<0)a*b=a*(2^4+2^2+2^0)=a*2^4+a*2^2+a*2^0=(a<<4)+(a

2020-11-28 19:05:55 251

原创 牛客小白月赛29-I修改(最小生成树)

I-修改题意:有一个混乱的序列(可以理解为忽略具体的值,求通解),第iii种操作可以使lil_ili​ ~ rir_iri​加减任意值,费用为wiw_iwi​,求使得数列全为0的最小花费。题解:用差分数组表示这个序列,为了求通解,考虑最坏情况,即每一位都不为0每一次操作在lil_ili​处+k+k+k,在ri+1r_i+1ri​+1处−k-k−k最后的目标是使这个差分数组变为全0,非0的都要转移到n+1n+1n+1可以联想到最小生成树,从lil_ili​向ri+1r_i+1ri​+1建边,求最小

2020-11-19 20:45:21 247

原创 SSPU-ACM2020预选第一次模拟赛(A,D,F,H)

A.左右手知识点:博弈开始右手先手如果当前堆有1个石子,就只能取1个,下一堆的石子的先手就变成了左手如果当前堆有x个石子(x>1),那么可以取走x-1个,左手只能取走剩下的一个,下一堆右手仍为先手也就是说哪只手先取到第一个非1堆,哪只手就能掌控后面的局势,这只手就能必胜所以判断一下第一个非1堆的位置的奇偶性就可如果全为1,则判断n奇偶性Code:#include <bits/stdc++.h>using namespace std;int main(void) {

2020-08-09 22:13:16 272

原创 2020牛客暑期多校训练营(第四场)H.Harder Gcd Problem(数学)

H-Harder Gcd Problem题意:从1到n中,选m对数(不重复),使得每一对都不互质,求最大的m并输出一种可行的搭配题解:先线性筛筛出1到n中的素数,从大到小遍历这些素数,比如当前遍历到素数pip_{i}pi​,去枚举pip_{i}pi​的没用过且小于等于n的倍数(包括pip_{i}pi​),如果个数为偶数,就将它们一一匹配:若为奇数,就将2倍的那个数踢出,其他的一一匹配,踢出的那个数留着和后面的素数的2倍匹配,将它们标记为已用过。其实在比赛中我无法证明这种做法的正确性(虽然现在好像也给不

2020-07-20 18:36:22 243 1

原创 2020牛客暑期多校训练营(第三场)F.Fraction Construction Problem(数学)

F-Fraction Construction Problem题意:给定a和b,构造cd−ef=ab\dfrac{c}{d}-\dfrac{e}{f}=\dfrac{a}{b}dc​−fe​=ba​ 且 d,f<bd,f<bd,f<b题解:1.当ab不互质,即ab存在非1公因数时,可以构造出a+xb−xb=ab\dfrac{a+x}{b}-\dfrac{x}{b}=\dfrac{a}{b}ba+x​−bx​=ba​ ,x任取,因为要求d,f<bd,f<bd,f<b,

2020-07-19 13:38:31 442

原创 2020牛客暑期多校训练营(第二场)G.Greater and Greater(思维+构造)

G-Greater and Greater题意:给定两个数组A和B,在A中找到一个子数组C使得Ci>=BiC_{i}>=B_{i}Ci​>=Bi​ ∀i∈[1,m]\forall i \in[1,m]∀i∈[1,m],这样的子数组存在几个题解对A和B数组降序排列,并存下它们原本的位置id设bitset<>res,对于每一个BiB_{i}Bi​,res为1的位置PjP_{j}Pj​表示Aj>=BiA_{j}>=B_{i}Aj​>=Bi​,那么Pj−Bi.

2020-07-15 22:48:20 412

原创 2020牛客暑期多校训练营(第二场)J.Just Shuffle(逆元+模拟)

J-Just Shuffle题意:给定一个排列A和一个大质数k,找出一个置换B,使得P经过k次B置换后得到A,输出第一次置换后的结果题解:在排列A上找出所有环,记环的大小为szisz_{i}szi​,每一步移动的长度为tmpitmp_{i}tmpi​,使得tmpi∗k≡1modszitmp_{i}*k\equiv1 mod sz_{i}tmpi​∗k≡1modszi​,也就是求出k在modszimodsz_{i}modszi​下的逆元,k为大质数,所以一定有解,输出每个环移动tmpitmp_{i}tmp

2020-07-15 15:55:06 379

原创 2020牛客暑期多校训练营(第二场)B.Boundary(计算几何)

B-Boundary题意:给定原点及n个点,找到一个圆使得尽可能多的点在圆上题解:三点可以确定一个圆,原点固定,遍历两个点去确定圆心,并用map保存圆心,当再次得到一个相同的圆心时,map++(圆心相同,且有共点必定为同一个圆为避免重复计算某一点,每次遍历完第一维之后,清空map,相当于每一次固定原点和定点P,遍历第三点Q,最后结果要加上P由于圆心推导的式子有点小问题,所以一直只能过95%(55555…),后面给出三点确定圆心的模板Code:#include <bits/stdc++.h&

2020-07-14 19:55:22 391 3

原创 CF1234C. Pipes(dfs+模拟)

Pipes按题意模拟就行根据当前位置、水流来的方向以及管道类型,可以通往的位置和方向是固定的dfs一步步走Code:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) memset(a, b, sizeof(a));#define lowbit(x) (x & -x)#define lrt .

2020-06-14 22:23:28 446

原创 CF1263D. Secret Passwords(并查集)

Secret Passwords对于每一个给出的字符串,把字符串中的所有字母之间都连上边。这样,若两个字符串有公共的字母,他们就一定在一个连通块内,最后求出连通块个数就可以了。Code:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) memset(a, b, sizeof(a));#define low

2020-06-14 16:05:12 299

原创 CF1223C. Save the Nature(二分+贪心)

Save the Nature二分票数,用大顶堆来存储票的价格,显然a和b的公倍数位置上应该放最大的价格,其次比较x和y,较大的那个对应的位置上放较大价格,最后把剩余的没放的位置再放剩下的价格,每次从堆中取价格,判断当前票数是否满足价格至少为kCode:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) me

2020-06-05 17:20:48 304

原创 CF1335D. Game With Array(数论+思维?)

Game With Array要使子序列和不为k和n-k,最简单的就是取k=1,判断一下s/n>=2就行,这样序列可以为n-1个2和s-2*(n-1)组成Code:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) memset(a, b, sizeof(a));#define lowbit(x) (

2020-06-03 23:00:41 243

原创 CF1238C. Standard Free2play(模拟)

Standard Free2play直接模拟就行:有两个挡板分别在100,50的位置,那么就可以一步步的跳到51的位置现在来到了51的位置,50有个挡板,如果49的位置有挡板,那么可以直接跳到49如果下一个挡板在45的位置,从51跳下会嗝屁,氪金大法,在50的位置开个挂,跳到50一步步的走就行了复杂度O(n)Code:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pai

2020-06-03 00:36:41 375

原创 1279C. Stack of Presents

Stack of Presents维护最深深度即可比如先拿一个第5层的,这时最深深度就是5,接下来如果拿第4层的就可以认为它刚刚已经被移到了最上面,如果要拿第7层的,就需要把上面的移出,然后更新深度Code:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) memset(a, b, sizeof(a));

2020-06-02 17:35:08 219

原创 CF346A Alice and Bob(博弈+gcd)

Alice and Bob求n个数的gcd 最后的数列必然是一个以gcd为首项,公差为gcd的等差数列比如:2 4 6 显然结束1 3 5 虽然也是等差数列,但还可以继续下去所以这题的做法就是求n的数的gcd,然后就可以求出这个数列最长为多少,减掉初始的nCode:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem

2020-05-28 23:32:54 225

原创 CF1228C Primes and Multiplication(数论)

Primes and Multiplication题意:不好描述(逃)戳上面链接吧分析:题目看起来很复杂,但是理一下其实就是 x的每个质因数在1到n的的质因数集合中出现次数 答案就是x的每个质因数的次数幂(好像很绕,我也不知道在讲什么)举个例子,x=5,n=70,x的质因数只有5,f(5,1)∗f(5,2)…f(5,70)=g(1,5)∗g(2,5)…g(70,5)f(5,1)*f(5,2)\dots f(5,70) = g(1,5)*g(2,5)\dots g(70,5)f(5,1)∗f(5,2)

2020-05-28 22:04:15 235

原创 CF467C. George and Job(前缀和+DP)

George and Job题意:给定一个数组,从中选择k个长为m的子段(不重叠),使和最大分析:f(i,j) 前i个数中选j个长为m的子段转移方程:当前i不选,继续沿用i-1的值 或者 选最后m个组成一个子序列dp[i][j]=max(dp[i−1][j],dp[i−m][j−1]+sum[i]−sum[i−m])dp[i][j]=max(dp[i-1][j],dp[i-m][j-1]+sum[i]-sum[i-m])dp[i][j]=max(dp[i−1][j],dp[i−m][j−1]+su

2020-05-27 22:21:56 300

原创 CF466C Number of Ways(前缀和,双指针)

Number of Ways题意:将一个数组分成连续的三段,有几种分法可以使三段和相等分析:因为要求和,所以肯定要前缀和(雾),遍历数组,如果当前和等于sun[n]/3,则这个位置可以为i,如果当前和等于sum[n]/3*2,则这个位置可以为j,答案加上这之前可以为i的数量(好像也不算是双指针吧)Code:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int,

2020-05-25 21:58:11 345

原创 CF707C Pythagorean Triples(数论)

Pythagorean Triples题意:给定一个数,求出另外两个数,使这三个数构成勾股数分析:a2=b2−c2,a2=(b−c)∗(b+c)a^2=b^2-c^2,a^2=(b-c)*(b+c)a2=b2−c2,a2=(b−c)∗(b+c)当a^2为奇数,令(b-c)=1,(b+c) = a^2;当a^2为偶数,令(b-c)=2,(b+c) = a^2/2;求解方程即可a<=2时,不可能构成勾股数Code:#include <bits/stdc++.h>using

2020-05-25 19:01:41 162

原创 CF486C. Palindrome Transformation(贪心)

Palindrome Transformation题意:给定一个字符串和光标的初始位置,每一步可以左右移动一位或将字符上下加1,求最小步数使之成为回文串分析:1.要使成为回文串,即对应字符相等,无论变左边的 还是变右边的 亦或是左边变一点右边变一点,总步数都是一样的,所以差别就在于移动上2.显然,全部动左边的或者全部动右边的,可以最优3.为方便,统一动左边的,如果初始位置在右边,我们可以将它移到左边的对应位置(不计步数)4.接下来算每一个对应的位置的最小步数5.加上移动的最小步数就是最后的结果

2020-05-23 23:58:11 300

原创 CF118D Caesar‘s Legions(dp)

Caesar’s Legions题意:将n1个0和n2个1排列,最多允许k1个0或k2个1连续,求排列数分析:1.显然还是线性dp(反正是dp,是不是线性不清楚)2.最开始的想法:f(i,j,k) 长度为i的排序,以j结尾,最后连续k个j,后来发现转移方程很复杂,遂放弃3.f(i,j,k,l) 选i个0,j个1,最后连续k个l,以l结尾,虽然转移方程还是有一点点复杂,但至少我能实现了(还是我太菜了)4.转移方程分为k=1和k>1两种情况:a. k=1时 以0结尾为例 dp[i][j][

2020-05-22 22:09:50 315

原创 CF706C Hard problem(dp)

Hard problem题意:给定n个字符串,每个字符串翻转需要花费一定的费用,要使所有字符串呈字典序输出(即:s1<=s2。。。。。)且花费最少分析:1.显然线性dp2.f(i,0) 为第i个不翻转,前i个达成字典序的最小费用;f(i,1) 为第1个翻转,前i个达成字典序的最小费用3.分四种情况更新dp,第i-1个字符串和第i个字符串分别翻或不翻4.注意费用较大会爆intCode:#include <bits/stdc++.h>using namespace std;

2020-05-21 22:49:43 346

原创 Codeforces Round #642 (Div. 3)

上蓝场,纪念一下A. Most Unstable Array题意:构造一个长为n,和为m的数组,使得相邻差的绝对值之和sum最大分析:当n=1时,sum只能为0当n=2时,放0和m,sum=m否则,m放任意非首尾位置,sum等于2mCode:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) mem

2020-05-15 17:51:55 166

原创 CF1283C. Friends and Gifts

Friends and Gifts题意:n个人互相送礼物,每人送出一个 收到一个,不可以送给自己,给出一个数组,表示第i个人想送给ai,ai=0表示不知道送给谁。给出一个可行方案。分析:1.用vt,vt1分别保存 不知道送给谁的序号 和 没有收到礼物的序号2.最精髓最重要的一步操作,用random_shuffle对vt1随机排序,然后cheak,如果不行就继续随机.Code:#incl...

2020-04-26 19:25:27 464

原创 Codeforces Round #634 (Div. 3)

A. Candies and Two Sisters题意:两个人分n个东西,a>b,有几种分法分析:(n-1)/2种Code:#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <string>#inc...

2020-04-15 20:58:15 184

原创 CF1213 C. Adding Powers(进制)

题目传送题意:给定一个数组v和k,要使一个空数组a变成v,第i步可以任意在a中选一个数加上kik^iki或跳过这一步。分析:将数组v中的数字转换为k进制表示,若每一位都为1或0,说明可以由k的次方相加得到,k的每一次方只能用一次,用vis记录。Code:#include <cstdio>#include <iostream>#include <algori...

2020-04-10 17:44:50 240

原创 Codeforces Round #632 (Div. 2)

A. Little Artem题意:黑格子相邻有白格子的话B++,白格子相邻有黑格子的话,W++,构造一个矩阵,使B=W+1分析:一个角放W,其他全B即可Code:#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cm...

2020-04-09 16:11:05 195

原创 CF1217D Coloring Edges(图的遍历)

题目传送可以肯定,最多染成两种颜色当没有环的时候,只染成一种颜色有环时,返祖边染成2,其他边染成1vis[]=0,表示该点未被访问vis[]=1,表示该点已访问,但其后代未访问完vis[]=2,表示该点及其后代都已访问当vis[u]=1时,出现一条v->u的边,该边即为返祖边#include <iostream>#include <cstdio>#...

2020-04-07 00:15:24 209

原创 CF1237D Balanced Playlist(st表)

题目传送官方给的标签以及大多数题解是二分,由于蒟蒻太菜了,不知道怎么二分,用st表过了1.先分析-1的情况:最小值的两倍大于等于最大值,就可以无限循环2.如果直接暴力的话,肯定超时,我还试了一下。。。3.考虑最坏的情况,最大值在1,最小值在n,从i+1开始播放,假设中间没有满足的情况,需要循环三圈,所以数组开三倍。4.从i开始播放,假设到j停止,从i+1播放,就不可能在j之前停,所以直接...

2020-04-06 22:28:21 218

原创 CF1033C Permutation Game(博弈论+拓扑)

题目传送当无法移动时,为必败态,至少有一种方法可以到达必败态的状态为必胜态,无论怎么走都是必胜态的状态为必败态。棋子可以从数值小的格子移向数值大的格子,从当前格向可到达的格子连有向边,可形成一个有向无环图,格子中的数字就是拓扑序,按拓扑序从大到小遍历,每次遍历到距当前格长度为当前格数值倍数的格子,如果到达的格为必败态,则当前格就是必胜态,到达的所有格都是必胜态,当前格就为必败态。详见代码:...

2020-04-06 16:56:00 547

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除