- 博客(80)
- 问答 (1)
- 收藏
- 关注
原创 搬家
感谢优快云这个平台,在这里学习了很多的知识。不过不得不说,网站经常会出一些问题,所以决定搬家到新的地方点击打开链接。。希望优快云做的越来越好。。
2014-12-04 10:48:56
586
原创 汇编 之 子程序(eg : 小写字母 -> 大写字母)
// [11/1/2014 JmingS]/*汇编里,如何用子程序。。。(小例子)// 小写字母 -> 大写字母*/
2014-11-01 15:30:47
1310
原创 DFS 之 poj 2386 Lake Counting
// [11/1/2014 JmingS]/*遍历整个图,找到 'W' 的点,对其周围八个点其进行深搜,若是 'W' 则用 '.' 替换。最后,在遍历整个图的过程中,找到多少个 'W',即答案。。。*/
2014-11-01 12:59:48
568
原创 找规律+模拟 之 codevs 1160 蛇形矩阵
// [10/11/2014 Sjm]/*(数组下标默认从 1 开始)经分析可知:令 myNode = ((n + 1) >> 1),则: myArr[myNode][myNode] = 1^2 myArr[myNode + 1][myNode + 1] = (1 + 2)^2 myArr[myNode + 2][myNode + 2] = (3 + 2)^2 …………
2014-10-11 21:44:52
742
原创 二分+找规律 之 codevs 1083 Cantor表
// [10/11/2014 Sjm]/*因为是 Z 字形,所以按斜着去看它,即:斜1:1/1; 斜2:1/2, 2/1; 斜3:1/3, 2/2, 3/1; …………二分判断出第 N 项位于斜几,再找规律,即可求出第 N 项。。。*/#include #include #include #include #include #include #include #inc
2014-10-11 21:35:10
772
原创 状态压缩 之 UVA 10944 - Nuts for nuts..
// [9/19/2014 Sjm]/*dis[j][k] := 从 j 点到 k 点的最少步数,由于They can travel in all 8 adjacent direction in one step.故而 dis[j][k] = max( abs(Xj - Xk), abs(Yj - Yk) ) f[j][i] := 在 i 状态下,最后收集坚果 j 的最少步数 n
2014-09-19 16:54:18
1116
原创 贪心 + 找规律 之 hdu 5014 Number Sequence
/*关键:贪心 + 找规律0 1 2 3 4 5 6肯定先从大的开始去找(贪心):6:110 ---> 1:001 ==> 6^1 = 7结果发现:5: 101 ---> 2:010 ==> 5^2 = 74:100 ---> 3: 011 ==> 4^3 = 7 若 x ---> y,则区间 [x, y] 的所有值均可找到与其相匹配的数字。。。*/
2014-09-17 13:57:00
603
原创 BFS + 剪枝 之 hdu 5012 Dice
/*BFS 遍历所有,当寻找到要转到的情况,输出BFS的层数,即答案,否则输出 -1;注意:剪枝: 当BFS到某一种状态时,若此状态已在前面所寻找的状态中出现过,则不用再继续从此状态BFS了,因为此状态所能寻找的状态已经处理过了。*/
2014-09-17 13:49:58
619
原创 并查集 + Bfs 之 zoj 3811 Untrusted Patrol
// [9/12/2014 Sjm]/*此题在大神的帮助下AC了。。。要求:output "Yes" if the security man worked normally and has checked all piles of drinks, or "No" if not.(1)check all piles of drinks: 1) L == K (L 是 gathered
2014-09-12 22:10:54
678
原创 模拟 之 zoj 3818 Pretty Poem
/*按题目要求进行模拟。。。比赛时,wa了4次才AC掉,仅仅因为一句话: The symbol A, B and C are different continuous non-empty substrings of the poem.*/
2014-09-12 13:00:45
531
原创 状态压缩 之 hdu 1074 Doing Homework
// [9/11/2014 Sjm]/*hdu 1074 (状态压缩)dp[i]: 表示在 i 状态时的最优解 (i状态: i数值用二进制表示, 若二进制数第 n 位为1,代表第 n 个课程已被计算)*/
2014-09-11 22:05:43
526
原创 最大连续子序列和(经典DP) 之 hdu 1231 最大连续子序列
// [8/1/2014 Sjm]/*经典问题。。。*/#include #include #include using namespace std;const int MAX_K = 10005;int arr[MAX_K];int main(){ freopen("input.txt", "r", stdin); freopen("output.txt", "w
2014-08-01 15:16:54
548
原创 数学 之 hdu 4710 Balls Rearrangement
// [7/31/2014 Sjm]/*看到此题直接先打表找规律(数学很糟糕,不会用公式推,只好打表找规律)发现循环周期 T = A和B的最小公倍数于是依靠区间 [min(a, b), T] 去求一个周期内的花费,但是各种优化后依旧TLE。。。。不过,再次看打出来的表(举一个小例子):测试用例: 15 5 3 0 1 2 3 4 5 6 7 8 9
2014-07-31 21:17:55
633
原创 01背包变形 之 hdu 2126 Buy the souvenirs
/*题意:T组测试数据,每组给出 n 和 m,n代表商品数目,m是所拥有的钱,然后给出 n 个商品价格,求出可以买的最多商品种类数,以及对应的方案数 思路:对于此题,第一个想法便是以价格作为费用,件数1作为价值,01背包即可求出花费 m 所能获得的商品的最大件数 dp[m]。不过,又要求其方案数,自己试着敲了一下代码WA,后来参考了此篇博客AC掉了。。。需要建立一个数组 selec
2014-07-31 11:01:35
608
原创 逆序数 之 hdu 1394 Minimum Inversion Number
// [7/29/2014 Sjm]/*时间复杂度: O(nlogn)实现方式:树状数组 or 线段树逆序数:在一个排列中,若一对数,前面的数大于后一个数(即位置顺序和大小顺序相反),就称它们为一个逆序。排列中,逆序的总数即称为此排列的逆序数。 求逆序数方法:树状数组 或 线段树(1)树状数组实现方法:参见 树状数组优化 之 uva299 中的法一(2)线段树实现方法:在每插
2014-07-29 14:42:59
670
原创 线段树(成段更新) 之 poj 3468 A Simple Problem with Integers
// [7/29/2014 Sjm]/*线段树称断更新。。。关键lazy思想,保存增量,更新时只更新到某一段,不再向下更新,待再次更新或查询到此段时,对其子节点进行更新。。*/
2014-07-29 09:42:33
603
原创 构造字符串 之 hdu 4850 Wow! Such String!
/*话说之前读题都没读懂。。。Each substring of A with length equal to or larger than 4 can appear in the string exactly once.A的每个长度大于等于4的子串出现在传中恰好一次。(即:大于等于4的子串不能重复出现) 跟大神学的一种方法。。。(不过,看网上还有一种欧拉回路来解决这道题的,学习之后补上
2014-07-27 15:32:33
699
原创 模拟 + 最短路 之 hdu 4849 Wow! Such City!
// [7/26/2014 Sjm]/*此题看懂题意,就可以了。。。模拟+最短路。。。*/
2014-07-26 23:10:12
606
原创 简单题(需要注意一个细节) 之 hdu 4847 Wow! Such Doge!
// [7/25/2014 Sjm]/*好几次 Runtime Error(ACCESS_VIOLATION)。。。后来发现:当有符号数和无符号数出现在同一个表达式中,默认状态下(如果不像上述代码那样作强制转换)表达式的值为将结果转化为无符号类型的值。eg:int as = 4;string str = "abc";cout cout */
2014-07-26 22:58:35
610
原创 最短路 + 搜索 + 剪枝 之 hdu 4848 Wow! Such Conquering!
// [7/26/2014 Sjm]/*此题要求的值是: the minimum sum of all arrival time to each Doge Planet. 先用 Floyd 求任意两点之间的距离,再用 Dfs 去求最优解。。。。 不过关键在剪枝。。能力太水了,一直TLE,,,最后在大神的帮助下过的。。。。在两个地方剪枝,代码中有说明*/
2014-07-26 22:15:35
889
原创 线段树(单点更新(模板)) 之 hdu 1166
// [7/24/2014 Sjm]/*第一道用线段树做的题,照着大神的代码风格写的,,就当作线段树单点更新的模板吧。。。。*/#include #include #include #include #include using namespace std;#define lson l, m, rt << 1#define rson m + 1, r, rt << 1 |
2014-07-24 20:49:20
909
原创 01背包(给容量增加限制条件) 之 hdu 3466
// [7/24/2014 Sjm]/*模拟一组测试数据:2 105 10 53 5 61)若先选择第一组先来:背包所用容量: 0 1 2 3 4 5 6 7 8 9 10 第一遍循环: 0 0 0 0 0 0 0 0 0 0 5 第二遍循环: 0 0 0 0 0 6 6 6 6 6 62)若先选择第二组先来:
2014-07-24 12:12:41
956
原创 水题(细节考察getline) 之 hdu 2072
// [7/23/2014 Sjm]/*细节考察:由于空格可以被 getline 读入,所以增加判断条件。。。测试用例: ab (注意ab前有一个空格)输出:1*/
2014-07-23 22:29:51
553
原创 数学 之 hdu 4861
/*对于此题,举出数据找规律,即可AC。。。不过悲催的WA了好多次,后来发现竟把"YES"打印成"Yes"了。。。。 注释掉的代码是用来找规律的。。。*/
2014-07-23 21:43:56
728
原创 贪心 之 hdu 4864
// [7/23/2014 Sjm]/*又坑在TLE上了。。。。Each machine can only complete a task one day. Each task can only be completed by one machine.所以想到了贪心。。。 发现 dollars = 500*xi+2*yi, 由于 xi(0 2*100,所以 dollars 的决定因素是
2014-07-23 21:29:37
622
原创 01背包(求前一个的最大价值-->求前K个的最大价值) 之 hdu 2639
// [7/21/2014 Sjm]/*此题我想的思路错了,情况考虑漏了。。。 解法是由 求前一个的最大价值-->求前K个的最大价值 的转化。 求前一个最大价值: dp[i][j] = max(dp[i-1][j], dp[i-1][j-C[i]] + W[i])求前K个的最大价值 同样,dp[i][j]的前 k 个最大价值,是依赖于 dp[i-1][j] 的前 k
2014-07-21 22:20:38
711
原创 01背包(体积为负,改变区间) 之 poj 2184
// [7/21/2014 Sjm]/*题意:maximize the sum of TS and TF, but both of these values to be non-negative. 解决思路:以 TS 作为体积,TF作为价值,在保证体积、价值非负的情况下,求解 sum,取其所有情况的最大值。 难点:1)体积出现负数,将区间改变 [-100000, 100000]
2014-07-21 16:20:38
679
原创 01背包 + 数学(平衡) 之 uva 562
// [7/21/2014 Sjm]/*题目关键:Given a bag with a maximum of 100 coins, determine the most fair division between two persons.This means that the difference between the amount each person obtains should
2014-07-21 11:41:32
684
原创 01背包(打印路径) 之 uva 624
// [7/21/2014 Sjm]/*此题直接根据01背包的求解思路,记录路径,再递归输出。。1A。。注:对于最后一个测试用例 43 2 也是满足题目要求的,输出它也是对的。*/#include #include #include #include #include using namespace std;const int MAX_NUM = 25;const i
2014-07-21 10:26:03
661
原创 01背包 + 概率 之 hdu 2955
/*看到此题时,第一个想法是:以P作为体积,Pj作为费用,Mj作为价值。但是,double类型的不能作为数组下标,于是此法行不通。于是,从另一角度考虑:被抓的概率不能超过上限,即不被抓的概率要大于下限(下限 = 1 - 被抓概率的上限)。以总的银行金额作为体积,每一个银行金额作为费用,不被抓的概率作为价值。即 dp[i][j] := 抢劫了前 i 个银行,所获金
2014-07-20 17:17:02
625
原创 01背包(模板题) 之 poj 3624
01背包模板题。。。#include #include #include #include #include using namespace std;const int MAX = 3410, max_w = 12885;int N, M;int W[MAX], D[MAX], dp[max_w];int Solve() { memset(dp, 0, sizeof(dp
2014-07-16 21:26:17
738
原创 整体贪心 + 局部01背包 之 hdu 2546
// [7/16/2014 Sjm]/*自己没想到将5元单独提出来,,结果一致wa。。。01背包变形:目标:尽量使卡上的余额最少,也就是说尽可能让花销最大。 分析:购买菜时,只可能出现三种情况 :1)M 2)饭卡金额M >= 所有菜的价格总和sum: 答案即 M-sum;3)饭卡金额M 5元是可以买最贵的菜的最小花费,再尽可能的花去(M-5)元。 a.5元直接提
2014-07-16 21:07:33
556
原创 字典树 + 深搜 之 hdu 1298
// [7/16/2014 Sjm]/*字典树 + 深搜。。。(好久没碰搜索了,调试了一段时间,不过还好1A。。。)*/
2014-07-16 14:00:28
693
原创 数学 之 Codeforces 359D - Pair of Numbers
// [7/13/2014 Sjm]/*直接暴力,超时。。不过有一点大家都知道:如果 (b%a == 0),(c%b == 0), 那么 (c%a == 0) 一定是成立的。 故而以一个数字a为中心,向两边寻找能够被a整除的数后,已被寻找到的的数是不用再计算的。。。(因为即使计算这些已被寻找到的数,最大的(r-l)一定 啊,,,比赛时怎么就没想到呢。。。。*/
2014-07-13 16:04:12
956
空空如也
VS2012 装完插件后出的问题:遇到异常,可能是某个拓展导致
2013-07-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人