- 博客(19)
- 收藏
- 关注
原创 LeetCode 168. Excel Sheet Column Title
class Solution { public: string convertToTitle(int n) { string res = ""; string table[] ={"Z","A","B","C","D","E&qu
2018-10-07 11:11:25
420
原创 LeetCode 910. Smallest Range II
最小差值 II 这题感觉还是挺考验思维的。 首先可以想到,差值的最大值就是A中最大和最小值之间的差,经过我们优化后的结果肯定是小于等于这个值的。 然后我们再可以想到,我们优化的话对于A中最大值肯定是减去K,对A中最小值肯定是加上K。首先我们对A排序,然后再推广的话就可以想到:若 A[i]是做减操作,A[i]后的元素肯定也是做减操作,这样可以保证最小值的范围不会变大。同理若A[i]是做加操作,A[i...
2018-10-06 15:03:06
455
原创 LeetCode 303. Range Sum Query - Immutable
class NumArray { public: vector<int> dp; NumArray(vector<int> nums) { dp.clear(); int n = nums.size(); if(n==0) return; dp.push_back(nums[0]); ...
2018-09-16 23:13:55
227
原创 LeetCode 198. House Robber
class Solution { public: int rob(vector<int>& nums) { vector<int> dp; int n = nums.size(); dp.push_back(0); int ans = 0; for(int i=0;i<n;...
2018-09-09 22:09:55
220
原创 LeetCode 746. Min Cost Climbing Stairs
递推公式:dp[i]=min(dp[i−1]+cost[i],dp[i−2]+cost[i])dp[i]=min(dp[i−1]+cost[i],dp[i−2]+cost[i])dp[i] = min(dp[i-1]+cost[i] , dp[i-2] + cost[i]) class Solution { public: int minCostClimbingStairs(vector...
2018-09-07 22:31:37
258
原创 LeetCode 70. Climbing Stairs
递推公式:dp[i]=dp[i−1]+dp[i−2];dp[0]=1,dp[1]=1dp[i]=dp[i−1]+dp[i−2];dp[0]=1,dp[1]=1dp[i] = dp[i-1]+dp[i-2];dp[0]=1,dp[1]=1 class Solution { public: int climbStairs(int n) { vector<int>...
2018-09-07 22:01:00
203
原创 LeetCode 53. Maximum Subarray
最大连续子序列和 class Solution { public: int maxSubArray(vector<int>& nums) { int l = nums.size(); vector<int> dp; dp.push_back(max(0,nums[0])); int ans...
2018-09-05 23:00:49
199
原创 LeetCode 50. Pow(x, n)
快速幂 本题要求x的n次方,n很大,所以O(n)的解法肯定不行,只能考虑O(logn)复杂度的解法。 我们可以想到,若nnn为偶数,xn=(x2)n/2xn=(x2)n/2x^n=(x^2)^{n/2},若nnn为奇数,则xn=x⋅x(n−1)/2xn=x·x(n−1)/2x^n=x·x^{(n-1)/2},由此可以想到由递归方式来解决。 代码: class Solution { pu...
2018-07-07 01:00:07
273
原创 PAT 甲级 1030 Travel Plan
这题和1018很像,换了写法,先找最短路再dfs,写了下dijkstra算法,有点生疏。 快复试了,加油! #include &amp;lt;cstdio&amp;gt; #include &amp;lt;cstring&amp;gt; #include &amp;lt;algorithm&amp;gt; #include &amp;lt;cmath&amp;gt; #
2018-03-09 23:15:12
467
原创 PAT 甲级 1018 Public Bike Management
DFS+记忆化搜索剪枝 没试过不剪枝会不会超时。 注意点就是没有返回修改这个说法 10 4 4 5 3 5 5 10 0 1 1 0 2 1 1 3 1 2 3 1 3 4 1 这组数据出来的结果是 0 0->2->3->4 5 别的应该没什么问题…判断语句写的好搓 更新 不剪枝直接爆搜也不会超时… #include <iostream>...
2018-02-28 23:29:54
351
原创 PAT 甲级 1017 Queueing at Bank
模拟 以前老师说,模拟是最考验代码水平的(笑),确实啊。 这题和前面一题有点像,换了个不同的做法,模拟了每一秒时的情况,等待时间就是每秒钟排队的人数。 注意点就是是否服务取决于客户到来的时间,和当前时间是否超过17点没关系。 回顾了优先队列。 #include <iostream> #include <cstdio> #include <algorithm&...
2018-02-23 20:31:22
342
原创 PAT 甲级 1016 Phone Bills
这题我只能过0号测试点和3号测试点…也不知道哪里错了…很僵 思路: 将每条记录按照名字保存下来,即生成个人记录,时间全部化成分钟,分别保存在online和offline两个数组中。对两个数组分别排序。对online数组的每一个元素,找到第一个比它大的offline时间,然后从online数组中找到最大的比该offline小的时间,然后计算话费。可能该想法有问题…我再想想反例吧…看到的大佬如果发...
2018-02-21 02:01:27
732
1
原创 PAT 甲级 1007 Maximum Subsequence Sum
最大连续子序列和 题目分为两步,第一步求最大和,第二步求该子序列的起始点和结束点。 首先看第一步 求子序列的最大和 定义一个sum,表示从头开始到当前位置序列之和,若sum&lt;0,则将sum置为0. 这里有dp的思想,即无需管sum之前是怎么来的,只要管当前序列的值与sum的和,从而推出下一个sum。 公式为:...
2018-02-10 23:19:22
278
原创 HDU 2067 小兔的棋盘
小兔的棋盘 递推。 因为不能越过对角线,而对角线上的子路径数目可以由对角线上下两边相加而得,因此在从对角线出发的某子路径要减去对角线另一边的路径数目。 要用长整型。 import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generate
2018-01-27 23:52:12
297
原创 CSU 1513 Kick the ball!
DFS 数据量很小 直接枚举所有情况 注意下判断比赛结束时的条件 如果比赛已经结束但是分数未达到要求时 要停止搜索(坑) 当比赛已经结束且分数达到要求时 将当前状态的概率加上 #include #include #include #include #include using namespace std; double a[7],b[7]; int x,y; double ans;
2015-04-16 23:59:21
799
原创 ZOJ 3861 Valid Pattern Lock
DFS 搜索时带着方向一起 在碰到已经走过的点时 不能继续16个方向搜索 只能按照原来的方向搜下一个点 不能走的点标记为0 能走的点标记为1 走过的点标记为2 写的好搓啊(笑) #include #include #include #include using namespace std; int T,n; struct node { int num[77]={0};
2015-04-14 22:45:06
512
原创 HDU 3183 A Magic Lamp
栈#include #include #include #include #include #include using namespace std; stack st; char ss[1001]; char ans[1001]; int i,j,k,l; int n; int main() { while(~scanf("%s",ss)) { while(
2014-08-07 17:12:32
381
原创 HDU 1754 I Hate It
#include #include #include using namespace std; struct P { int max; int l; int r; int val; }; P ss[1000010]; int ma; void build(int l,int r,int x) { ss[x].l=l;
2014-08-06 01:38:43
373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅