自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客练习赛13_F-m皇后(思维)

传送门 思路: 先只考虑左右方向,那么其实我们只要把所有皇后按 r 为第一关键字,c 为第二关键 字排序后,扫一遍就知道每个皇后左右受敌的情况。 同理可求竖直方向。 对于对角线的方向,一条对角线是按 r+c 为第一关键字,r 为第二关键字排序; 另一条对角线是按 r-c 为第一关键字,r 为第二关键字排序。 #include<bits/stdc++.h> #define ...

2018-03-21 20:35:23 189

原创 牛客练习赛13_B-幸运数字Ⅱ(dfs枚举)

传送门 思路:dfs枚举所有是幸运数字的情况,那么对于l,r区间,我们只需要从幸运数字的数组从小到大判断即可,特殊的端点考虑下就好。 #include<bits/stdc++.h> #define debug(a) cout << #a << " " << a << endl #define LL long long #defin...

2018-03-21 20:33:33 199

原创 牛客练习赛13_C-幸运数字Ⅲ(思维)

传送门 思路:简单的推理一下,对于正常的情况只要从左到右暴力判断就行。 对于47数字很多杂糅的话,我们只需要判断如果s[i-1]==4&&s[i+1]==7的话 如果s[i]==4且i是偶数且k此时是奇数s[i]变成7; 如果s[i]==7且i是偶数且k此时是奇数s[i]变成4; #include<bits/stdc++.h> #define debu...

2018-03-21 20:29:54 281

原创 牛客练习赛13_E-乌龟跑步(dp)

传送门 思路:dp[i][j][k][dir] 表示第i的字符,第j次操作,能否到达k的位置上。dir是方向 1向右,0向左。 #include<bits/stdc++.h> #define debug(a) cout << #a << " " << a << endl #define LL long long #define u...

2018-03-21 20:24:23 258

原创 Gym 100959L_String Modification(模拟)

传送门 题意:给一个字符串s,每次可以在一个字符的右边加一个与这个字符不同的字符,问是否能变成字符串t。 思路:第一个不相等 || 第一个连续的的个数s #include<bits/stdc++.h> #define debug(a) cout << #a << " " << a << endl #define LL long lo...

2018-03-19 20:55:42 645

原创 Codeforces_652C_Foe Pairs(Multiset)

传送门 题意:给你1-n的一个排列和m组数对,问有多少区间不包含任意一个数对。 思路:用p[]记录位置,multiset维护每对pair的右端点,遍历的时候对于该点对的pair已经不再会受影响,所以删除即可。这里注意要用multiset维护,set的话是不行的,因为无论是multiset还是set如果删除的元素不在里面的话,就会RE。 #include<bits/stdc++.h&gt...

2018-03-19 20:50:29 243

原创 UVA11987_Almost Union-Find(并查集删除操作)

传送门 题意:一共有n个元素的组合1,2,3….n 现在有三个操作 1 p q:把p,q所在的集合合并 2 p q:把p移动到q所在的集合 3 p:输出p所在的集合的元素的个数和所有元素和 思路: 在基础的并查集下可以轻松完成1,3操作,对于2操作,一开始想直接把p移到q集合去,发现一个问题,如果p是这个集合的root,那他的儿子也会跟过去,所有想一个办法,开一个数组id,如果p,q不...

2018-03-19 20:10:23 166

原创 Wannafly挑战赛11_A_B_D

传送门 A.白兔的分身术 思路:看完题目第一反应p=n,k=1,直接交一发。提交过程中思考了一下,显然取p=n,k=1最优。 #include<bits/stdc++.h> #define debug(a) cout << #a << " " << a << endl #define LL long long #define...

2018-03-13 20:34:47 261

原创 Wannafly挑战赛11_D_白兔的字符串(字符串hash)

传送门 思路:字符串hash。对于原串,我们进行Hash,存入unordered_set。在O(n)的时间内就可以将所有的Hash值都算出来。 对于接下来的n串。我们对于每一串我们只需要扫描一边,看Hash值是否在unordered_set中计数即可。 深深感受到unordered_set 和set的区别。 这是set超时!! 对于这两个STL。 map的优点:有序。题目如果要求对...

2018-03-13 20:17:39 227

原创 hdu_4300_Clairewd’s message(字符串hash)

传送门 题意:第一行26个字母代表‘s[0]’对应’a’,s[1]对应‘b’……. 第二行前面是密文(需要根据第一行对应关系翻译),后面是原文,但不知道从哪里开始是原文,现在你需要找到原文并且如果原文比密文少,要补全。 思路:这道题可以用很多方法来解。这里,我们选择一手字符串hash。 字符串hash传送门 #include<bits/stdc++.h> #define de...

2018-03-13 18:53:14 150

原创 字符串hash

Hash可以用进制的思想来理解。 设字符串C=c11_{1}c22_{2}c33_{3}c44_{4}….cmm_{m} 定义哈希函数: H(c)=(c11_{1}bm−1m−1^{m-1}+c22_{2}bm−2m−2^{m-2}+c33_{3}bm−3m−3^{m-3}+…+cmm_{m}b00^{0})%h 其实b是基数,相当于把字符串看成b进制数。 如何得到子串? 首先易知: ...

2018-03-13 13:23:29 358

原创 codeforces_946D_Timetable(分组背包)

传送门 题意:有长度为m的字符串n个,代表n天的课表,1表示这个时间要上课,0表示不要上课,一天在学校时间为第一个1到最后一个1的时间。然后,可以逃k次课,求在学校的最少时间。 思路:预处理出g[i][k]表示第i天逃k节课呆在学校的最少时间。预处理中记录每天1的个数,然后和1出现的下表,然后枚举长度1,取一手最小值。接下来分组背包。 #include<bits/stdc++.h&...

2018-03-08 23:03:01 220

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

传送门 A. Partition 题意:把n个数分为{B},{C},然后求B-C的最大值。 思路:就是求所有数字的绝对值的和。 #include<bits/stdc++.h> #define debug(a) cout << #a << " " << a << endl #define LL long long #define P...

2018-03-08 20:59:29 162

原创 hdu_1712_ACboy needs your help(分组背包)

刚刚接触到分组背包的模型。 这题作为入门题目非常适合。 传送门 分组背包。 一个容量为V的背包,还有若干组物品,每组包含若干物品,这些物品各不相同,而且体积w和价值p各不相同。组内的物品相冲突。求出能在不超过V的情况下尽可能的使价值最大。 题意:n门课,m天时间,完成a[i][j]得到的价值为第i行j列的数字,求最大价值。 思路:分组背包,就是第n门课程,可以做一天,可以做两天...

2018-03-07 20:15:28 189

原创 hdu_5396_Ex_pression(区间DP)

传送门 题意:给你一个n然后是n个数。 然后是n-1个操作符,操作符是插入在两个数字之间的。 问你最后每种不同的组合求和mod1e9+7。 和 hdu_5151 这道题有些相似。 都是以组合数的方式进行处理。 乘法: t=(dp[i][k]*dp[k+1][j])%mod; 加法: t=(dp[i][k]*A[j-k-1]+dp[k+1][j]*A[k-i])%mod; 减法:...

2018-03-06 22:01:10 159

原创 hdu_5151_Sit sit sit(区间DP)

传送门 题意:有n张椅子,n个人,所有人都可以按照任意顺序坐在任意一张椅子上,但是满足这三种情况的椅子不会有人坐: 1.椅子上有左右两张相邻的椅子。 2.左右相邻的椅子不是空的。 3.左右相邻的椅子颜色不同。 如果当前学生找不到椅子坐下,他将会离开。 问一共有几种坐法? 思路:区间dp+组合数知识。 dp[i][j]代表从i-j的总方法数。 枚举k为最后坐下的同学。 假如k是头 ...

2018-03-06 19:47:54 254

原创 hdu_5115_Dire Wolf(区间DP)

传送门 题意:有一排狼,每只狼有一个伤害A,还有一个伤害B。每一狼的伤害为A加上他相邻两只狼的B(类似buff)。现在问如何杀掉一排狼且受到的伤害最小。 思路:非常裸的区间dp,dp[i][j]为消灭i到j只狼的最小代价,枚举k作为最后一只被杀死的狼。 可列出转移方程:dp[i][j]=min(dp[i][j],dp[i][k-1]+dp[k+1][j]+a[k]+b[j+1]+b[i-1]...

2018-03-04 22:36:41 242

原创 hdu_5693_D Game(区间DP)

D Game 思路: 1.f[i][j]代表从i到j的区间是否可以删除,能删除就是1。 2.只需要考虑2个数字的情况和三个数字的。因为任何一个大于等于2的数可以由这两种情况构成。 3.dp[j]表示从 1-j最多能删掉最多多少个。 #include<bits/stdc++.h> using namespace std; const int N = 307; int n,m...

2018-03-04 21:02:14 146

空空如也

空空如也

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

TA关注的人

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