- 博客(35)
- 收藏
- 关注
原创 MFC 重载CFileDialog
碰到个很麻烦的小问题,记录一下。在MFC下重载CFileDialog,代码如下class MulFileDialog : public CFileDialog{ DECLARE_DYNAMIC(MulFileDialog)public: MulFileDialog(BOOL bOpenFileDialog, // 对于 FileOpen 为 TRUE,对于 FileSaveAs
2016-01-22 17:47:42
1292
原创 JAVA下wordpress加密
这个加密找了很久,都只有PHP版本的,同事给了我一个远古的C#版本的,写的太晦涩难懂,而且还有错的,不过最后好歹弄出来的。上代码//wordpress 加密 public String WordpressEncrypt(String str,String salt){ MessageDigest md; try { md = MessageDigest.getInstance(
2015-07-15 15:04:22
606
原创 JAVA下AES256加密
废话不说,上代码 public static final String KEY_ALGORITHM="AES"; public static final String CIPHER_ALGORITHM="AES/ECB/PKCS7Padding"; private String Encode(byte[] x){ String hs = ""; Stri
2015-07-15 14:43:41
2587
原创 Ural 1519
Ural 1519真-插头DP模板题,也是用插头DP的思想做的,括号表示法耗时比最小表示法略少,但是思路复杂小小,代码好难打啊,弄了很久才AC。#include#include#include#include#include#include#include#includeusing namespace std;#define inf 0x7fffffff#defin
2013-12-05 00:09:53
519
原创 HDU 1693
HDU 1693最水的插头DP,更改一下状态压缩模板之后顺利AC,没什么好说的。#include #include #include #include #include #include #include #include #include #include #include #include #include#includeusing namespace s
2013-09-11 23:54:03
628
原创 HDU 4714
HDU 4714题意:给出一棵树,设定切断一条边花费跟连接一条边的花费均为1,问将这棵树变为一个圆的最小花费。钻牛角尖了,钻牛角尖了,一直去抓树的直径,这个时候就体现出队友的重要性了,给了我正确思路,事实上就是将这棵树切成若干棵单支树,要求单支树数量最小,然后再拼起来,就是答案了。转移状态dp[ i ][ j ],已第I个节点为根的子树的根的可用度数为J的最小单支树数量。每个儿子都
2013-09-08 18:49:21
907
1
原创 HDU 4705
HDU 4705题意:给出一棵树,求不能一笔划的点集{A,B,C}的数量。简单树形DP吧,DP[ I ][ J ],以I点为根的子树中,不经过根的两点点集数量跟单点数量,每个子树相乘就行。#include #include #include #include #include #include #include #include #include #include #i
2013-08-22 17:47:37
681
原创 HDU 4689
HDU 4689给出一段由‘+’和‘-’组成的符号,长度为n,问从1,2,3.....n的错排跟原数列相减后符号跟给出的字符串想匹配的有多少种。好拗口的题意,不知道怎么说好,长度少于20,太有误导性了,第一眼就以为是状态压缩,快结束才知道有1000个test,这数据出的太不科学了吧?思路:dp[ i ][ j ],第i位的时候还有j个数没放好的数量,在每一个状态下都假设‘-’号的位置全部已
2013-08-21 13:15:45
1116
2
原创 HDU 4686
HDU 4686题意很简单,给出公式,求结果,将公式转化后可以用矩阵快速幂求出来,细节问题,错了很多次,不够熟练。#include#include#include#include#include#include#include#pragma comment(linker,"/STACK:102400000,102400000")using namespace std;#
2013-08-20 21:04:53
637
原创 HDU 4665
HDU 4665题意:给出一段数字,要求平均分成两组,相对位置不变,两组位置相同的数字要相等,求任意解。虽然N有2000,但是相同的数字不超过4个,又因为所有数字都要用上,所以情况其实不算很多,DFS可以很好的解决,但是还是没能当场做出来,可惜。#include #include #include #include #include #include #include #
2013-08-08 18:38:06
688
原创 POJ 2923
POJ 2923题意:给出N个物品的重量,两部小车的容量,问将物品全部转移的最小次数。思路:NAC之后发现暴力搜索好像也可以,但是剪了枝之后还是TLE,不知道能不能行。#include #include #include #include #include #include #include #include #include #include #include
2013-08-04 23:59:45
597
原创 HDU 4616
HDU 4616题意:给出一棵树,每个节点有一个正整数值,可能有1个或者没有炸弹,要求你找出一条单向路,在碰到炸弹数量不超过C的情况下取得的值尽可能大,起点任意,需要注意的是,碰到C个炸弹之后,立刻结束,哪怕还有没有炸弹的节点都不能走了,因为一个小BUG,多校结束之后20分钟才A了,太可惜了,希望错误不要再犯!思路:典型树形DP,大致做法差不多,定义DP[ I ][ J ][ K ],以I
2013-07-25 18:39:47
1097
2
原创 POJ 2486
POJ 2486对于一个弱菜来说,期末考试是鬼门关,经过一个月的预习,终于完成了大学生涯第一次不挂科的经历,也要回到ACM中被虐的征途了。题意:给出一颗N个节点的树,根节点为1,然后给出每个节点苹果的数目,问在走K步之内最多能吃掉多少苹果,可以走回头路,回头路这个太恶心了,断断续续想了几个星期,今天试着交一次,居然一次AC了,惊喜。思路:状态DP[ I ][ J ][ K ],代表
2013-07-18 16:38:56
708
原创 POJ 2404
POJ 2404题意:给出n个点m条边。问每条边最少走一次的最小花费,可以在任意起点出发,终点必须回到起点。n 推了一个1000W的状态,TLE了,然后用队列优化,水过了,等下再去看看别人的代码,有木有稳定的复杂度方法。#include #include #include #include #include #include #include #include #i
2013-05-18 19:14:27
607
原创 CF 296B
CF 296B题意:给出2段只由数字跟问号组成的字符串,问号的位置上可以放入任意数字,问有多少种放入方法,使得存在一对i,j,使得a[i] > b[i] && a[j] 磨了2小时,在结束前A掉了,开心。思路 : dp[i][5] ,1 - 4分别代表 在前i个数字所有组合中:a 中所有数字大于或参杂了等于 b 的组合数 ;a中所有数字等于b的组合数;a中所有数字小于或者参杂了等于b的
2013-04-12 11:04:48
683
原创 POJ 2960
POJ 2960题意:给出若干堆石头和若干种取法。两个人轮流从这些石子堆中取石子,规则:(1)每次只能从一堆里取 (2)取出石子的数量值是S中的一个元素(3) 不能按规则取石子者负求先手必胜还是必败第一次做博弈题,只会套SG函数,权当练习,避免比赛真出了,一点都不会。#include#include#include#include#include#in
2013-04-10 19:53:51
565
原创 HDU 4512
HDU 4512太弱了,LCIS都不会,赛后急急忙忙找出来学习学习,分成两种情况,长度为偶数的,把数列分成2段,后半段翻转,LCIS一次,长度为奇数的,枚举中点,分别将左右2边小于中点的数放入数组中,LCIS一次就行了。#include#include#include#include#include#include#include#includeusing namespac
2013-03-24 00:01:20
624
原创 HDU 4517
HDU 4517喜闻乐见中文题,开门见山,cnt[ i ][ j ]记录第i行第j列为终点,记录向左连续带*号的的长度,处理完毕一次之后,再从上到下按列处理一次,用len1,len2记录以第i行第j列为终点时候,每一行带*号的长度大于等于规定的长/宽的长度。相加就是答案。这里有个陷阱,就是当小矩阵行等于列的时候,要将答案除以2。做是做出来了,但是WA2次+耗时颇长,实力不够,再接再厉。PS
2013-03-23 23:34:41
611
原创 POJ 1952
POJ 1952题意:给出一个串,找出最长递减子序列的长度跟数量,我以为很快做出来,结果我太低估题目跟高估自己了,一个晚上磨一题,好令自己失望,状态又不好,一脑子浆糊。状态转移很简单,扫一遍就行了,去重很麻烦,我的思路是如果这个数字前面已经出现过了,那么把他的数据清0,再扫一遍,因为代码没有推倒重打,所以显得繁杂了。再接再厉!!#include#include#include#i
2013-03-13 23:23:06
593
原创 POJ 1948
POJ 1948题意:给出N条长度不大于40的线段,要求分成三部分,用这3部分的长度总和作为3条边,要求围成的三角形面积最大。想了很久,WA十多次,终于AC了,二维背包,dp[x][i][j]代表加入第x个数时第条一边位i时候第二条边为j时候的可行性。状态转移方程:dp[ i ][ j ][ k ] = dp[i - 1][ j + s[i]][ k ] | dp[i - 1][ j
2013-03-12 21:02:33
568
原创 POJ 1038
POJ 1038尼玛死,卡了1个星期,对状态压缩的精髓终于摸索到那么一点了,黑书例题,思路什么的都有了,我也是按照思路打出来的,惭愧,其实复杂度已经够了,没有剪枝,无限TLE了。不过还是搞出来了,道路那么曲折啊,不知道我的大学生涯能不能撑到我找到出口。#include#include#include#include#include#include#include#includ
2013-03-09 20:07:24
678
原创 POJ 3225
POJ 3225有中文题意,不用多说,以前刚学线段树的时候曾经做过,不过死活做不过来,现在还是无限TLE,实在没办法了,稍微去瞄了其他人的代码,豁然开朗啊,稍微修改一下就AC了。有5种操作,实质上针对线段树,只有2种操作,1是更新,二是翻转。U : 更新a,b段为1。I : 更新除a,b段之外的所有区间为0。D :更新a,b段为0。C : 翻转a,b段,a,b段之外的区间更
2013-02-20 22:00:48
400
原创 POJ 1946
POJ 1946题意:给出N只牛,每只牛有E份能量,要牛群在尽可能短的时间内跑完D米路程。牛的能量的消耗规则如下:牛群以X米/分钟的速度前进,领头的牛会消耗X^2份/分钟的能量,其余的消耗X份/分钟,领头的牛可以在每分钟更换,如果某一头牛剩余能量不支持他以该速度跑完整1分钟,那么他就会掉队,只要有1头牛到达终点都算完成。喜闻乐见的DP,推一下就可以发现,某一头牛以某一个速度作为领头
2013-02-17 15:54:08
505
原创 POJ 1770
POJ 1770题意:给出N个点,再给出M个数,要求找出一个点集,点的权值总和要最大,而且点集里面任何2个点之差不等于M里面的任何数。看起来似乎是最大点权独立集,一点都不会,后来去翻人家的答案,说是题目暗示了其实是一棵树,不存在回路,所以用树状DP可以搞定。#include#include#include#include#include#include#include#i
2013-02-07 15:31:58
644
原创 POJ 1664
POJ 1664网上一般都是用递推做的,然后我很久以前用DP过了,最近看了下,居然做不出来了,再看回自己代码,还是不懂,然后拿自己代码请教别人···才记回来,真神奇。DP[ i ][ j ][ k ]代表用i个盘子装k个苹果,k个盘子中苹果数最大为j个,复杂度O(n^4),虽然可以再优化,不过不想搞了,关键是这种状态我当时怎么推出来的,现在都想不出来的。#include#includ
2012-12-21 17:05:29
507
原创 UVA 12572
UVA 12572队友突然说给我这道题看看,看着好玩,做起来也挺好玩的,应该算是贪心吧。题意:给出一段不大于N的区间,由单个数字组成,求出所有区间的最小元素的和。首先可以看出,一个长度为N的区间的所有不同且不为空的子区间的数量是1+2+3+4······+N,即(N)(N+1)/ 2。然后只要存在数字0属于只要区间(i , j),那么区间(i , j)最小元素必定为0。存在数字
2012-12-13 15:32:12
389
原创 POJ 1170
POJ 1170依然是DP,题目大意:给出若干物品与单价,然后给出一系列物品组合后优惠价,问把所有物品买下来最少需要多少钱。状态压缩,物品最多5种,然后每种最多5个,用6进制数储存,每种数量在不同时的最优解,第一次盲打状态压缩DP,自然是无限WA···幸亏还是过了。代码依然很蠢,又长又臭。#include#include#include#include#include#inc
2012-11-19 21:14:19
288
原创 POJ 1141
POJ 1141给出一段括号,要求插入最少的括号使其合法,坑爹啊,有空串的,错了一晚上。设dp[ i ][ j ]为以i为开始j为结束成为合法段所增加的括号数最小。然后dp[ i ][ j ]=min( dp[ i ][ k ]+dp[ k+1 ][ j ]) //i类似矩阵连乘,记录新增括号比较麻烦,弄了很久才弄出来。#include#include#include
2012-11-15 22:36:09
345
原创 POJ 1080
POJ 1080题意:给出2列字符串,然后给出每对字符所含的值,要求你在字符之间添加 “-” 号使2组字符长度相等,然后每个相同位置字符为一对,计算值的总和,要求总和要最大。设dp[ i ][ j ]为以a字符第i位置为结束和以b字符j位置为结束的最优解。状态转移方程:dp[ i ][ j ]=max( dp[ i-1 ][ j-1 ]+maps[ a[ i ] ][ b[ j ]
2012-11-14 23:34:29
310
原创 POJ 1036
POJ 1036英语渣,题意网上找的: 题目意思是有个伸缩门,大小在[0,k]内变动,在每个状态处,门既可以变大一个单位,也可以缩小一个单位(边界处除外),且初始时是在0处,现在有n个高贵度,身材和到来时间不尽相同的人来饭店,求怎样安排门的变化使得能够进去的人的高贵度之和最大。经典的数塔模型的变形,用dp解,方程是dp[i][j]=max(dp[i+1][j],dp[i+1][j-1
2012-11-11 16:17:09
391
原创 HDU 4393
HDU 4393题目大意:给出N个人,每个人有2个速度,第一个是第一秒的速度,第二个数第一秒以后的平均速度。每一秒输出跑的路程最长的一个人,然后T掉他,直到所有人输出完毕为止。如果路程相同就输出序号最小的那个。嘛,弱菜,算法学得不多,想了很久,如果暴力就是O(n^2)不用说肯定超时的。然后看了他有2个影响的因素,除了第一秒,以后的路程差都是固定了,本来打算用线段树之类的成段更新,想了一下,
2012-10-04 19:10:07
625
原创 POJ 1050
PUK 1050题目大意,给出一个N*N的矩阵,求最大子矩阵之和。假设最大子矩阵为n*m,就是求以n为宽度的数组的最大递增子序列,扫一遍就可以了。#include#include#include#include#include#include#includeusing namespace std;#define MAX -0x7fffffff#define N 105
2012-09-27 12:59:32
273
原创 HDU 2065
HDU 2065矩阵快速幂,好激动,第一次用矩阵快速幂AC,虽然构建矩阵+写代码用了一个上午·····作为弱菜的我已经很满足了!也没有什么要讲得,中文题目,构建矩阵,熟练就好。int start[4]={2,1,1,0};这里没有用到,提醒一下自己而已,一开始n=1时候,有4个串分别为,A,B,C,D;这个数组记录的就是 { AC同时为偶数的数量,A偶C奇的数量,A奇C偶的数量,A
2012-09-25 10:49:58
325
原创 HDU 4293
HDU 4293大意:给出N个人,分成若干个团队,然后第i个人说出自己团队前面又Ai个人以及自己团队后面有Bi个人。问最多能让多少个人说的话正确。哎,英语渣,大概就这样了。一开始看题目,觉得看错题,坑了很久,然后跟师兄交流一下意见,果然看错了,无语。我的思路就是转化成0/1背包,因为每个人都有正确/不正确的选择,因为要取正确的最大,所以如果Ai=Aj而且Bi=Bj,那么背包(Ai,
2012-09-20 23:13:18
277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人