- 博客(12)
- 收藏
- 关注
原创 【Leetcode 10】Regular Expression Matching
题意:给定一个串s,再给定一个正则表达式 p 问 p能不能生成s样例中较难理解的的是 isMatch("ab", ".*") → true这可以等价于 ab和 .. 这样就好理解了。思路:动态规划先将p做下预处理,变成两个数组,第一个数组是字符,第二个数组标记对应的字符是否可以出现多次。然后dp[i][j] 表示到s串到 i的位置,p串到j 是否能匹配。有3种转
2017-05-22 16:46:24
383
原创 【Leetcode 6】 ZigZag Conversion
题意:给定一个字符串,按照N字型的写法吧字符串重新排列,然后按从上到下,从左到右 输出新的字符串。(下面是例子)"PAYPALISHIRING"P A H NA P L S I I GY I R答案:"PAHNAPLSIIGYIR"思路:开一个动态数组,对于一个字符只要知道他现在要放在第几行就可以了。不需要知道具体坐标,因为最后空格位置
2017-05-22 16:07:10
318
原创 【Leetcode 4】Median of Two Sorted Arrays
题意:给定两个有序的数组,求出中位数。思路:按照求解第k大算法的思想。具体如下:假设有两个数组 A,B 现要求两数组中所有数字的第k大,那么我们可以比较 A[k/2]和B[k/2] 假设 A[k/2]注意:1 注意数组边界2总数为偶数时要注意判断class Solution {public: double getkth(vector A, vector B,int
2017-05-01 16:31:57
334
原创 【Leetcode 3】Longest Substring Without Repeating Characters
题意:给定一个字符串,求出最长的子串,这个子串中要求不能有相同的字符。思路:hash的思想,开个一个数组记下前一个相同字符的位置,然后在遍历过程中记下最大值(相当于往前能延伸的最前面的位置),即可求解答案。class Solution {public: int lengthOfLongestSubstring(string s) { int pos[300];
2017-05-01 11:24:51
301
原创 HDU 5406 CRB and Apple (2015 Multi-University Training Contest 10)
思路:一、直接建图跑最小费用最大流,现场比的时候被卡了SPFA了。SPFA 要吧队列改成栈才能过,具体构图如下:每个点拆成2个点(1,-1) (前面表示流量,后面表示费用),然后吃完a能再吃b的话就连 一条a->b(1,0),每个点连向汇点(1,0),源点流向一个中间点 ss (2,0) 表示2个人走,ss流向每个人(1,0)。二、建图图上进行dp ,dp[i][j]表示表示两
2015-08-21 10:51:53
1295
原创 HDU5380 Travel with candy
思路:保持油箱的油一直是满的,到达每个城市之后,先将到达这个城市的花费减掉,这些消耗掉的应该是价格最低的,对于油箱中的油的价格如果比当前城市买入的价格更高的话就直接退出油箱(直接以购买的价格卖出 (这里的购买价格是会改变的) ),对于油箱中的油如果价格比当前城市卖出的价格低的话,那么可以将这些油的价格改成当前城市卖出的价格(可以想象成在当前城市全部卖出,然后以卖出的价格全部买回来),然后在这个城市
2015-08-14 23:07:49
849
原创 HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
题意:给定一个环形字符串,让他把它分成k份,使得最大的字典序 最小。思路:二分答案,首先很明显答案所有可能是 n*n种 排序可以先求出最长公共前缀,这样比较就只需要比较公共前缀的下一位就能比较出两种答案的字典序大小,这里公共前缀我用 (2*n)*(2*n) DP 求出 。(也可用后缀数组)。接下来就是判断了: 这里二分出来的答案就是字典序的上界,(对于没一个位置作为起点,长度越长字典
2014-08-03 15:04:33
535
原创 Codeforces 407C Codeforces Round #239 (Div. 1)C
题意:给出一个起始数组,有m个操作,每个操作能给 [l,r] 区间上的元素加上一个值 li ≤ j ≤ ri。思路:每次 操作 在 l的位置上 对应的位置加上 C[k][k] ,C[k][k-1]......C[k][0]在最后统计的时候在此次操作中 l+1 的元素加的值 C[k+1][k]=C[k][k]+C[k][k-1] l+2
2014-03-30 23:01:22
1049
原创 Codeforces 405E Codeforces Round #238 (Div. 2)E
题意:如上图所示,给定一个连通的无向图,每条边长度为1,把他的边划分成若干个长度为2的路径。思路:若边的条数为奇数则不能划分。偶数则一定存在解。 1.对于一个点v,首先将与他相邻且还未被标记的边找出{u|(u,v)未被标记}。并将这些边标记。 2.对这些点递归进行找扩展的点,若能找到拓展的点w 则 输出 v u w,若不能找到,则将这些
2014-03-25 15:20:08
746
原创 HDU 4739 Zhuge Liang's Mines (2013 ACM/ICPC Asia Regional Hangzhou Online)
//由于构成的正方形的边要平行于坐标轴 当点数为25时正方形最多为24个 而题目n #include#include#include#include#include#define max(x,y) ((x)>(y)?(x):(y))using namespace std;struct Tpoint{ int x, y; vo
2013-09-15 22:42:56
753
原创 Problem 1612 Hero's gcd
题目大意就是要求下面的G:G=1;for(i=1;i<N;i++) for(j=i+1;j<=N;j++) G*=GCD(i,j);/* Here GCD() is a function that finds the greatest common divisor of the two input numbers */思路:首先N最大为20000
2013-05-13 12:53:08
623
原创 ZOJ Problem Set - 3715 Kindergarten Election
思路: 枚举当选时候的票数x。 则如果其他人所得的票数大于x则需要把他减少到x-1,减少的时候注意要选择需要糖果最少的。如果每人减少下来的加到1号上所得的票数已经超过x则该方案不可行。如果小于x则从全体中选出最小的 填满x。 要注意1号要把手中的票投给任何一个,所以的保证其他人中至少有一个得票数小于x-1.代码:#include#include#include#include
2013-05-11 22:41:15
2317
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人