08 2013 档案

摘要:把i 和 j写错了找得人都要抓狂了。。题意:给出n个字符串,其中任意两个字符串(包括同一字符串)可以进行互相拼接起来,例如s1="abcd"……>s2="dcab",表示将s1拼接在s2后面,所得的值就是将s1反转得"dcba",该字符串与s2同有的前缀为"dc",所以值就是2.现在求解在n个字符串给定的情况下,将这些字符串拼接起来所得到的最大值.关键是建图,之后运用KM算法,ok! 1 #include 2 #include 3 #include 4 int mark[1002],n; 5 char ss[ 阅读全文
posted @ 2013-08-17 18:15 galaxy77 阅读(354) 评论(0) 推荐(0)
摘要:#include#include#includeint mark[1002],link[1002],n;char s[202][1020];int g[202][202],s[202],t[202],lx[202],ly[202],link[202];char temp[1002];int min(int x,int y){ return x>y?y:x;}void rev(int x,int len){ int i,j; for(i=0,j=len-1;i=g[i][j]&&!t[i]) { t[i]=1; if(l... 阅读全文
posted @ 2013-08-17 11:50 galaxy77 阅读(240) 评论(0) 推荐(0)
摘要:向量的旋转实际做题中我们可能会遇到很多有关及计算几何的问题,其中有一类问题就是向量的旋转问题,下面我们来具体探讨一下有关旋转的问题。首先我们先把问题简化一下,我们先研究一个点绕另一个点旋转一定角度的问题。已知A点坐标(x1,y1),B点坐标(x2,y2),我们需要求得A点绕着B点旋转θ度后的位置。A点绕B点旋转θ角度后得到的点,问题是我们要如何才能得到A'点的坐标。(向逆时针方向旋转角度正,反之为负)研究一个点绕另一个点旋转的问题,我们可以先简化为一个点绕原点旋转的问题,这样比较方便我们的研究。之后我们可以将结论推广到一般的形式上。令B是原点,我们先以A点向逆时针旋转为例,我们过A&# 阅读全文
posted @ 2013-08-14 18:44 galaxy77 阅读(3546) 评论(0) 推荐(0)
摘要:题意找 一个图是否 任意两点都可以从 u 到v 或者 从v到u 注意是或者 所以不是一个简单的强连通图思路 : 先找出这个图的 强连通分量 在强连通分量里任意两点都是可以互相到达的 再看 缩点后 在拓扑排序时是否入度为0 的点一直会《=1 若中间有一步 发现入度为0 的点>=2 就直接可以判断这两个点热河一个点都到达不了对方 应该输出 no代码有点长 再次提醒自己 细心!#include#include#include#includeusing namespace std;int pre[1002],low[1002],c,sccnum[1002],degree[1002],scc,n; 阅读全文
posted @ 2013-08-14 18:12 galaxy77 阅读(190) 评论(0) 推荐(0)
摘要:一 : 求最大匹配问题 (匈牙利算法)给一个二分图 找一个边数最大的匹配 使得任意两条选中的边 均没有公共点先贴一个匈牙利算法的模板:hdu 2063 过山车 http://acm.hdu.edu.cn/showproblem.php?pid=2063题意:有M个女生,N个男生,他们要玩过山车又必须是一男一女一起,女生... 阅读全文
posted @ 2013-08-13 12:11 galaxy77 阅读(351) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1659题意: 输入每个点的度 要用邻接矩阵输出可能的图havel 定理#include#include#include#includeusing namespace std;struct node{int x;int w;}no[10000];int p[1002][1002],n;int cmp(node a,node b){ return a.w>b.w;}int solve(){ int j,i,k; for(i=0;in-i-1) return -1; for(j=i+1;j<n... 阅读全文
posted @ 2013-08-05 12:06 galaxy77 阅读(234) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3249题意:给出一个有向图图 每点有一个权值 全职有正有负 找从任意一点出发的总权值最大的路径 输出其最大值用spfa 。。 初始把入度为0的点加入队列 因为数值很大 所以要用到longlong 型注意 最后输出maxx 也要是longlong型 一开始没注意到这个 wa很久 搞得人都要抓狂了#include#include#include#include#define INF 1000000000using namespace std;struct E {int to;int next;}edge[2000002];int w[10001 阅读全文
posted @ 2013-08-05 11:58 galaxy77 阅读(244) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=2553#include#include//#include#include#includeusing namespace std;//vector g[1002];struct E{int to;int next;} edge[20000000];int pre[5002],low[5002],lt_num,c,scc_num[5002],scc,out0[5002],n,adj[5002],num,flag;stack s;void add(int a,int b){ edge[num].to=b; edge[num].ne... 阅读全文
posted @ 2013-08-05 11:48 galaxy77 阅读(172) 评论(0) 推荐(0)
摘要:一开始 自己写了个记忆化搜索的代码 结果总是RE 检查了n遍 数组也没开小 估计是 爆栈了 于是我把代码改成了非递归形式的代码里还用到了队列写着写着发现我写的和spfa的思路是一样的嘛 不过还是超时了 又检查了n遍发现 我把结束的条件看错了 = = |||好吧 再改改完后还是wa !!!啊~~妹的又是 一阵检查 原来 他讲的是绝对值> 0 (>o#include#include#define INF 1000000000using namespace std;struct E {int to;int next;}edge[2000002];int w[100012],adj[100 阅读全文
posted @ 2013-08-02 17:24 galaxy77 阅读(314) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=1236#include#include#include#include#includeusing namespace std;vector g[1002];int pre[1002],low[1002],lt_num,c,scc_num[1002],scc,in0[1002],out0[1002],n,a,b;stack s;void dfs(int u){ int i,v; pre[u]=low[u]=c++; s.push (u); for(i=0;ib?a:b;}int main(){ int i,q;... 阅读全文
posted @ 2013-08-01 22:09 galaxy77 阅读(255) 评论(0) 推荐(0)