- 博客(68)
- 资源 (83)
- 收藏
- 关注
原创 Nyoj 791
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ int V, i, j; int arr[10]; while(~scanf("%d", &V)) { int MI...
2014-03-31 21:52:51 909
原创 Nyoj 737 石子合并(一)
石子合并问题,就是矩阵链连乘的一个推广,或者说是变形,因此矩阵链连乘,是一个根基,需要理解透彻 。因此可参考矩阵链连乘:http://blog.csdn.net/hearthougan/article/details/25834141 #include <iostream>#include <cstring>#include <cstdio>...
2014-03-29 21:50:02 1372
原创 Nyoj 712 探 寻 宝 藏
双线程dp,可以看成两个人同时从同一个地点出发沿着相同的方向出发,要保证保证两个人的线路不能相交!如果人1和人2在相同的行或者相同列,那么他们一定会在相同的列或者行,因此保证他们不在相同的行,就可以保证他们的线路不会相交!dp[k][i][j] 表示:走到第k步,机器人1走到第i行,机器人2走到第j行时所得到的最大的宝藏数!机器人1所在的列就表示成k-i,同理机器人2所在的列就为k-j,其中k...
2014-03-29 11:41:48 962
原创 Nyoj 708 Ones
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 10010;int dp[MAXN];int MIN(int a, int b){ return a < b ? a : b;}void ...
2014-03-28 21:35:57 916
原创 Nyoj 613 免费馅饼
#include <stdio.h>#include <string.h>#define MAXN 100010int MAX(int a, int b, int c){ return ((a > b ? a : b) > c ? (a > b ? a : b) : c);}int main(){ int dp[...
2014-03-28 17:17:50 880
原创 Nyoj 571 整数划分
第一行:将n划分成若干个正整数之和的划分数 我们设dp[i][j] 表示将正整数i划分成最大数不超过数j的划分数,显然我们有: (1):如果划分的数中至少有一个有j,则有:dp[i][j] = dp[i-j][j]; (2):如果划分的数中没有j,则有:dp[i][j] = dp[i][j-1]; 因此有:dp[i][j] = d...
2014-03-28 16:01:46 872
原创 Nyoj 456
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 12;int num[MAXN];int totalvalue;bool DFS(int sum){ if(sum == totalvalue)...
2014-03-27 20:08:06 790
原创 Nyoj 515 完全覆盖 II
详细可以参考:http://blog.csdn.net/hearthougan/article/details/22077391 #include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long LL;LL dp[12]...
2014-03-27 12:09:22 1089
原创 Nyoj 492 king
跟铺砖问题或者棋盘分割问题差不多,相同的思路来做!首先交代一下DFS中变量的含义:i, j, curstatus, prestatus, num, b分别为:当前所在的行,j当前所在的列, curstatus当前所在行的状态,prestatus当前所在列所在行的前一行状态,num,本行放置king的方案数, b本行本列的放置是否对下一列有影响。dp[i][curstatus][num]:表...
2014-03-27 10:43:08 871
原创 Nyoj 469 擅长排列的小明 II
/**由于第一个只能是1,则第二个数只能是2,3当第二个数是2时,则相当于是对2-n的排列,相当于对1-(n-1)的排列,即arr[n-1];当第二个数是3时,第三个数只能是2,4,5此时,当第三个数为2时,则是对3-n的排列,相当于对1-(n-3)的排列,即arr[n-3] 当第三个数为4时,此时,第四个数只能是2,除了n等于4时,对于n大于4的排列,都不符合要求, 而n...
2014-03-26 16:05:51 660
原创 Nyoj 456 邮票分你一半
深搜超时了,但是http://blog.csdn.net/hearthougan/article/details/21940999这个题,却可以!只有利用0-1背包的思想来求解了;0-1解法:#include <iostream>#include <cstring>#include <cstdio>using namespace std;...
2014-03-26 14:59:52 791
原创 Nyoj 435 棋盘分割(二)
主要还是参考周伟同学写的状态压缩思想:http://download.csdn.net/detail/hearthougan/7045453另外可以参考一下相对简单的同类型题:http://blog.csdn.net/hearthougan/article/details/22077391首先交代一下所要用得到几个变量:i, j, curstatus, prestatus, b1, b2;...
2014-03-26 14:02:27 775
原创 poj 2411 zoj1100
参考周伟的论文:http://download.csdn.net/detail/hearthougan/7045453第i行的铺设方法,例如(i, j)位置的铺设受到(i-1,j), (i, j-1)影响,因此(i, j)的铺设可能影响到(i-1, j+1), (i, j+1)位置的铺设.首先交代几个变量的含义:j, curstatus, prestatus,分别表示当前为第j列,当前第i...
2014-03-25 17:35:37 1437
原创 Nyoj 325
//利用搜索来实现在均分(意思就是这个人的多少,多方就得多少)的情况下,使得两堆误差最小(总的质量之和减去两者均分量之和,就是在此种均分情况下的两堆差量)!#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 25;...
2014-03-24 11:19:34 746
原创 NYOJ 289 (0-1背包)
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 1010;int MAX(int a, int b){ return a > b ? a : b;}int dp[MAXN];int V;...
2014-03-23 20:49:57 857
原创 NYOJ 311 完全背包
#include #include #include using namespace std;const int MAXN = 50010;const int MIN = -0xfffffff;int dp[MAXN], V;void Complete_Pack(int cost, int price){ int v; for(v = cost; v <
2014-03-23 20:47:06 749
原创 Nyoj 269
首先题目读的费劲!另外不能在for循环中定义变量i,j之类的,否则会超时!!!dp[i][j] += dp[i-1][j-k], i >= 2,j #include #include #include using namespace std;const int MAXN = 82;int dp[10][MAXN];//dp[i][j]前i位之和等于j的数目void
2014-03-23 18:12:19 729
原创 Nyoj 246
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 110;int MAX(int a, int b){ return a > b ? a : b;}int Row_Col(char s)...
2014-03-23 15:44:04 732
原创 Nyoj 252
dp[k],表示长度为k满足题目条件的‘01’串,有几个。如果第k位为0,则dp[k] = dp[k-1],如果第k位为1,那么第k-1位一定为0,则dp[k] = dp[k-2]; #include <iostream>#include <cstring>#include <cstdio>using namespace std;const...
2014-03-23 10:28:57 929
原创 NYOJ 236
先排序,找出最长递减序列;题目: http://acm.nyist.net/JudgeOnline/problem.php?pid=236 #include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;...
2014-03-22 23:07:20 714
原创 Nyoj 234 吃土豆
/**#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAXN = 510;int MAX(int a, int b){ return a > b ? a : b;}int main(){ int row...
2014-03-21 15:31:20 788
原创 nyoj 232
长和宽按降序排列,最后找出最长降序子序列; #include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int MAXN = 100;struct Edge_Of_Rectangle...
2014-03-21 11:44:47 566
原创 九度 1373
查找一个数以内1出现的次数可参考:http://blog.csdn.net/hearthougan/article/details/21645859#include #include #include using namespace std;typedef long long LL;LL fabs(LL a){ LL i = a >> 31; return
2014-03-20 21:25:51 676
原创 1049. Counting Ones (30)
/**给定一个数计算其以内1出现的次数设为k,那么k = 个位1出现的次数 + 十位1出现的次数 + 百位1出现的次数······那么:例如:123,如果要推断个位1出现的次数,它与高位和低位有什么关系呢?如果个位数为0,那么这个数以内个位出现1的次数只与他的高位有关,等于高位数,如果个位数字等于1那么个位出现1的次数既与高位有关也与低位有关,等于高位数加上低位数再加上1;如果低位数大于
2014-03-20 20:43:11 666
原创 九度 题目1513:二进制中1的个数
找出二进制中1的数目,有个很好的方法,例如:111 & 110 = 110,则可以去掉末尾的‘1’,因此当num不等于0时用 num = ( num & (num - 1) ),不断地去掉末尾1的数目,最后可以计算出一个数二进制中'1'的数目。#include int main(){ int n; int i, num; while (~scanf("%d", &n)) {
2014-03-20 13:05:29 889
原创 九度 1507
#include #include #include using namespace std;int Bit_Add(int a, int b){ int numcarry = a & b; int nonumcarry = a ^ b; if(numcarry != 0) return Bit_Add(nonumcarry, numcarry << 1); else
2014-03-20 12:27:31 831
转载 位操作基础篇之位操作全面总结
Title: 位操作基础篇之位操作全面总结Author: MoreWindowsE-mail: morewindows@126.comKeyWord: C/C++ 位操作 位操作技巧 判断奇偶 交换两数 变换符号 求绝对值 位操作压缩空间 筛素数 位操作趣味应用 位操作笔试面试位操作篇共分为基础篇和提高篇,基础篇主要对位操作进行全面总结,帮助大
2014-03-20 11:03:42 535
原创 Nyoj 229
我感觉这道题很好!利用背包思想来做,用二分来逼近并找出答案! #include<iostream>#include<cstdio>#include<cstring>using namespace std;const int MAXN = 110;int Ap[MAXN];int Bp[MAXN];int dp[MAXN];/...
2014-03-20 00:10:40 1086
原创 九度 1389
这是一个变形题;设f[n]为跳到n阶台阶的方法,另f[0] = 1;当n = 1时,f[n] = f[1] = f[0] = 1;当n = 2时,f[n] = f[2] = f[0] + f[1] = 2;当n = 3时,f[n] = f[3] = f[0] + f[1] + f[2] = 4;······························当n = k时,f[
2014-03-19 20:59:27 557
原创 Nyoj 214 单调递增子序列(二)
以前那种写法是超时的,看别人的想法之后,才发现还有O(n*logn)的算法,这种想法挺不错的! /**#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 100010;int main(){ int...
2014-03-19 16:58:33 562
原创 Nyoj 219
这里偷工减料了,用蔡勒公式直接代入了!蔡勒公式: W =(〔 [c/4] - 2c + y + [y/4] + [13 * (m+1) / 5] + d - 1 〕% 7 + 7)% 7;其中:c为年份的前两位数,y为年份的后两位数,m为月份,d为天数; 注:如果月份为1月份或者是二月份,则要算到上一年中去!输入输出要用scanf和printf否则会超时!由此可见,关键时...
2014-03-18 21:32:25 839
原创 Nyoj 201 作业题
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;const int MAXN = 1000;struct Node{ int x; int y;};Node Point[MAXN]...
2014-03-18 16:02:48 766
原创 大数加法 hdu 1002
换一种写法:#include #include #include using namespace std;const int MAXN = 1010;void Big_Number_Add(char* a, char* b){ char c[MAXN]; int i; while(*a == '0') a++; while(*b == '0') b++; i
2014-03-18 14:43:49 766
原创 hdu 2553 n皇后问题
#include #include #include #include using namespace std;const int MAXN = 15;int row[MAXN], sum, n;//row[num] = i,表示第num行皇后放在第i列int ans[MAXN];bool Judge(int num)//判断num行,row[num]列之前,是否存在冲突
2014-03-18 10:38:32 934
原创 Nyoj 195
看了好久,楞没看懂题目什么意思!一顿抓狂!题目的意思是从(0, 0)飞到(n, m)点处,最短距离是多少。其中有的是可以走方格的对角线(即是捷径),如果一个方格不能走对角线,则只能走方格的两条边。 如果可以走捷径由于从一个点(x1, y1)到另一个点(x2, y2),那么x2 > x1 && y2 > y1,即每一列,每一行至多只可以走一条捷径,那么可以先...
2014-03-17 22:49:19 1054 1
原创 Nyoj 171 聪明的kk
代码一:输入完再处理 #include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 25;//int Graph[MAXN][MAXN];int dp[MAXN][MAXN];int MAX(int a, int...
2014-03-17 21:03:01 800
原创 Nyoj 81 炮兵阵地
解题报告:1.算法 : (1)首先,看到这个题目想到的是暴力搜索,无所谓深搜还是宽搜,都需要对所有的情况进行穷举,10*100 的格子,这样穷举的话基本上会超时。想到用贪心法,但是贪心法的结果是不正确的。 (2)于是想到动态规划,动态规划的重点是找状态转移方程,需要状态记录的数组 f(因为最终要求的是大炮个数,所以 f 的值记录当前状态的大炮个数)。从题目的数据中来看因为 m<1...
2014-03-17 12:35:50 1263
转载 RMQ (Range Minimum/Maximum Query)算法
1. 概述RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。这两个问题是在实际应用中经常遇到的问题,下面介绍一下解决这两种问题的比较高效的算法。当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN...
2014-03-16 16:58:27 688
原创 NYOJ 110
哎,有个细节没注意到,一直折腾到现在! 编号为i的人能从所有人中胜出,必要条件是他能与自己“相遇”,即把环看成链,x点拆成两个在这条链的两端,中间的人全部被淘汰出局,x保持不败。这样,在连续几个人的链中,只须考虑头尾两个人能否胜利会师,中间的则不予考虑,从而少了一维状态表示量。设Meet_Matrix[i,j]记录i和j能否相遇,能相遇则为true,否则为false。Meet_Matri...
2014-03-16 14:12:59 648
原创 NYOJ 104 最大和
参考别人的思路:这道题可以看做是一维最大子串和。eg:5 -3 3 -8 10 -3 5 8 -6这个数列中,最大的子串和是10 -3 5 8 = 20。当时采用的是用一个b[i]来记录:扫描到第i个元素时,其最大子串和:其递归式是:b[i]=max{a[i],b[i-1]+a[i]} 这道题中,我们需要将二维的压缩成一维,然后进行如上算法,以本题为例,其步骤如下:...
2014-03-16 12:05:03 908
从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史
2018-11-19
word2vec系列资料
2018-11-19
word2vec 中的数学原理详解
2018-11-01
CRF++0.58-Linux+Windows
2018-09-29
npp++32位+NPPTextFx.dll
2018-09-27
李航-《统计学习方法》高清完整版(带书签)
2018-09-17
Stanford NLP note - Christopher Manning教授-完整吧
2018-08-08
Stanford NLP note - Christopher Manning教授
2018-08-08
21天学通Java-第7版-超清带书签.pdf
2018-07-27
计算机统计自然语言处理PDF
2018-07-26
Tensorflow 实战Google深度学习框架-清晰-带书签
2018-01-17
TensorFlow Machine Learning Cookbook.pdf
2018-01-17
最大熵模型与自然语言处理
2017-09-01
cudnn 5.1 for CUDA 8.0 Linux
2017-07-05
李宏毅 一天搞懂深度学习.ppt版下载
2017-02-23
机器学习实战(中文带书签+英文+源代码)
2016-10-26
《机器学习》----[Tom M. Mitchell]--带书签
2016-10-16
《统计学习方法》李航-带书签高清完整PDF版
2016-10-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人