自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SDUT 2022 Winter Individual Contest - D(K)

链接: link.K - Dishonest Driver题意:给定一个长度为NNN的字符串,现在

2022-01-20 14:53:12 569 2

原创 AtCoder Beginner Contest 196(D、E)

链接: link.D - Hanjo题意:给定一个N×MN×MN×M的矩阵,现在有AAA个1×21×21×2的小方块(可以横着用,也可以竖着用),BBB个1×11×11×1的小方块,现在问用这些方块填满矩阵,有多少种放法?思路直接状态压缩+dfs,把整个矩阵看成一维的[0,n×m−1][0,n×m-1][0,n×m−1]放1×11×11×1一直横着放就行,当要放1×21×21×2的小方块时,考虑竖着放和横着放的两种形式,当放完时答案+1+1+1,用二进制bitbitbit记录那些位置被占据了,当当

2022-01-19 19:27:29 618

原创 DP小练(cf,atcoder)

F - Reordering链接: link.题意:给定长度为NNN的只包含小写字母的字符串SSS,现在问有多少个字符串是由SSS的子序列内的字符串排列形成的思路:dp(i,j)dp(i,j)dp(i,j)定义为用了前iii个字母(字母表中的字母,最多为262626个),组成长度为jjj的字符串的数量dp(i,j)=∑k=0min(j,cnt[i])dp(i−1,j−k)×Cjkdp(i,j)=\sum_{k=0}^{min(j,cnt[i])} dp(i-1,j-k)×C_{j}^{k}\qq

2022-01-18 16:38:13 345

原创 SDUT 2022 Winter Team Contest - 1

题目链接:linkA - Carryless Square Root思路:两个数字进行题目说的运算,的出来的长度一定是奇数,因为a⋅a=na·a=na⋅a=n aaa的长度为lenlenlen话,最终结果的长度为2∗len−12*len-12∗len−1,把运算展开就可以的到这个结论,然后从高位到低位,从小数开始试,dfsdfsdfs#include <bits/stdc++.h>using namespace std;const int N = 666;string s;i

2022-01-17 16:18:17 432

原创 SDUT 2022 Winter Individual Contest - C(A、C)

链接: link.C - Crowd Control题意:给定nnn个点mmm条边的无向图,每条边都有一个容量,从起点000到终点n−1n-1n−1的容量,取决于路径上的最小容量,为了使从起点到终点容量最大化,需要删除一些边,以便于从000走到n−1n-1n−1的最小容量是最大的,并把删除的边的编号由小到大输出思路:先套 spfaspfaspfa最大化最小边,并记录下路径,把从000到n−1n-1n−1的路径存下来后,再通过两重循环,或者dfsdfsdfs把不是对应路径上的边,都记下来,然后排序去

2022-01-14 20:38:19 350

原创 SDUT 2022 Winter Individual Contest - A(D)

D - Brackets链接: link题意:给定一个括号序列,现在允许最多反转一段区间,使得(((变成))),)))变成(((,问这段括号序列在最多可反转一次情况下,能否是合法括号序列思路:两重循环枚举需要反转的区间,然后判断反转后,当前这种序列是否合法,针对判断序列合法,有两种判断方法,一种是记忆化搜索,另一种就是区间和+最大最小值判断法两种方法都需要预处理,(((视为111,)))视为−1-1−1记忆化搜索的话,定义f(pos,sum,state)f(pos,sum,state)f(po

2022-01-10 21:40:15 336

原创 2021 Jiangsu Collegiate Programming Contest(C、J)

链接: link.J - Anti-merge题意:给定一个N×MN×MN×M的矩阵,矩阵内相同的数字相邻时有按照列优先行其次的优先级进行合并,现在让你给一些数字贴上标签,若两个相邻数字相同但标签不同时,不会合并,但标签一样,数字一样时,会合并,问最少贴多少种标签,且在标签种类最少时,最少贴多少个标签思路:如果矩阵中不会出现合并现象,即没有相邻数字一样时,直接就输出000即可。如果矩阵中有合并现象,那么 标签种类一定最少一定是111,因为合并现象指挥发生在相邻且相同的数字之间,那么只需要给相同数

2022-01-07 20:51:19 1592

原创 最大正方/矩/菱形

最大正方形题解链接: link.最大矩形题目链接: link 或者挑程白书P360题意:给定H×WH×WH×W个边长为111的正方形瓷砖,111代表损坏,000完好,现在问由完好瓷砖构成的最大长方形的面积思路:题意与最大正方形差不多,但是如果以及依旧定义f(i,j)f(i,j)f(i,j)为以右下角(i,j)(i,j)(i,j)为向左上方扩展形成的最大长方形的面积,那就不好转移方程,因为f(i,j)f(i,j)f(i,j)是不受限于f(i−1,j),f(i-1,j),f(i−1,j),f(i-

2022-01-05 21:39:20 590

原创 [USACO08FEB]Making the Grade G 和 CF714E

Making the Grade G题意:一个农夫需要修路,每一段路的海拔为AiA_iAi​,修改后的海拔为BiB_iBi​,花费为∣Ai−Bi∣|A_i-B_i|∣Ai​−Bi​∣,现在农夫想把A1,A2.....AnA_1,A_2.....A_nA1​,A2​.....An​的海拔改成单调的,问最少花费多少?思路:此题需要先推导一个结论,就是修改完后的序列里的每个数BiB_iBi​一定是原序列AAA中已经存在过的。以把序列改成非严格单调递增的为例,来证明。改成非严格单调递减序列也是同样的证法

2021-12-24 20:39:03 545

原创 AtCoder Beginner Contest 232(E,F补题)

E - Rook Path题意:给定大小为H×WH×WH×W的矩阵,你现在有一个车(在矩阵可以朝着一个方向走任意距离),现在起点为(x1,y1)(x_1,y_1)(x1​,y1​),终点(x2,y2)(x_2,y_2)(x2​,y2​),你现在只可以恰好移动kkk次,问从起点移动到终点的方案数为多少?思路:对于横和纵分别定义一个dpdpdp方程,把一个二维的移动看成两个一维的移动,分别定义为X(i,0/1),Y(i,0/1)X(i,0/1),Y(i,0/1)X(i,0/1),Y(i,0/1)以X(

2021-12-21 19:14:54 885 1

原创 AtCoder Beginner Contest 231(E、F补题)

E - Minimal payments题意:给NNN种面值的钱币,现在需要支付XXX元,现在定义AAA为支付的钞票数,BBB为找钱找回来的钞票数,问A+BA+BA+B最小是多少?思路:直接记忆化搜索,金额较大,所以开mapmapmap定义f(n,x)f(n,x)f(n,x)为前nnn种钞票支付xxx元的情况下,最小的A+BA+BA+B那么此时为了让A+BA+BA+B最小,一定是尽可能用大钞票,所以f(n,x)=f(n−1,x%a[n])+x/a[n]f(n,x)=f(n-1,x \%a[n]

2021-12-16 08:30:00 715

原创 AtCoder Beginner Contest 230(E、F)

E - Fraction Floor Sum题意:求∑i=1n[ni]\sum \limits_{i=1} ^{n}[\frac{n}{i}]i=1∑n​[in​]思路:整除分块板子题#include <bits/stdc++.h>using namespace std;#define ll long longll F(ll n) { ll res = 0; for (ll l = 1, r; l <= n; l = r + 1) { r =

2021-12-06 19:37:30 605

原创 AtCoder Regular Contest 084

Snuke Festiv题意:给定长度为NNN的三个数组 A,B,C,现在让你分别从A,B,C中各选一个数,要保证A中选的数严格小于从B中选的数,从B中选的数要严格小于从C中选的数,即Ai<Bj<CkA_i<B_j<C_kAi​<Bj​<Ck​,问有多少种选法?思路:先枚举每个BjB_jBj​,算出每个BjB_jBj​能搭配多少个CkC_kCk​,这个用二分找即可,然后把这些数记录下来,求一边后缀和sumjsum_jsumj​,然后再枚举每个AiA_iAi​算出有

2021-12-02 11:06:46 303

原创 AtCoder Beginner Contest 229

D - Longest X#include <bits/stdc++.h>using namespace std;const int N = 2e5 + 10;#define ll long longchar s[N];ll sum[N];int len;int k;struct node { int id; int dis;} pos[N];bool check(int x) { for (int i = 1; i + x - 1 <= le

2021-11-30 16:32:35 1353

原创 AtCoder Beginner Contest 228(E、F补题)

E - Integer Sequence Fair题意: P=998244353P=998244353P=998244353输入三个数,M,N,KM,N,KM,N,K 就是需要求MkNmodM^{k^N} modMkNmod PPP思路: 由于数据范围很大 所以需要先处理KNK^NKN,再处理MkNM^{k^N}MkN根据费马小定理 如果gcd(a,p)=1gcd(a,p)=1gcd(a,p)=1那么ap−1≡1a^{p-1}≡1ap−1≡1(modpmod pmodp)在这个题中,由于PPP是素

2021-11-21 14:58:14 724 1

原创 AtCoder Beginner Contest 227

C - ABC conjecture题意:给定一个NNN,现在问有多少个三元组(A,B,C)(A,B,C)(A,B,C),A≤B≤CA≤B≤CA≤B≤C ,ABC≤NABC≤NABC≤N思路:直接暴力枚举,时间复杂度O(N23)O(N^{\frac{2}{3}})O(N32​),枚举A和B然后算出有多少个C#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int s[N];#define ll

2021-11-16 09:23:59 1329

原创 AtCoder Beginner Contest 226(E、F补题)

E - Just one链接: link.题意:NNN个点MMM条无向边,现在给每个边定一个方向,总计2M2^M2M种方案,但现在规定每个点的出度为111,且仅为111(有且仅有一条出边),现在问有多少种方案?思路:要想将无向图定向,是每个点的出度为111,那就需要每个点都有一条出边,此时就可以按照点数和边数的关系来分类讨论。1.对于一个连通图来说 如果点数>>>边数,要么是不连通图(与定义矛盾),要么就是一颗树,无法实现每个点都有出边,因为点数的边数不对应,一定会有一条边没

2021-11-10 19:26:12 416

原创 ACL Contest 1(补题)

A - Reachable Towns题目链接: link.题意:在二维坐标轴给定NNN个点,每个点都可以向x和x和x和

2021-11-01 20:31:21 240 3

原创 AtCoder Beginner Contest 225(补题)

D - Play Train链接: link.题意:给NNN个或者分离的火车头,现在有QQQ次操作,每次操作有333种类型,1.x1.x1.x yyy代表把xxx车的尾部和yyy车的头部连接起来2.x2.x2.x yyy代表把xxx车的尾部和yyy车的头部分离开3.x3.x3.x代表 输出与xxx车连接的所有车,输出个数并从头到尾输出各个车的编号思路:用非路径压缩版并查集就可以解决这个问题,直接按照输入的操作,分别实现并查集的合并、分离,并按照顺序输出并查集元素。#include <b

2021-11-01 19:59:40 504 2

原创 AtCoder Beginner Contest 142(补题)

E - Get Everything链接: link.题意:有NNN把需要解锁的宝箱,编号为1−N1-N1−N,现在有MMM把钥匙,每把钥匙价值aia_iai​元,每把钥匙可以解锁bib_ibi​个宝箱,可以解锁的宝箱种类分别为ci1,ci2....cibic_{i1},c_{i2}....c_{ibi}ci1​,ci2​....cibi​。问你花最少多少钱可以把所有钥匙都解锁思路:宝箱的数量较小,可以用2进制状态压缩来表示每个宝箱持有的状态。例如1号宝箱就是0000000100000001000

2021-10-22 20:53:40 377

原创 AtCoder Regular Contest 128(补题)

D - Neq Neq链接: link.题意:给一个长度为NNN的序列,Ai,A2.....AnA_i,A_2.....A_nAi​,A2​.....An​,现在可以删除一些数,删除的原则是,三个相邻的数,Ax,Ay,AzA_x,A_y,A_zAx​,Ay​,Az​,可以删除AyA_yAy​,问能形成多少种序列,序列不同,只要里面有一个数的下标不同,就算序列不同。思路:f(i)f(i)f(i)代表以第iii个数为结尾的序列方案数那么此时想要求出f(i)f(i)f(i),序列无论是何种情况,都可以

2021-10-20 20:15:46 269

原创 AtCoder Beginner Contest 223(补题)

F - Parenthesis Checking链接: link.题意:给定一个括号字符串,现在有两种操作操作1:给定l,r,交换l,r的字符操作2: 给定l,r,查询这个区间的括号是否合法思路:( 定义为+1,) 定义为-1,对于原串,维护一个前缀和对于查询操作 [l,r] 区间合法的话,这个区间的和必须是0,代表整体匹配,区间的前缀和中的每个值都必须>=0>=0>=0,代表内部每个括号的匹配了。简化下来就是,区间内前缀和的最小值必须>=0,区间和必须=0#in

2021-10-18 19:50:38 387

原创 Codeforces Round #747 (Div. 2) D题

D. The Number of Imposters题目链接: link.题意:给NNN个人,每个人都有可能是好人或者坏人,现在又MMM句话,每句话都是都是i,j,stri,j,stri,j,str的形式就是指第iii个人说jjj号是好人或者坏人。好人说真话,坏人说假话,现在问,在有这些逻辑关系下,坏人最多有多少个。思路:这个题类似于2−sat2-sat2−sat问题,对于一个连通块内,如果你确认一个人的好坏身份,那么此时整个连通块的好坏身份都将通过逻辑关系推断出来,也就是说,对于每个连通块都可以

2021-10-11 19:52:04 336 1

原创 AtCoder Beginner Contest 222(补题)

E - Red and Blue Tree#include <bits/stdc++.h>using namespace std;#define ll long longconst int N = 1e5 + 10;const ll mod = 998244353;typedef pair<int, int> PII;vector<vector<PII> > e;vector<int> sum;ll f[N];int n, m,

2021-10-11 18:22:44 379 2

原创 SDUT 2021 Autumn Team Contest 10th(补题)

C - Justice题目链接: link.题意:给nnn个数,现在每个数都表示为12ai\frac{1}{2^{a_i}}2ai​1​,现在问你能否把nnn个数拆分成2组,每组数的和必须>=>=>=12\frac{1}{2}21​,问能否把nnn个数分成222组满足题意,如果可以,并把划分2组的方案输出,用0和1来代表两个组思路:12i\frac{1}{2^i}2i1​✖12i\frac{1}{2^i}2i1​=12i−1\frac{1}{2^{i-1}}2i−11​,也就是两

2021-09-29 21:25:26 197

原创 SDUT 2021 Autumn Team Contest 9th(补题)

H - Hamming Distance题意:给定两个字符串aaa和bbb,让你输出一个字典序最小的字符串与输入的字符串的汉明距离相同。两个字符串的汉明距离指两个字符串的不同的字符数量。思路:要求字典序最小,那么越前面的字母最好都放aaa,如果放不了aaa,那就放字典序小的字母。贪心的思路从前往后,放越小的字母越好。此时如果两个字符串相同位置的字符一样那么,那么直接放最小字母a即可,因为不影响汉明距离。如果两个字符不相同,那么此时放下的最小字母如果与其中一个字母相同,就以a串对应位置的字母相同,

2021-09-24 21:24:06 192 1

原创 Educational Codeforces Round 114 (Rated for Div. 2)(补题)

D. The Strongest Build题目链接: link.题意:现在给nnn组物品栏,每组物品栏有xxx个物品,每组物品栏里的物品的价值wiw_iwi​是单调递增的,共xxx个物品,你只能从每组物品栏里选出111个物品,最终选出物品价值最大的组合,现在又mmm组物品禁止列表单,这mmm行都描述了,你不能使用把哪些物品组合起来用,在上面这mmm行的限制下,找到最大价值物品的组合,若有多个最大价值物品组合,输出一种即可思路:由于每组物品栏内部的物品从左到右的价值是单调递增的,所以物品的抉择不是

2021-09-22 20:30:30 93

原创 AtCoder Regular Contest 126(补题)

A - Make 10题目链接: link.题意:给A个长度为2的木棍,B个长度为3的木棍,C个长度为4的木棍,通过拼接木棍,最多能拼成多少个长度为10的木棍思路:由于长度为3的木棍要与其他木棍拼接成10的木棍(3322,334),长度3木棍必须是偶数,所以就把长度为3的木棍的数量就当成...

2021-09-22 18:56:00 500 2

原创 AtCoder Beginner Contest 191

C - Digital Graffiti题目链接: link.题意:在一个矩阵中 ‘.’‘.’‘.’代表空,#代表图案,现在矩阵中用#绘制了几个多边形,多边形之间没有相交,矩阵为n⋅mn·mn⋅m的,现在矩阵的中多边形有多少个直边,直边说明没有断开,也没有突起和凹下。思路:我的思路是对于图形的上面下面左边右边都判断一下,即几个上面,几个下面,几个左面,几个右面。对于正面来说,就是没有断开,比较暴力的做法,但是很好理解#include <bits/stdc++.h>using nam

2021-09-17 16:10:40 146

原创 AtCoder Beginner Contest 193(补题)

D - Poker题意:一共有9∗K9*K9∗K张卡片,每个卡片编号从1——9,每个编号的卡片有K,张,现在高桥前四张卡片已经知道,第5张卡片位置,青木也是如此,对于每个人的分数计算公式在下面,cic_ici​是此人拥有编号为iii的数量,现在问高桥获胜的概率。思路:直接暴力枚举高桥第五张牌的所有情况,青木也是如此,记剩下卡牌数位cntcntcnt,那总情况数就是cnt∗(cnt−1)cnt*(cnt-1)cnt∗(cnt−1),也就是计算概率时的分母。分子就是高桥赢的情况数,从1——9所有

2021-09-15 00:30:06 255

原创 AtCoder Beginner Contest 218(补题)

C - Shapes题意:给定两个图,SSS和TTT,’#'代表图案,‘.’‘.’‘.’代表空,整幅图是N✖NN✖NN✖N的大小,现在问你,能否旋转90°和平移的操作(操作数不限),来把S图中的图案,变成T中的图案思路:找到S图和T图中,图案的最左端、右端、上端、下端的坐标,上下左右坐标之外的地方说明都是空地,不用管,此时,此时,把新图(坐标是最左端右端上端下端之中的图),通过旋转,会有4种情况,旋转0,90,180,270,把旋转出来的图,存下来,看T图中是否有上述4种情况之一的图,可以小优

2021-09-13 20:00:12 395

原创 AtCoder Beginner Contest 215(补题)

C - One More aab aba baa题目链接: link.题意:给一个字符串,让你输出由该字符串的字母组成的所有全排列中的第k个全排列是什么?思路:#include <bits/stdc++.h>using namespace std;string s;int k;int a[8];int main() { cin >> s >> k; sort(s.begin(), s.end()); int len = s.si

2021-08-23 09:43:16 327 1

原创 AtCoder Beginner Contest 171(补题)

C - One Quadrillion and One Dalmatians题意:现在1到261到261到26的数字为a到za到za到z,272727到702702702数字为 aa, ab, ac, …, zy, zz,475255,475256为aaaaa, aaaab,现在给你数字nnn,让你输出对应的字符串思路:26个字母,所以转换为26进制,每次取余前,要减去1,把[1,26][1,26][1,26]映射到[0,25][0,25][0,25],然后输出即可#include <b

2021-08-20 16:42:20 212

原创 Codeforces Round #739 (Div. 3)(补题)

D. Make a Power of Two题意: 对于给定的一个数,有两种操作,可以选择任意位置删除这个数,也可以在数的右边加一个数,问操作至少几次,可以使这个数变成2的证次幂思路: 直接提前预处理出来所有的2的整次幂的数,然后用当前数与所有2的证次幂的所有数进行比较,判断操作次数,最后取最小值。当前数与2的整次幂的数的比较,就利用双指针就可以...

2021-08-20 08:58:49 173

原创 AtCoder Beginner Contest 167(补题)

C - Skill Up题意:高桥对于MMM种算法的基础是0,现在有N本书,每本书对这M种算法都有加成,第iii本书,售价CiC_iCi​元,对于算法的提升是Ai,1A_{i,1}Ai,1​Ai,2A_{i,2}Ai,2​Ai,3A_{i,3}Ai,3​…Ai,MA_{i,M}Ai,M​,现在要求使高桥对于M种算法的基础超过X,问最少花多少钱。思路:N和M的数据范围只有12,可以直接暴力dfs搜索,注意加一点剪枝,就可以,这里我写的搜索参数dfs(int uuu, int costcostc

2021-08-19 20:02:34 237

原创 SDUT 2021 Summer Individual Contest - 7(补题)

E - Charles in Charge题意:思路: 先跑一遍最短路求出正常的最短路,然后二分求电车的电池容量,即公路的长度,在二分的处理最短路的时候,本来要把大于电池容量的公路删掉,但不好操作,所以直接在DijkstraDijkstraDijkstra中,对于那些大于电池容量的公路直接不操作,当作没有这条边即可。#include <bits/stdc++.h>using namespace std;#define inf 0x7f7f7f7f3f3f3f3f#define

2021-08-17 08:49:56 140 1

原创 AtCoder Beginner Contest 214(补题)

C - Distribution题意: 每个人都会在ttt这个时间得到一个宝石,每个人都会处理宝石sss时间,所以第iii个人会在tit_iti​时间得到宝石,并在ti+siti+siti+si时间给第i+1i+1i+1个人,第nnn个人会给第111个人,现在问每个人第一次得到宝石的时间是什么时候。思路: 先找第一个得到宝石的人,从这个人开始往后循环找,从第1个得到宝石的人开始,后面的所有人的第一颗宝石要么使 是前一个人给他的,要么使在tit_iti​这个时间得到的,直接在两者之间取最小值。#i

2021-08-16 10:14:21 344

原创 AtCoder Regular Contest 117(练习)

A - God Sequence题意: 让你构造一个数组,由A个正整数,B个负数组成的长度为A+B的数组,数组内部的元素不能重复,不能为0,让你构造思路: 直接构造一个等差数列1,2,3,4…,另一个短的最后一个元素就是长的数组后面那些元素的和。#include <bits/stdc++.h>using namespace std;const int N = 1111;int main() { int a, b; cin >> a >>

2021-08-14 09:33:02 319 1

原创 Connectivity(并查集)

D - Connectivity-abc049题意: 有n个点,k条公路,lll条铁路,公路和铁路都是连接两个点的边,没有重边,只要A和B点能通过公路相通,就说明A和B使公路连接,铁路连接和这个一样,现在问,对于每个点来说,有多少个点是通过铁路和公路与这个点相连通(自己算连接自己)(题意读了半天没读懂,样例都没研究出来 )思路: 其实题目简化问题就是通过公路与当前点相连的点与通过铁路与当前点相连的点的交集。开两种并查集,来记录哪些点是通过公路和铁路与当前点相连,然后开个Map来存交集个数,M

2021-08-12 20:41:26 209 1

原创 AtCoder Regular Contest 124(练习)

A - LR Constraints题意: N张卡片,每个卡片上的数字不超过K,且有K种限制,若cic_ici​是‘L’,则kikiki这个位置必须是数字kik_iki​,且从左往右数这个位置必须是第一次出现kik_iki​这个数字的位置,若cic_ici​是‘R’,则kikiki这个位置必须是数字kik_iki​,且从左往右数这个位置必须是第一出现kik_iki​这个数字的位置,现在问你在这些限制下,有多少种卡牌摆放方案思路: 没有限制的情况下,每个位置都可以放k种卡片,有了限制后,对于指定位置

2021-08-11 19:36:29 383

空空如也

空空如也

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

TA关注的人

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