自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不忘初心

方得始终

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

原创 CodeForces 873B Balanced Substring(前缀和+思维)

题目链接:点击打开链接题意:给出的字符串由字符'0'和字符'1'组成,当一段区间[l,r]内的'0'和'1'的个数相同,就称为平衡子串,求最长的平衡子串。思路:若利用前缀和记录0和1的个数(个数和,不是对应值的和),再去两层枚举,复杂度为O(n^2),会超时,所以要想出O(n)的算法,还是利用前缀和(值的和),'0'对应的值为-1,'1'对应的值为1,那么当一段前缀的和与另一段子前缀的和相

2017-10-31 19:03:22 489

原创 CodeForces 808A Lucky Year(思维)

题目链接:点击打开链接思路:无敌水思维题。// CodeForces 808A Lucky Year 运行/限制:31ms/1000ms#include #include #include #include #include using namespace std;int main(){ int num; while (scanf("%d", &num) != EOF)

2017-10-31 14:41:52 596

原创 CodeForces 500C New Year Book Reading(贪心+思维)

题目链接:点击打开链接题意:一个人要读n本书,书的重量为wi,要读m天,每天读1本,他每次把位于要看的书上面的书搬开,拿出要看的书,再把上面的书放回去,看完以后把书放到最上面,问根据他的阅读顺序怎样初始化书的排列能使他搬书的总重量最小,求出这个最小重量。思路:对于要顺序阅读的两本书a、b,我们模拟一下可以知道,当把a放上面,搬动的总重量为w[a],当把b放上面,搬动的总重量为w[a]

2017-10-31 11:00:16 459

原创 HDU 3613 Best Reward(KMP+思维||manacher算法)

题目链接:点击打开链接题意:26个小写英文字母都有一个价值,给你一个字符串,将该字符串切成左右两半,对于每一半,如果是回文串,就获得该子串的字母价值之和,否则该子串的价值为0。求出将字符串切成两半后能够获得的最大价值。思路一:KMP+思维。思路二:manacher算法(马拉车算法)具体思路明天写......// HDU 3613 Best Reward 运行/限制:93ms/1

2017-10-29 19:15:45 365

原创 HDU 1358 Period(KMP)

题目链接:点击打开链接思路:KMP水题,Next函数的应用。求字符串的每个前缀是否是周期串,是的话就输出循环节长度和循环次数。此题注意的是,不能优化求Next部分。// HDU 1358 Period 运行/限制:124ms/1000ms#include #include #include using namespace std;char s[1000005];int Next

2017-10-28 17:04:36 297

原创 HDU 1867 A + B for you again(KMP)

题目链接:点击打开链接思路:KMP水题。// HDU 1876 A + B for you again 运行/限制:46ms/1000ms#include #include #include using namespace std;char s[100005], p[100005];int Next[100005];void getNext(char s[], int n)

2017-10-28 15:43:48 244

原创 POJ 3187 Backward Digit Sums(next_permutation()+ 组合数)

题目链接:点击打开链接思路:超级大水题。暴力的方法是,每次生成的排列,模拟出最后的和。稍微加些思维可以想到,当把第一行n个数加的次数求出来(得到最后的和是自顶向下,求次数的过程可以采用逆向思维,自底向上),会发现对应杨辉三角的第n行(从1计数),所以先打表预处理,然后枚举所有的排列,直接用这个表计算结果。#include #include #include #include usi

2017-10-27 15:20:38 295

原创 CodeForces 729D Sea Battle(思维题)

题目链接:点击打开链接题意:n个格子,这里面包含a条船,每条船占b个格子,船之间不能重复占用格子,而且不知道船的具体位置。之前射击了k次,每次射中一个格子,但都没有打中船。 给出长度为n的字符串,0表示未知位置,1表示被射击过的格子,问要保证至少射中一条船的话,最少需要再射击几次,并输出这些位置编号(多种位置方案的情况下输出一种即可)?思路:思维题,就是要想出一种最少射击方案,无论船位

2017-10-24 14:40:41 425

原创 Wannafly挑战赛1 MMset2(虚树+树的直径)

题目链接:点击打开链接思路:虚树直径除以2,向上取整。不会证明的话,仔细思考、举几个sample可以YY出来。通过这个题学了几个新东西:1.虚树所谓虚树,其实就是把询问中需要用到的点建到另一棵树上,对于一些问题可以降低复杂度。比如我们询问一条链上的两个端点,直接做dfs的复杂度是O(N)的,但是对于虚树,这两个端点可以直接相连,它们之间的边记录了原本整条链上的信息,于是复杂度变成了

2017-10-17 16:42:53 585

原创 Wannafly模拟赛3 监视任务(贪心+线段树)

题目链接:点击打开链接思路:把所有约束按照右端点排序。这样每一个前面的约束区间[l1,r1],与后面的一个约束区间[l2,r2]的交,一定为[max(l1 ,l2 ),r1]。对于排序后的区间依次满足约束,假设当前枚举到的约束还没有满足,就不断把对应区间中最右端的0改为1,这些过程可以用线段树维护来完成。时间复杂度O((n + m)logn)。// 监视任务 运行/限制:898ms/200

2017-10-14 22:42:17 347

原创 Wannafly模拟赛3 贝伦卡斯泰露(搜索+剪枝)

题目链接:点击打开链接思路:搜索+剪枝// 贝伦卡斯泰露 运行/限制:3ms/1000ms#include #include #include using namespace std;int n;int num[45], s1[45], s2[45];//s1表示序列1,s2为序列2bool dfs(int cnt1, int cnt2, int dep) { if (de

2017-10-14 18:14:47 547 1

原创 Wannafly挑战赛1 Xorto(前缀异或+思维)

题目链接:点击打开链接思路:开始没理解题意啥意思,两个不相交区间的异或和,其实就是两个区间的的数一块做异或,两个区间的异或和为0,也就是两个区间的异或和相等。联想到了前缀和,可以预处理一下区间前缀异或,这样每个区间的异或和就能O(1)的复杂度求出,剩下的就是不相交非空区间的选择问题了,想让区间不相交,可以取一个界限位置,区间在界限左右取,具体实现为枚举右区间的左边界的前一个位置,也就是左区间的

2017-10-14 11:14:45 613

原创 Wannafly挑战赛1 Treepath(树形DP,思维)

题目链接:点击打开链接思路:除了树形DP,自己没想到其他思路,直接就写的DP......开的数组形式为dp[n][3],对于当前父节点,dp[x][0]、dp[x][1]表示已经遍历过的子树中,从该父节点出发到子树节点的路径长度为奇、偶的路径条数;dp[x][2]表示以该父节点为树根的树,满足条件的情况总数。dp[x][2]可以不开,更节省空间,直接用一个变量存储最后的结果即可。具体状态转

2017-10-14 09:40:13 1164

原创 Wannafly模拟赛3 绝对半径2051(离散化+尺取法)

思路:题目求的为最大的连续相同数字的长度,也就是说,若把相同数字分到一组,组间没有太大联系,联系只发生在组内数字的相对位置上,那么就把每组数字的位置存储下来分别处理,因为数字最大可以到10^9,数组开不下,但n最大只有10^5,所以可以把这些数字映射到10^5内。具体处理每组数字时,可以采用尺取法,也可以理解为贪心求解,对于每个le,rig在条件限制内最大可能的右移使区间最大。// 绝对半径2

2017-10-10 20:06:14 440

原创 Wannafly模拟赛3 生物课程

题目链接:点击打开链接思路:水题,按照三种无向图的结构特点判断,具体为判断节点度数:X有一个4度节点,其他的节点最多为2度;Y有一个3度节点,其他的节点最多为2度;I的节点度数最多为2度。还可以看出另一个约束条件为:图是连通的,加上没有重边和自环的限制,其实就是说明三种图均为树形结构。// 生物课程2 运行/限制:27ms/1000ms#include #include #inclu

2017-10-10 12:02:58 298

原创 Wannafly模拟赛3 反蝴蝶效应

题目链接:点击打开链接思路:水题,答案为max{ Ai + i },i从0开始。#include #include #include #include using namespace std;int main(){ int n, t, re; while (scanf("%d", &n) != EOF) { re = -1; for (int i = 0; i < n

2017-10-10 10:09:02 523

空空如也

空空如也

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

TA关注的人

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