Fork me on GitHub
上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: CF原题由题可知,n,m太大,无法开出dp[n][m]的数组。观察发现s/e最大为300,也就是说,选用第一种操作的次数不会超过300。于是定义dp[i][j],第一个串的前i个数,使用了j次第一种操作的时候,第二个串最少删了多少个数。转移有两种情况:1.当前位置不删,这时dp[i][j]=dp[i... 阅读全文
posted @ 2014-05-31 20:45 whatbeg 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 定义:dp[i][j]为状态为j时,第i行符合条件的状态数转移方程:dp[i][j] += dp[i-1][t] //t为上一行状态,与当前行不冲突。从第一行开始向下枚举,每次枚举当前行的状态和上一行的状态,如果不相邻或者未被地雷占据并且两行的关系是合法的,则加上方法数。最后res = SUM(d... 阅读全文
posted @ 2014-05-31 20:44 whatbeg 阅读(279) 评论(0) 推荐(0) 编辑
摘要: LRJ黑书上的例题。化简均方差公式:均值的平方一定,所以只需让矩形的总分的平方和最小即可。定义:dp[k][x1][y1][x2][y2],以(x1,y1)为左上角坐标,(x2,y2)为右下角坐标的矩形,切割K次以后得到的k+1块举行的总分平方和的最小值转移方程:(分成横割和竖割)dp[k][x1]... 阅读全文
posted @ 2014-05-31 20:43 whatbeg 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 定义dp[i][j]表示第i天手中有j股股票时,获得的最多钱数。转移方程有:1.当天不买也不卖: dp[i][j]=dp[i-1][j];2.当天买了j-k股: dp[i][j]=max(dp[r][k]+(j-k)*Ap[i]); (r=1,所以i>w+1时才能转移,这是i#include #in... 阅读全文
posted @ 2014-05-31 20:42 whatbeg 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 设FA为A的牌中数字异或和,FB为B的。则有性质:ans = (所有的(A&B=0)个数 + (FA=FB且A&B=0)的个数)/2。即所有的FA>FB的个数(除2是因为这里FA>FB的个数等于FA#include #include #include #include using namespace... 阅读全文
posted @ 2014-05-31 20:41 whatbeg 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 题意:即求给定n个数字(a1,a2,……an),不改变序列,分成M份,使每一份和的乘积最大。思路:dp[i][j]表示把前i个数字,分成j份所能得到的最大乘积。转移方程:dp[i][j] = max{ dp[k][i-1]*sum(k+1,j) } 其中显然j#include #include #i... 阅读全文
posted @ 2014-05-31 20:40 whatbeg 阅读(309) 评论(0) 推荐(0) 编辑
摘要: A.爱管闲事http://www.cnblogs.com/whatbeg/p/3762733.htmlB.轻音乐同好会C.温泉旅馆http://www.cnblogs.com/whatbeg/p/3762735.htmlD.摩天轮E.生日礼物http://www.cnblogs.com/whatbe... 阅读全文
posted @ 2014-05-31 19:21 whatbeg 阅读(222) 评论(0) 推荐(0) 编辑
摘要: B.Battle for Silver定理:完全图Kn是平面图当且仅当顶点数n#include #include #include #include using namespace std;#define N 100000000int mp[500][500];int w[500];int main... 阅读全文
posted @ 2014-05-25 22:23 whatbeg 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 这种有限制的类棋盘着色问题一般可以用指数型母函数来解决,设Hn表示这样的着色数,首先H0=1,则Hn等于四个字母的(A,B,C,D)的多重集合的n排列数,其中每个字母的重数是无穷,且要求A,C出现的次数是偶数,因此,H0,H1,...Hn,...的指数生成函数是A,B,C,D因子的乘积: 用快速幂解 阅读全文
posted @ 2014-05-15 00:13 whatbeg 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 题意:给n种房子,每种房子有一个值val和个数cnt,现在要把这些房子分成两部分,争取两部分总值相等,如果不能相等,让A>B,且A-B最小。 解法:先跑一次生成函数,c[n]表示组成总值为n的方法种数,然后从Total/2~0枚举B的总值,如果c[i]不为0,说明可以达到 i 这个状态,说明这就是B 阅读全文
posted @ 2014-05-14 21:47 whatbeg 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 这题跟上两题也差不多。 把150以内的素数找出来,把素数的值看做硬币的面值,每个硬币的个数即ceil(150/prime[i]),因为再多也没用,最多组成n=150就行了,所以又回到了找硬币问题。用生成函数解之。 代码: #include <iostream> #include <cstdio> # 阅读全文
posted @ 2014-05-14 20:42 whatbeg 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 跟上题是一个思路:http://www.cnblogs.com/whatbeg/p/3728545.html 只不过是上一题的扩展。 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #incl 阅读全文
posted @ 2014-05-14 20:09 whatbeg 阅读(213) 评论(0) 推荐(0) 编辑
摘要: A.解救小QBFS。每次到达一个状态时看是否是在传送阵的一点上,是则传送到另一点即可。代码:#include #include #include #include #include #include using namespace std;#define NA 100007char mp[52][5... 阅读全文
posted @ 2014-05-14 19:52 whatbeg 阅读(527) 评论(0) 推荐(0) 编辑
摘要: B.Cuckoo for Hashing模拟题。代码:#include #include #include #include #include #include #include using namespace std;#define N 50007int a[1004],b[1004];int m... 阅读全文
posted @ 2014-05-14 19:50 whatbeg 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 生成函数题。 题意:有币值1,2,5的硬币若干,问你最小的不能组成的币值为多少。 解法:写出生成函数: 然后求每项的系数即可。 因为三种硬币最多1000枚,1*1000+2*1000+5*1000=8000,那么多项式乘积的最高次数为8000 用c保存累计相乘各项的系数,tc保存c和当前项相乘的系数 阅读全文
posted @ 2014-05-14 19:45 whatbeg 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 一直想用诸如node k = node(args1,args2...argsN)的方式来初始化一个结构体,可以简化很大一部分代码,开始不知道怎么写,后来问人家,总结出一套代码如下:struct Point{ int x,y; Point(int _x_,int _y_) { ... 阅读全文
posted @ 2014-05-07 18:51 whatbeg 阅读(1347) 评论(0) 推荐(0) 编辑
摘要: 这题明明是一个简单的类似约瑟夫环的问题,但是由于细节问题迟迟不能得到正确结果,结果比赛完几分钟才改对。。耻辱。代码:#include #include #include #include #include #define ll long longusing namespace std;#define... 阅读全文
posted @ 2014-05-05 21:59 whatbeg 阅读(303) 评论(2) 推荐(0) 编辑
摘要: A.Planting Trees排序+模拟常识问题,将耗时排一个序,时间长的先种,每次判断更新最后一天的时间。代码:#include #include #include #include #include #define Mod 1000000007#define INT 2147483647#de... 阅读全文
posted @ 2014-05-04 22:48 whatbeg 阅读(425) 评论(2) 推荐(1) 编辑
摘要: A.Islands这种联通块的问题一看就知道是并查集的思想。做法:从高水位到低水位依序进行操作,这样每次都有新的块浮出水面,可以在前面的基础上进行合并集合的操作。给每个位置分配一个数字,方便合并集合。同时将这些数字也排一个序,降低枚举的复杂度。合并集合时向四周查询浮出水面但是没有合并到同一集合的点进... 阅读全文
posted @ 2014-05-02 19:35 whatbeg 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 这章演示了一些最基本的Django开发动态网页的实例,由于版本不一样,我用的是Django 1.,6.3,有些地方按书上的做是不行的,所以又改了一些,写出来让大家参考。这是一个用python写的一个显示当前时间的网页。1.开始一个项目.在命令行中(指定要保存项目代码的盘或文件夹下)输入 python... 阅读全文
posted @ 2014-04-29 11:07 whatbeg 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 背包问题。思路:如果m=5: 求出背包容量为m-5,买前n-1样便宜的菜(排个序)的最大价值(即最大消费,即消费完后剩余值最接近5)最后减去最大的那个菜的价格,就得到最小的余额。代码:#include #include #include #include #include using namespa... 阅读全文
posted @ 2014-04-27 15:17 whatbeg 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 这题有些巧妙,看了别人的题解才知道做的。因为按常规思路的话,背包容量为浮点数,,不好存储,且不能直接相加,所以换一种思路,将背包容量与价值互换,即令各银行总值为背包容量,逃跑概率(1-P)为价值,即转化为01背包问题。此时dp[v]表示抢劫到v块钱成功逃跑的概率,概率相乘。最后从大到小枚举v,找出概... 阅读全文
posted @ 2014-04-27 14:49 whatbeg 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 01背包的变形。先算出硬币面值的总和,然后此题变成求背包容量为V=sum/2时,能装的最多的硬币,然后将剩余的面值和它相减取一个绝对值就是最小的差值。代码:#include #include #include #include #include using namespace std;#define... 阅读全文
posted @ 2014-04-27 13:34 whatbeg 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 这种01背包的裸题,本来是不想写解题报告的。但是鉴于还没写过背包的解题报告。于是来一发。这个真的是裸的01背包。代码:#include #include using namespace std;#define N 1007int c[N],w[N],dp[N];int main(){ int ... 阅读全文
posted @ 2014-04-27 11:13 whatbeg 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题意:给定两个NxN的棋盘,每个棋盘都有一个‘车’的摆放状态,问进行若干次交换,能否使棋盘1变为棋盘2.交换规则:每次选两个‘车’,坐标分别为(r1,c1),(r2,c2),如果r1c2,则可以将两个点分别移到(r1,c2),(r2,c1)。做法:BFS,从状态Y1广搜,每次选两行r1,r2(r1#... 阅读全文
posted @ 2014-04-25 14:06 whatbeg 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 很多时候,我们需要对List进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序方法2.用built-in函数sorted进行排序(从2.4开始)这两种方法使用起来差不多,以第一种为例进行讲解:从Python2.4开始,sort方法有了三个可... 阅读全文
posted @ 2014-04-23 21:23 whatbeg 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 问题:对于一颗线段树,每次询问[L,R],求此区间中任意一段连续序列,此连续序列和最大。解法:每个节点维护4个值:max:此区间内的最大连续和sum:该节点以下的节点值得总和lmax:此区间的从左端开始的最大连续和rmax:此区间的从右端开始的最大连续和合并区间时,该区间的最大连续和为:max(左子... 阅读全文
posted @ 2014-04-21 19:16 whatbeg 阅读(1599) 评论(0) 推荐(1) 编辑
摘要: Python中的strip用于去除字符串的首尾字符串,同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符。这三个函数都可传入一个参数,指定要去除的首尾字符。需要注意的是,传入的是一个字符数组,编译器去除两端所有相应的字符,直到没有匹配的字符,比如:theString ='saaaay yes no yaaaass'printtheString.strip('say')theString依次被去除首尾在['s','a','y']数组内的字符,直到字符在不数组内。所以,输出的结果为:yes no比较简 阅读全文
posted @ 2014-04-13 11:59 whatbeg 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 第三章3-10 交换异常处理方式代码:#makeTextFile.py#!/usr/bin/env python'makeTextFile.py'import osls = os.linesep#get File namewhile True: fname = raw_input("Enter... 阅读全文
posted @ 2014-04-13 11:13 whatbeg 阅读(733) 评论(0) 推荐(0) 编辑
摘要: Chapter 3:例3-1 makeTextFile.py#!/usr/bin/env python'makeTextFile.py'import osls = os.linesep#get File namewhile True: fname = raw_input("Enter file name: ") if os.path.exists(fname): print "ERROR: '%s' already exists" % fname else: break#get file contents linesall 阅读全文
posted @ 2014-04-12 23:47 whatbeg 阅读(1127) 评论(0) 推荐(0) 编辑
摘要: 实际上是一个扩展维度的矩形嵌套问题。一个物体能嵌入另一个物体中,当且仅当这个物体的所有维度的长度都小于另外一个(本题是小于等于),又因为可以旋转等变换,所以干脆将每个箱子的边从小到大排序,以便于判断是否能够嵌套。然后将箱子按第一维度从小到大排序,然后就是求一个“严格上升子序列”了。代码:#include #include #include #include #include using namespace std;#define N 47struct Box{ int w[12]; int ind;}box[34];int dp[N],little[N],ans[N];int cm... 阅读全文
posted @ 2014-04-12 20:53 whatbeg 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题意:n个士兵站成一排,求去掉最少的人数,使剩下的这排士兵的身高形成“峰形”分布,即求前面部分的LIS加上后面部分的LDS的最大值。做法:分别求出LIS和LDS,枚举中点,求LIS+LDS的最大值。。注意一点,有可能最中间的值重复,也有可能不重复,所以要考虑这两种情况:(假设中点为K)1)不重复的情况,求LIS(K) + LDS(K+1)的最大值2)重复的情况,这时K既包含在LIS当中,也包含在LDS中,计算了两次,最终结果要减掉1复杂度:O(n^2)代码:#include #include using namespace std;#define N 1007int dpi[N],dpd[N] 阅读全文
posted @ 2014-04-12 17:51 whatbeg 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 最长公共子序列,经典问题。算是我的DP开场题吧。dp[i][j]表示到s1的i位置,s2的j位置为止,前面最长公共子序列的长度。状态转移:dp[i][j] = 0 (i == 0 || j == 0)dp[i][j] = dp[i-1][j-1] + 1 (s1[i] == s2[j]) (此字符相等,说明此时最长公共子序列的长度等于他们之前的LCS(简称)长度加上这个相等的字符(长度为1))dp[i][j] = max(dp[i-1][j],dp[i][j-1]) (s1[i] != s2[j]) (此字符不相等,说明此时LCS为i... 阅读全文
posted @ 2014-04-07 20:30 whatbeg 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 最近在看《鲜活的数据:数据可视化指南》,学习一些数据可视化与数据分析的技术,本例是该书第一章的一个例子衍伸而来。实例内容:从www.wunderground.com收集美国纽约州布法罗市(水牛城)2014年3月份每天最高气温,并导入Excel或WPS表格,制做成折线图。工具准备:安装好的Python... 阅读全文
posted @ 2014-04-04 13:10 whatbeg 阅读(5970) 评论(0) 推荐(2) 编辑
摘要: 题意:求一幅无向图的最小生成树与最小生成树,不存在输出-1解法:用Kruskal求最小生成树,标记用过的边。求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就是次小的生成树。可以证明:最小生成树与次小生成树之间仅有一条边不同。不过这样复杂度有点高,可达O(m^... 阅读全文
posted @ 2014-04-03 20:36 whatbeg 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 由于次短路一定存在,则可知次短路一定是最短路中某一条边不走,然后回到最短路,而且只是一条边,两条边以上不走的话,就一定不会是次短路了(即以边换边才能使最小)。所以可以枚举每一条边,算出从起点到这条边起点的最短距离,以及从终点到这条边终点的最短距离,再加上这条边的权值,看是否是次短路(比最短路总权值大... 阅读全文
posted @ 2014-04-03 09:44 whatbeg 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 转自https://www.byvoid.com/blog/2-sp-mst posted by byvoid[次短路径]次短路径可以看作是k短路径问题的一种特殊情况,求k短路径有Yen算法等较为复杂的方法,对于次短路径,可以有更为简易的方法。下面介绍一种求两个顶点之间次短路径的解法。我们要对一个有... 阅读全文
posted @ 2014-04-02 20:25 whatbeg 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 今天看了一下《计算机网络:自顶向下方法》,也就是计算机网络的教材的应用层一章,决定实现以下后面的Java C/S应用程序的例子,用来演示TCP和UDP套接字编程。程序流程如下:1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接字将该行发送到服务器。2.服务器从其连接套接字读取一行字符。3.服务器将该行字符转换成大写。4.服务器将修改后的字符串(行)通过连接套接字再发回给客户机。5.客户机从其套接字中读取修改后的行,然后将该行在其标准输出(监视器)上打印出来。下面是应用程序客户机端的代码:TCPClient.javaimport java.io.*;import java.net.*; 阅读全文
posted @ 2014-04-02 20:10 whatbeg 阅读(1514) 评论(2) 推荐(1) 编辑
摘要: 这题可以用次小生成树解,这里用Kruskal算法来做。每条边除维护u,v,w外,还维护:used:表示这条边是否加过eq:表示有没有与这条边相等的边del:删除标记,以便删边之用如果对于一个最小生成树的的边A,有一条与之权值相等的边B,则考虑把A删掉,再求一次最小生成树,看求出的总权值是否与前一个最... 阅读全文
posted @ 2014-03-30 12:44 whatbeg 阅读(337) 评论(0) 推荐(0) 编辑
摘要: Constructing RoadsTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5227Accepted Submission(s): 1896... 阅读全文
posted @ 2014-03-26 17:27 whatbeg 阅读(246) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 下一页