摘要:
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834思路:dp[i][j]表示当前节点在i,分数为j的路径条数,从题中可以得出,要在N处的分数为K,那么那些到达N的路径上的节点的val必然是K的因子,由于K的范围为[1, 1000000],二维数组开不下,那么我们可以用一个数组来保留K的所有因子,在用一个数组来保留这个因子的值,这样,二维数组就可开了,于是,就是记忆化搜索了! 1 /***************************************************************** 阅读全文
摘要:
首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然。那么如何对单调队列进行操作呢?是这样的:对于单调队列而言,队首和队尾都可以进行出队操作,但只有队尾能够进行入队操作。至于如何来维护单调队列,这里以单调递增队列为例:1、如果队列的长度是一定的,首先判断队首元素是否在规定范围内,如果不再,则队首指针向后移动。(至于如何来判断是否在制定范围内,一般而言,我们可以给每个元素设定一个入队的序号,这样就能够知道每个元素原来的顺序了)。2、每次加入元素是,如果元素小于队尾元素且队列非空,则减小尾指针,队尾元素出队列,直到保持队 阅读全文
摘要:
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4257dp[state]表示当前状态为state时的所能获得的最大值,这里我用1表示气球存在,0表示消失,由于状态转移是从有到无,于是最外层循环于是从大到小,这与一般的状态要所略有区别。方程为:dp[s ^ (1 File Name: zoj3471.cpp 3 > Author: syhjh 4 > Created Time: 2014年03月09日 星期日 18时19分25秒 5 *******************************... 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001由于本题中一个点最多能够访问2次,由此可以联想到3进制;visited[i][j]表示在状态i下在点j已经做过的次数,dp[i][j]表示在状态i下到达点j走过的最小的路程,于是我们可以通过预处理得到visited[i][j]数组,然后就是一般的状态转移。 1 /************************************************************************* 2 > File Name: hdu3001.cpp 3 > Auth.. 阅读全文
摘要:
http://poj.org/problem?id=1932spfa求最长路,判断dist[n] > 0,需要注意的是有正环存在,如果有环存在,那么就要判断这个环上的某一点是否能够到达n点,如果能,就说明可以到达,否则,就说明不能。 1 /************************************************************************* 2 > File Name: poj1932.cpp 3 > Author: syhjh 4 > Created Time: 2014年03月04日 星期二 16时54分43秒 5 **. 阅读全文
摘要:
题目链接:http://poj.org/problem?id=3895思想很简单,就是dfs,并且用一个数组记录到该节点所走过的长度,然后如果遇到已经走过的,就说明存在环了, 更新一下ans。 1 /************************************************************************* 2 > File Name: poj3895.cpp 3 > Author: syhjh 4 > Created Time: 2014年03月02日 星期日 21时06分39秒 5 **********************... 阅读全文
摘要:
1:去官网下载最新版的eclipse for linux;2:cd /usr/local 用命令 sudo mkdir eclipse 建立一个Eclipse的目录3:将下载的文件copy到eclipse目录中 ,进入存放下载文件的目录,然后sudo cp eclipse*.tar.gz /usr/local/eclipse4:cd /usr/local/eclipse下 用命令 tar -zxvf eclipse*.tar.gz 解压文件5:sudo gedit /usr/share/applications/eclipse.desktop建立桌面图标快捷方式并且在打开的文件中加入以下几句话 阅读全文
摘要:
更新中...http://poj.org/problem?id=1037dp[i][j][0]表示序列长度为i,以j开始并且前两位下降的合法序列数目;dp[i][j][1]表示序列长度为i, 以j开始并且前两位上升的合法序列数目;于是我们可以得到递推方程式:dp[i][j][0] += dp[i-1][k][1] ( 1 dp[i][j]表示第i个数字到第j个数字经过运算后的最小值以及最大值,然后就需要枚举断开的位置了,并且由于是环,需要取模处理,最后就是记忆化搜索了,需要注意的就是两个最小值相乘也有可能成为最大值。http://paste.ubuntu.com/6960005/http:/. 阅读全文
摘要:
题目链接:http://lightoj.com/volume_showproblem.php?problem=1429思路:这道题还是比较麻烦的,对于求有向图的可相交的最小路径覆盖,首先要解决成环问题,可以先染色缩点重建图,然后就是如何来处理这个路径可以相交这个问题,这里可以用bfs求出任意两点之间是否可达,如果可达,就连边,然后就是HK算法求最大匹配了,最小路径覆盖 = 顶点数 - 最大匹配。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using ... 阅读全文
摘要:
题目链接:http://lightoj.com/volume_showproblem.php?problem=1406思路:首先可以预处理出在每个顶点的状态的合法状态vis[u][state], 然后标记那些合法状态mark[state]。最后就是记忆化搜索了,对于当前状态state,我们有res = min(res, 1 + Solve(state ^ substate)), 其中substate为state的子状态,并且substate = (substate - 1) & state.那么最终就是要求Solve((1 2 #include 3 #include 4 #includ 阅读全文