自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一道题

题目描述: 有的字符串是相似的,比如”AABBBC”和”DDXXXZ”,或者”ABAB”和”BABA”。我们定义 这种相似为:如果可以找到一个字符间的一对一映射,将一个串转化为另一个串,那么我们就 认为这两个字符串是相似的。比如第一个例子中,{A->D, B->X, C->Z}就是一个能满足条件的 映射,再比如AABB 和BBCC 是相似的,但是AABB 和AAAA 不是相似的。 现在有N

2017-09-18 21:17:31 434

原创 比赛组队(百度2017秋招真题)

题目点我数据不大直接dfs暴搜,但是注意一定要把最大价值初始化成负无穷而非0!!!如果初始化为0在权值全是负数的情况下会错。#include <iostream>#include <string>#include <vector>#include <queue>#include <stack>#include <unordered_map>#include <unordered_map>

2017-09-10 20:03:41 561

原创 头条校招

题目点我 时间限制:1秒 空间限制:32768K 头条的2017校招开始了!为了这次校招,我们组织了一个规模宏大的出题团队,每个出题人都出了一些有趣的题目,而我们现在想把这些题目组合成若干场考试出来,在选题之前,我们对题目进行了盲审,并定出了每道题的难度系统。一场考试包含3道开放性题目,假设他们的难度从小到大分别为a,b,c,我们希望这3道题能满足下列条件: a<=b<=c b-a<=10

2017-09-08 23:06:33 400

原创 hihocoder 1519 : 逃离迷宫II

http://hihocoder.com/problemset/problem/1519?sid=1167472要求拐弯最小次数,并且只有碰到墙或者碰到地图边界才能拐弯。 bfs,每次入队的点是当前点往各方向一条道走到黑时候的点。 注意这种情况: 5 5 S#… ….. ..T.. ….. …..判断到没到终点要每走一步就判断,否则会误判上面的情况。#include <iostrea

2017-09-07 22:14:46 247

原创 hiho一下 第166周 逃离迷宫

http://hihocoder.com/contest/hiho166/problem/1用x, y, key描述状态,key二进制表示的第i为为1时表示已经拥有了第i把钥匙。不知道为啥只过了70/100,TLE了#include <iostream>#include <string>#include <vector>#include <queue>#include <unordered_

2017-09-07 21:26:36 409

原创 网易内推笔试题

题目点我 小易喜欢的数列: 小易非常喜欢拥有以下性质的数列: 1、数列的长度为n 2、数列中的每个数都在1到k之间(包括1和k) 3、对于位置相邻的两个数A和B(A在B前),都满足(A <= B)或(A mod B != 0)(满足其一即可) 例如,当n = 4, k = 7 那么{1,7,7,2},它的长度是4,所有数字也在1到7范围内,并且满足第三条性质,所以小易是喜欢这个数列的

2017-08-13 16:38:35 1642 1

原创 机器学习基石 作业4 带Regularizer和Cross Validation的线性回归分类器

#!/usr/bin/env python# -*- coding: utf-8 -*-"""__title__ = 'main.py'__author__ = 'w1d2s'__mtime__ = '2015/10/30'"""from numpy import *from RidgeReg import *from Validation import *import sys

2015-10-30 21:09:58 819

原创 机器学习基石 作业3 Logistic回归/线性回归/特征转换

logistic回归的训练数据和测试数据:https://d396qusza40orc.cloudfront.net/ntumlone%2Fhw3%2Fhw3_train.dat https://d396qusza40orc.cloudfront.net/ntumlone%2Fhw3%2Fhw3_test.dat#!/usr/bin/env python# -*- coding: utf

2015-10-22 21:39:04 838

原创 机器学习基石 作业2 实现1维和多维Decision Stump

实现1维和多维的Decision Stump多维训练数据:https://d396qusza40orc.cloudfront.net/ntumlone%2Fhw2%2Fhw2_train.dat 多维测试数据: https://d396qusza40orc.cloudfront.net/ntumlone%2Fhw2%2Fhw2_test.dat #!/usr/bin/env pyt

2015-10-10 16:53:23 1497

原创 机器学习基石 作业1 实现PLA和Pocket算法

使用numpy计算一个向量自加的时候遇到了奇怪的bug,W += X会改变另一个向量W_p的值,而W = W + X却没这个问题,无法理解。#!/usr/bin/env python# -*- coding: utf-8 -*-"""__title__ = 'PLA and Pocket Algorithm'__author__ = 'w1d2s'__mtime__ = '2015/

2015-10-06 16:02:27 4963 3

原创 百练 4103 踩方格

题目点我 好像是某一年微软编程之美的题目,其实有数学做法:令F(n)F(n)表示走n步的方法总数,则可以得到递推式 F(n)=F(n−1)+2∗∑k=1n−2F(k)F(n) = F(n-1) + 2*\sum_{k = 1}^{n-2} F(k) 以及两个边界条件 F(1)=3,F(2)=7F(1) = 3,F(2) = 7 每次考虑上一步方向是向北走的情况,从接下来这一步开始又成为了完

2015-08-24 18:06:44 1493 3

原创 POJ 2248 & ZOJ 1937 Addition Chains

题目点我 或 点我 题目大意:给出数字nn,定义它的加法链为: • a0=1a_0 = 1 • am=na_m = n • a0<a1<a2<...<am−1<ama_0 < a_1 < a_2 < ... < a_{m-1} < a_m • 对于每个k(1≤k≤m)k (1 \le k \le m) 存在两个整数 (不一定不同)i i 和j(0≤i,j≤k−1) j

2015-08-22 16:14:56 472

原创 hihocoder 1110 正则表达式

题目点我 动态规划,按照题目中正则表达式的递归定义递归地判断,并记录子问题的解。 dp[l][r]dp[l][r]记录从ll到rr这一段是不是正则表达式。#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxn 105int dp[maxn][maxn];char s[maxn];int check(int

2015-08-21 19:04:17 453

原创 POJ 1564 Sum It Up

题目点我 简单的深度优先搜索,有一点判断重复的小技巧。 没加剪枝也16ms水过,等打球回来看看有哪能优化的。#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxn 15int t, n, nTotalSum;int nNum[maxn], nPath[maxn];bool bUsed[maxn];boo

2015-08-15 16:23:08 312

原创 POJ 2362 Square

题目点我 和POJ 1011 Sticks几乎一样的题目,深搜+剪枝。尤其是记录上次使用木棍序号的剪枝,非常强力。#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxn 25int L, N, M, nTotalLen, nLastUsed;int nStickLen[maxn];bool bUsed[m

2015-08-14 18:34:52 297

原创 nyoj 92 图像有用区域

题目点我 边界外加一圈从这一圈上某一点开始广搜,可以不漏掉每个边界上的像素。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <queue>using namespace std;#define maxw 1500#define maxh 1000int map[maxh][maxw];int w, h

2015-08-13 18:06:04 318

原创 POJ 1979 Red and Black

题目点我 水题。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;#define maxn 25char map[maxn][maxn];int cnt, w, h;void dfs(int x, int y){ if(map[y][x

2015-08-13 15:18:26 307

原创 POJ 1011 Sticks 经典的dfs+剪枝

题目点我 非常经典的搜索题目。 题目描述:乔治拿来一组等长的棍子,将它们随机地裁断(截断后的小段称为木棒),使得每一节木棒的长度都不超过50个长度单位。然后他又想把这些木棒恢复到为裁截前的状态,但忘记了棍子的初始长度。 请你设计一个程序,帮助乔治计算棍子的可能最小长度。每一节木棒的长度都用大于零的整数表示。基本思路是从木棒中最长长度max{Li}max\{L_i\}到总长度的一半totalLe

2015-08-10 14:42:09 427

原创 POJ 3278 Catch that cow

题目点我 简单的bfs,但是要剪枝。结果在剪枝数字的问题上RE了一万次,腿都软了。#include <cstdio>#include <stdlib.h>#include <string.h>#include <queue>#include <vector>using namespace std;#define maxn 200005int step[maxn];char vis[m

2015-08-08 16:21:04 315

原创 nyoj 1015 二分图判断

题目点我 给出一个图,判断他是不是二分图。即能否将图的所有顶点分为两个集合,使得每条边的两个端点都属于不同集合。 做法是用广度优先搜索(BFS)。下面约定每个顶点的三个状态:白色为没有考虑过的顶点,灰色为等待处理(队列中)的顶点,黑色为已经处理过(已经弹出队列)的顶点。 每次拓展队列顶端的顶点vv,对于vv的每个后继uu,如果uu是白色的,将其划分到与vv不同的集合当中;如果uu是灰色或黑色,

2015-08-07 14:59:31 584

原创 hdu 1080 Human Gene Functions

题目点我 LCS变种#include <stdio.h>#include <stdlib.h>#include <string.h>#define inf 0x3f3f3f3f#define len 105char a[len], b[len];int dp[len][len], mat[len][len];int Max(int a, int b){ return a > b

2015-07-30 15:57:13 287

原创 hdu 1506/poj 2559 Largest Rectangle in a Histogram

题目点我 傻B题目wa了半天,最后发现是因为中间计算结果太大,需要强制转换long long。 O(n2)O(n^2)做法会超时,用两个数组记录一个矩形向左和向右有多少个连续的不比他低的矩形。#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;#de

2015-07-28 19:55:03 328

原创 两道水题

POJ 1088 滑雪 一开始行列搞反了 WA了一次#include <stdio.h>#include <stdlib.h>#include <string.h>#define inf 0x3f3f3f3f#define maxn 205int dp[maxn][maxn], dir[2] = {-1, 1};int map[maxn][maxn];int max(int a, i

2015-07-25 15:15:03 289

原创 POJ 1018 Communication System

题目点我 这道题有很多做法,贪心和搜索啥的都可以, 这里写动态规划的做法。 题目大意是说有一个通信系统,需要nn个设备,每个设备从mim_i个厂家中选择,每个厂家的设备有带宽bwbw和价格pp两个指标。最终选择完nn个设备后,令BB等于他们当中的带宽最小值,PP为他们价格总和,问最大的BP\frac{B}{P}值是多少。 如果定义状态dp[k]dp[k]为选择完第kk个设备后BP\frac{B

2015-07-24 16:05:01 343

原创 UVA 357 Let me count the ways

题目点我 本来是道简单的题目,主要想写下优化的过程。 给你无限多面值为1,5,10,25,50的硬币,问你用他们组成价值为MM的组合方法数是多少。用Fk(v)F_k(v)表示用前kk种硬币组成vv的方法总数,可以写出递推方程: Fk(v)=∑i=0i∗coin[k]≤vFk−1(v−i∗coin[k])F_k(v)=\sum_{i=0}^{i*coin[k]\le v}F_{k-1}(v-i*

2015-07-23 14:51:54 536

原创 NOI 97 积木游戏

题目点我 lrj黑书上讲解动态规划的例题,通过多阶段决策思想来建立状态转移方程。 状态定义dp(i,a,b,k)dp(i, a, b, k)表示当前已经有ii堆,已经考虑过aa个方块(由于考虑的顺序,最后一次考虑的方块编号为aa),当前堆最顶上的方块编号为bb,并且这个方块的摆放方式为k(k=0,1,2k =0, 1, 2),由此状态(i,a,b,k)(i,a,b,k)到决策结束可以达到的高度最

2015-07-21 19:37:25 918

原创 POJ 1191 棋盘分割

题目点我 经典的动态规划题目,首先将标准差公式变形一下: σ=∑ni=1(xi−x¯)2n−−−−−−−−−−−−√⇒n(σ2+x¯2)=∑i=1nx2i\sigma = \sqrt{\frac{\sum_{i=1}^n(x_i - \bar x)^2}{n}}\,\Rightarrow\,n(\sigma^2+\bar x^2) = \sum_{i=1}^nx_i^2 由于x¯\bar x是

2015-07-20 15:53:51 370

原创 HDU 2955 01背包

题目点我 题目大意:给了NN个银行的钱MiM_i和被抓的概率PiP_i,以及一个可以接受的被抓概率PP,要求选择一些银行,使得最终被抓概率低于PP的同时,总收益最大。 思路:01背包问题,一开始想把概率取对数做背包容量,发现行不通。要用收益当背包容量,用安全概率当作背包价值。状态转移方程如下: dp[i][M]=max(dp[i−1][M],dp[i−1][M−Mi]⋅(1−Pi))dp[i]

2015-07-19 14:04:43 261

原创 第一次算分作业 分治法

1.POJ2299 题目点我   就是求序列的逆序对,可以用修改的归并排序。设要求得序列是数组A[1,n],中间元素的角标是mid = n/2。那么A[]中所有逆序对可以分成三种,一种是逆序对的两个元素都在A[1,mid]中,一种是两个元素都在A[mid+1,n]中,第三种是一个在前半一个在后半。注意第三种逆序对的数目,它不会因为数组前半部分(或后半部分)元素顺序的改变而变化。所以可以

2015-03-24 21:02:37 995

原创 POJ3661 背包DP

题目点击此处背包问题,考虑第i分钟是跑还是休息。设状态DP(i, j),表示第i分钟结束后疲劳度为j。状态转移方程:DP(i, 0) = max{DP(i-1, 0), DP(i-j, j)},其中i-j>=0, 0DP(i, j) = D[i] + DP(i-1, j-1), 其中0#include #include int dp[10005][505];int D

2015-02-03 16:16:27 359

原创 区间DP专辑 不断更新中

POJ 1651:记N个卡片为num[1]到num[N],容易发现取到最后总会剩下头尾两张卡片,就是说最后一次取的时候只剩下三张,只能取中间那张,所以将最后取走的那张卡片的位置当做区间的分割点,将问题分为左右两个区间的两个子问题,并且都满足最优子结构性质。记第i张卡片到第j张卡片的最优解为DP(i, j),那么可以得到状态转移方程:DP(i, j) = 0, 如果i = j - 1;DP(

2015-01-30 15:02:25 457

原创 POJ1458 最长公共子序列 经典DP

题目不说了,学习DP时候经典的例子。如果现在有两个序列X = {X1,X2,......,Xm}和Y = {Y1,Y2,.......,Yn},他们的LCS是Z = {Z1,Z2,.....,Zk}。下面分两种情况讨论:1) 如果Xm = Yn,那么一定有Zk = Xm = Yn,即Xm与Yn相等时他们一定是LCS结尾的那个元素。LCS(X, Y) = LCS(X', Y') + Xm。

2014-12-13 15:42:49 398

原创 POJ1163 数字三角形 经典DP题目

题目大意:如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值的和最大。(图是我盗的)如果用数组num[j][i]表示j行i列的数字,dp[j][i]表示从该位置向下走的子问题的最优解,整个问题最终就是要求解dp[1][1],就是最顶端的位置的最优解。状态转移方程如下:dp[j][i] = max(d

2014-11-30 15:49:10 560

原创 POJ1384 完全背包问题

#include #include using namespace std;#define inf 0x3f3f3f3fint f[5000000];int min (int a, int b){return a>b ? b : a;}void CompletePack (int *f, int c, int w, int v){for(int i = c; i <= v; i++)f[i] =

2014-11-17 15:14:15 410

原创 POJ1014 多重背包问题

最近在看背包九讲,等全部看完了写一点

2014-11-10 16:27:32 413

空空如也

空空如也

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

TA关注的人

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