自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(157)
  • 收藏
  • 关注

原创 网安实验 RSA实现

RSA的简单实现,未作优化,不能扩展到超出long long范围的质数上。由于是按位加密,比较冗余,可以自己加上字符的映射去减少密文的长度。使用了米勒罗宾判断素数。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int L=101;bitset<64> charToBitset(const char s[8])//转换函数{ bitset<64> bits; f

2021-04-24 13:49:02 179

原创 Codeforces Round #717 (Div. 2) D. Cut

题目:D. Cut题意:给定一个n个数的数组,q次询问,问每次[l,r]区间需要分成多少个区间,每个区间的乘积是区间所有的的最小公倍数。首先分析区间所有数的乘积是所有数的最小公倍数,那么成立每一个数之间gcd都是1,每个数都是互质的,唯一分解可以证明。n是1e5的,先进行分解质因数,比如到第i个数,取他的左边第一个与他不互质的数,那么以i为点的这个数就分割区间完了,之后再往左递推就可以计算出需要分割成几个区间。考虑一下极端情况,递推过去每一个数都是不互质的,复杂度为O(n),超时。考虑化简利用倍增。#

2021-04-24 13:36:11 225 3

原创 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)C.Cities

题目:Cities题意:给你一个长度为n的序列,a[i]为第i个的颜色,让他们颜色都相同,最少染色多少次,每一次可以将任意一区间染色成相同任意颜色的方块,但要求这个区间的方块颜色全部相同。一开始dp[i][j]是第i块染色为j颜色的最少次数,发现无法处理3 2 1 2 3这样的数据,真正减少次数的贡献其实是当区间的边界点颜色相同时减少贡献,而题目也说了不超过15个一样的颜色。可以发现某一段区间染色都一样主要看最后一个的颜色是什么,区间dp[i][j]此区间全部染为颜色a[j]的最少次数,将连续且相同的区

2021-04-08 22:15:40 408

原创 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)K Parallel Sort

题目:K Parallel Sort题意:给定了一个排列,问每一轮可以交换一组序号,每一轮中可以交换[0,n2][0,\frac{n}{2}][0,2n​]次,但每一轮中的交换的节点两两不同,问最少多少论让排列为1-n。首先可以把每一个数有联系的成环找出来,每一个环都可以同时在一轮处理,通过数据5 1 2 3 4,一开始以为可以log2(n)log_2(n)log2​(n),n为链长。但是发现可以2轮解决无穷大的链长,把他们拆分成链长为2的,最后直接交换。例上述 1-5-4-3-2-1,可以在一轮交换

2021-04-06 16:02:46 266

原创 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)F-Fireworks

题目:F-Fireworks题意:每次可以p概率做成功一个烟花,花费n时间,点燃花费m时间(全部点燃),问最小的时间期望使得烟花点燃成功。求导一次之后,以分子作为函数进行二次求导可以发现是个凹函数。三分找最值。#include<bits/stdc++.h>#define mmp make_pair#define inf 0x3f3f3f3f#define llinf 0x7fffffffffffffffusing namespace std;typedef long long

2021-03-27 12:49:48 216

原创 P3592(区间dp)

果然又废又很久没有打题,打坐半天可以的,效率0 。题目:click题意:我们先来考虑

2021-01-20 21:01:35 119

原创 Codeforces Round #688 (Div. 2) D. Checkpoints(概率dp+构造)

题目:D. Checkpoints题意:n个关卡,12\frac{1}{2}21​概率通过或者失败,0关卡不是激活态,1是,如果失败退回到之前最近的激活态关卡,位置1一定是1激活态。给定一个k,让你构造一个长度为n的关卡序列让尝试的次数期望为k。首先可以考虑1111类似的序列,转移方程好写,dp[i]:开始在关卡i,通过剩余关卡的期望。可得:dp[i]=dp[i+1]+1+1+dp[i]2dp[i]=\frac{dp[i+1]+1+1+dp[i]}{2}dp[i]=2dp[i+1]+1+1+dp[i]​

2020-12-11 12:59:42 182

原创 2020 China Collegiate Programming Contest - Mianyang Site L. Lottery

题目:L. Lottery题意:n个盒子,每个盒子有x[i]个2a[i]2^{a[i]}2a[i]的球编号,求每个盒子里取0-x[i]范围内的编号总和有多少个不同的。带重复的总数很好求,直接累成,但是去重情况套的很多,没办法下手,需要考虑需要一段是否重叠的二进制串。直接考虑每一个数的贡献,如果当前的数不影响到下一个数,直接乘这一段即可,影响的话找到受影响的一段,比方说从i开始,其实是以2a[i]2^{a[i]}2a[i]的值为底数造成的二进制串,计算有多少个相乘可得出答案。#include<bi

2020-12-10 22:56:02 316

原创 2020 China Collegiate Programming Contest, Weihai Site C. Rencontre(树形dp+期望)

题目:C. Rencontre大致题意:有n个旅馆,有3个集合分别包含了各自的旅馆。在每个集合中选择一个旅馆之后确定了3个旅馆的位置,再选择一个旅馆v,使得三个旅馆到v旅馆的总距离最小,问路线的期望总长度。画图可以发现,树上的三个点找到一个点使之距离最小,必是三个点中的一个,将其中一个视作中点,但是确定三个点之后,还得计算是哪一个最小的,由于有一个是中点,可以直接相加三个点的互相距离最后除以2。证明比较x+y+z和2min的大小比较x+y+z和2min的大小比较x+y+z和2min的大小,两端乘

2020-12-08 16:39:25 262 2

原创 2020-2021 ACM-ICPC Brazil Subregional Programming Contest A. Sticker Album (gym 102861A)

题目:A. Sticker Album题意大意:买卡包,每包里有卡片[A,B]张,获得每个卡片的概率都相同,问买多少卡包能组成N张卡片的期望。设dp[i]为能组成i张卡片需要买的卡包数量期望。可以得到转移方程dp[i]=dp[i+A]+1+...+dp[i+B]+1B−A+1dp[i]=\frac{dp[i+A]+1+...+dp[i+B]+1}{B-A+1}dp[i]=B−A+1dp[i+A]+1+...+dp[i+B]+1​由于范围过大,线性递推,sum维护dp[i+A]-dp[i+B]的总和

2020-12-06 18:22:51 931 1

原创 Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) E

题目:E题意:一次打败一个怪物,ans+=池子里的经验,池子里增加被击败怪物的经验值,ans最大多少。有最多k次机会清空池子。当经验值为正数的时候直接放就可以了,当为负数的时候需要分析,有k次清空的机会,本质就是分成了k+1组池子,每组完了清0,要让ans最大,从大到小排序完,将负数放入k+1组池子,当负数越在某组的池子底下被减的次数也就越多,ans也就越小,谁的池子经验值高就放哪,用优先队列维护。#include<cmath>#include<iostream>#incl

2020-12-01 09:50:17 221

原创 Codeforces Round #686 (Div. 3) E

题目:E题意:给定一个n个点n条边的连通图,问能组成的简单路径有多少种,不能的点构成的简单路径即不同的。n个点n-1条边可以构成一个树形连通图另一条边加入必成环。我们首先找到这个环,基于此进行操作。1:环的不同的简单路径即Cn2∗2C_n^2*2Cn2​∗2,点到点两条不同的路径。2:普通的连通图,即答案是Cn2C_n^2Cn2​我们首先完善环的个数,再将每一个环看作树根找到树的点size也就找到了边数,求解一个树的简单路径个数。最后剩下第i棵树的子节点到其他树的子节点的个数,Ci1C_i^1

2020-11-26 21:16:00 109

原创 Codeforces Round #685 (Div. 2) (D(博弈) E1 E2(交互))

题目:D题意:A和U玩游戏,起始点坐标在(0,0),每一轮玩家选择将x或者y的值增加k(一定需要增加),保持增加后(p,q)距离p2+qq<=d2p^2+q^q<=d^2p2+qq<=d2。谁最后不能操作谁输,输出胜利者。画图可以发现,以k为单位划方格,无论A先手怎么走,后手可以走成一个方格,完全被包含(x∗k)2(x*k)^2(x∗k)2的正方形,后手都掌握了必胜走法,连续走两格子就改变了奇偶的。由于2∗x2*x2∗x必为偶数,先手必败,只需要判断一下(x+1)k是否存在。#inc

2020-11-26 21:03:47 317

原创 2020 China Collegiate Programming Contest Qinhuangdao Site(K题)

题目:K. Kingdom’s Power题意:根节点1上有无数个军队,每一次国王都可以指挥一支军队向相邻一个节点运动,问多少次占领所有的节点。首先可以分析出在当前节点有一支军队,那么最小的走法,仔细考虑,必然是先走的子节点深度最浅的,由于走完最浅的返回路径不需要增加过多,但是根节点上有无数个军队,需要判断就是从根节点派兵还是让走到叶子节点的兵在返回。至此可以得出贪心的策略。写法的话,就是sort当前节点的子节点按照最深树的高度排序,找是由其他树的节点走过来的还是根节点指派,一旦是根节点指派那么往上回

2020-11-09 16:36:13 245

原创 Codeforces Round #676 (Div. 2)

到中期总有不安的焦虑导致想法过多的懈怠,打打cf找找状态,赛中又回到之前浮躁的状态,总是不能很好的静下心。赛后静下来发现自己在模拟比赛中还是专注不够,造成一些过于啥b 的想法。比赛前静心,集中思考,思路放宽点。题目:A. XORwice求最小的(a ^ x)+(b ^ x)。 明显贪心找a和b的公共1部分全变为0。a,b与完取异或即可,看看数据容易发现也就是直接a,b异或。#include<cmath>#include<iostream>#include<cstd

2020-10-19 13:27:54 177

原创 HDU 3032 + (2020 CCPC网络赛)HDU6892 (SG模板打表找规律)

SG在补充一下。有向无环图的顶点上定义Sprague-Garundy函数。Sprague-Grundy定理(SG定理):游戏和的SG函数等于各个子游戏SG函数的Nim和(异或和)。Sprague-Grundy函数:定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。sg(x)=mex{ sg(y) | y是x的后继状态的一种},借助了nim博弈的思想。下面例

2020-09-22 13:15:11 492

原创 牛客练习赛69 (D组合+dp F数论)

题目:D 火柴排队组合数需要求一下,顺便总结一下组合数求的几种方法。Cnm=Cn−1m+Cn−1m−1C_n^m=C_{n-1}^{m}+C_{n-1}^{m-1}Cnm​=Cn−1m​+Cn−1m−1​,概念展开证明。由于这里只需要求CnkC_n^{k}Cnk​线性推导也可以。选择i个元素增加k,不改变排名,我们需要知道n个数选择1,2,3…个的时候不改变原始排名的数量。n的范围考虑dp,构造状态dp[i][j][0]:前i个人以i结尾选择了j个并且没有改变原始排名的方法数,第i个元素选择没选

2020-09-15 19:11:45 228 1

原创 反Nim博弈

考虑怎么借用到nim博弈的结论,取最后的石头的获胜,那么所有个数异或不为0先手必胜。反nim博弈:最后取完的人输。考虑特殊情况:全为1的时候,奇数先手必败,偶数先手必胜。其余情况。将所有的石子堆数异或如果为1 那么只要有大于1的石子堆数必胜,因为我掌握了胜败态的主动权,也就是我能够控制最后一堆取完还是留1个给对面取前提是有大于1的石子堆。举栗:W:必胜 L:必败个数为1的堆数为偶 大于1的堆数异或不为0 先手必胜:先手拿大于1的堆数变L态,如果后手一直跟着取那么先手最后留一个,变奇数个

2020-09-14 17:13:32 360

原创 Codeforces Round #667 (Div. 3)

题目:A. Yet Another Two Integers Problem题意:直接差值模拟。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<vector>#include<stack&

2020-09-09 22:10:23 104

原创 (POJ-2369) (2020牛客多校第二场J.Just Shuffle 第五场E.Bogo Sort)

全排列的置换以及群的基础知识点可以在网上看一看。https://wenku.baidu.com/view/7b373e6b561252d380eb6ee5.html#题目:POJ-2369题意:给定一个置换,问多少次可以回到原来的顺序。发现每个数都是一个环(或者是群的概念理解),找循环节长度,周期倍数回到原来的地方,求lcm。#include<cmath>#include<iostream>#include<cstdio>#include<cstr

2020-09-04 14:47:18 113

原创 Codeforces Round #666 (Div. 2)

题目:A. Juggling Letters题意:给定了n个字符串,问任意重组能否让n个字符串完全相同。用数组记录a-z的个数看能否平分。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<vector&

2020-08-31 17:42:37 93

原创 (天池)超级码力在线编程大赛初赛 第2场

题目:click1.三角魔法叉乘判断。注意三点构不成三角形的坐标情况,应该是要非退化三角形。(粘个板子)typedef long long ll;#define inf 0x3f3f3f3f#define llinf 0x3f3f3f3f3f3f3f3fclass Solution {public: struct Point { ll x,y; }; ll solve(Point p1,Point p2,Point p3) { ret

2020-08-31 14:38:13 540

原创 (天池)超级码力在线编程大赛初赛 第1场

题目:click树木规划如果第一棵树以及第二棵树都需要移动,优先选择移动第二棵树。直接从第一棵树贪。class Solution {public: int treePlanning(vector<int> &trees, int d) { int ans=0; for(int i=0;i<trees.size();++i) { int j=i+1; while(trees[i]+d&g

2020-08-30 21:57:38 170

原创 Educational Codeforces Round 94 (Rated for Div. 2)

题目:A. String Similarity题意:给定一个2∗n−12*n-12∗n−1字符串,让[1,n],[2,1+n]…相似,相似就是有一个字符相等即可。奇数的构造。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#

2020-08-28 14:48:46 84

原创 Codeforces Round #665 (Div. 2)

题目:A. Distance and Axis题意:O是原点,可以在数轴上移动A点,找一个点B∈[O,A]\in[O,A]∈[O,A]使得∣∣AB∣−∣OB∣∣=k\vert\vert{AB}\vert-\vert{OB}\vert\vert=k∣∣AB∣−∣OB∣∣=k。如果n<k的时候直接是n-k,大于的时候设x,y有解,分奇偶即可。#include<cmath>#include<iostream>#include<cstdio>#include&l

2020-08-27 11:07:38 109

原创 HDU6574(概率递推)

题目:HDU6574题意:在[1,n]的区间内随机等概率的找到一个r点,之后在[1,r]区间随机等概率的找到一个l点,作为区间[l,r],(都是正整数的点),问两次操作,两个区间相交的概率。细节处理不到位就麻烦的很。一开始通过确定第一个区间进行概率计算,排除不可能的概率乘上第一个区间的概率,但是两边的不可能概率需要排列组合掉到牛角尖里了。逆着算麻烦就正着分析吧。先分情况考虑,首先肯定确定都是正整数,不需要积分了。考虑第一次选的点为i,概率为1n\frac{1}{n}n1​,之后我们取l点,为1i\f

2020-08-25 14:09:59 161

原创 主席树入门(POJ2104+洛谷3834)

前置知识点:https://blog.csdn.net/csyifanZhang/article/details/105215833?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159806459519724839245058%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159806459519724839245058&bi

2020-08-22 22:40:02 98

原创 Educational Codeforces Round 93 (Rated for Div. 2)

题目:A. Bad Triangle题意:能否找到三条边不能构成不共线的三角形(面积非0)。sort边判断。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<vector>#include&lt

2020-08-19 21:58:14 108

原创 Codeforces Round #663 (Div. 2)

题目:A. Suborrays题目:

2020-08-14 21:36:39 84

原创 Codeforces Round #662 (Div. 2)

题目:A. Rainbow Dash, Fluttershy and Chess Coloring轮流染色,相邻的格子不能相同颜色。手写一下4,5可知。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<v

2020-08-11 10:18:34 99

原创 UVALive - 3938

题目:UVALive - 3938题意:给定了一个长度为n的数组,m次询问,给出l,r,找到该区间的最大连续和。线段树维护一个最大的区间,细想当l==r的时候区间最大连续和就是[l,r],向上合并的时候。画图可知,左子树的最大连续区间和,以及右子树的最大连续区间和,需要比较大小外,还有合并完,左子树的后缀与右子树的前缀需要判断一下大小以便更新区间连续最大值。所以在维护以最大的前缀和以及后缀和。代码来源:https://blog.csdn.net/Q755100802/article/details/

2020-08-07 13:16:53 98

原创 Codeforces Round #661 (Div. 3) E1 E2

题目:E1. Weights Division (easy version)题意读错了折磨的,给定一棵树,n个点n-1条边,每一条边有权重,给定一个价值S,问∑v∈leavesW(root,v)<=S\sum_{v\in{leaves}^{W(root,v)}}<=S∑v∈leavesW(root,v)​<=S,意思即根到每个叶子节点的距离路线的总和价值小于S,你每次可以操作任意一条边使其变成⌊wi2⌋\lfloor \frac{wi}{2} \rfloor⌊2wi​⌋,问最小多少次操

2020-08-07 10:45:43 105

原创 Educational Codeforces Round 92 (Rated for Div. 2) (A-E)

题目:A. LCM Problem题意:给定l和r,找到一对x,y,LCM(x,y)属于[l,r]。设gcd,最小的x为l,可知最优的y为2*l。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<vec

2020-08-03 09:24:28 89

原创 Codeforces Round #660 (Div. 2)

题目:A. Captain Flint and Crew Recruitment题意:一个数只有两个质数相乘得到交nearly prime,问给出的n能不能由至少3个nearly prime质数组成。(总共4个数,各不相同)可以找到前几个nearly prime,可以由这个几个数去构成。重复的另构造。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include

2020-07-31 15:08:04 74

原创 Codeforces Round #659 (Div. 2)

太菜了呜呜呜呜,漫漫补题路。题目:A. Common Prefixes题意:给定a数组,a[i]表示字符串s[i]和s[i+1]的最大公共前缀。由于a[i]最大不超过50,可以先给a[i]做处理,之后在a[i]+1的长度上更改与之前的字符串s[i]的最后一位不同的数字,即确定了a[i]前缀正确性。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include&

2020-07-31 09:11:28 77

原创 Codeforces Round #658 (Div. 2)

题目:A. Common Subsequence找最小子串。就找一个相同的字母即可。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<vector>#include<stack>#i

2020-07-28 16:41:16 49

原创 Codeforces Round #657 (Div. 2) (A-D)

还好没在线打,这场属实搞心态。题目:A. Acacius and String题意:构成一个字符串中只有一个abacaba的子串,?可以随意填。枚举?所构成的是子串abacaba的第几位,之后在遍历整个串是否只有一个,不成立还原继续。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdli

2020-07-25 16:45:21 121

原创 Codeforces Round #656 (Div. 3) (A-F)

题目:A. Three Pairwise Maximums题意:找到这样的a,b,c。显然x,y,z都是a,b,c里头的数,直接枚举a,b,c也可以。无论a,b,c是什么大小关系,x,y,z一定要有2,3个相同的,否则NO。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib&gt

2020-07-22 16:36:49 127 1

原创 Codeforces Round #654 (Div. 2) (A-E2)

题目:A. Magical Sticks题意:在[1,n]范围内能最多能连接出多少根相同的棒子。1和n-1相互连接,类推。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<vector>#inc

2020-07-18 21:47:30 145

原创 Codeforces Round #655 (Div. 2) (A-E)

题目:A. Omkar and Completion直接构造相同的数。#include<cmath>#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<istream>#include<vector>#include<stack>#include&

2020-07-17 17:39:32 150

空空如也

空空如也

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

TA关注的人

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