spfa算法核心代码

void spfa(){int index,i;while(!Q.empty()){index=Q.front();Q.pop();for(i=0;i<edge[index].size();i++){if(dist[edge[index][i].id]<dist[index]+edge[index][i].fa){ dist[edge[index][i].id]=dist[index]+edge[index][i].fa;//if(index!=mm)//mark[index]=0;flag[edge[index][i].id]++;if(flag[edge[index][i].id]>...
2008-09-02 22:53 | 阅读 7755 次 | 评论 2 条

背包问题的总结

01背包问题; 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是: F[i][v]=max{f[i-1][v],f[i][v-c[i]]+w[i]};f[i-1][v-c[i]]+w[i]表示在第i-1个背包在v-c[i]的容量下的价值+第i件物品的价钱。 在背包问题中,时间为O(NV)没办法优化,但是在空间上是可以优化的。可以...
2008-08-18 19:00 | 阅读 7247 次 | 评论 0 条

[转]n问题皇后构造解法

n*n的棋盘,放n个皇后,互不攻击 一、当n%6 != 2 且 n%6 != 3时,有一个解为: 2,4,6,8,...,n, 1,3,5,7,...,n-1 (n为偶数) 2,4,6,8,...,n-1, 1,3,5,7,...,n (n为奇数) (上面序列第i个数为ai,表示在第i行ai列放一个皇后;... 省略的序列中,相邻两数以2递增。下同)二、当n%6 == 2 或 n%6 == 3时, (当n为偶数,k=n/2;当n为奇数,k=(n-1)/2) k,k+2,k+4,...,n,-2,4,...,k-2,-k+3,k+5,...,n-1,-1,3,5...
2008-04-28 13:49 | 阅读 1926 次 | 评论 0 条

线段树和点树

线段树用于实现动态删除和插入某一线段的操作,进行扩张后可以求一个点在多少个线段上,线段一共有多长,求出线段的覆盖,等操作。 以下是来自http://hi.baidu.com/alpc62/blog/item/469edeca0043e382c8176875.html的blog, 要查看原文可以到他那里去看。 举例说明:已知线段[2,5] [4,6] [0,7];求点2,4,7分别出现了多少次 在[0,7]区间上建立一棵满二叉树:(为了和已知线段区别,用【】表示线段树中的线段) 【...
2008-04-10 16:39 | 阅读 7137 次 | 评论 0 条

面向对象c++——三角形求周长和面积

这几天放假耍了几天,没有ACM题可贴,就只有贴作业了,很水的作品请指教 源代码: /*************************************** c++编程题 定义一个三角形类求三角形面积和周长 keloy 2008.4.7****************************************/#include <iostream>#include <math.h>using namespace std;class Ctriangle ...
2008-04-08 15:18 | 阅读 11239 次 | 评论 0 条

面向对象c++——回文数

用面向对象写的回文数: 请大家指教: #include <iostream>#include <vector>using namespace std;class Panlindrome{ private: vector < char > t; int len; public: void Init_panlindrome() { char temp; this->len=0; while(cin >>temp&amp;&amp;temp!='@') { this->t.push_back(temp); this->len++; ...
2008-03-27 20:02 | 阅读 3906 次 | 评论 3 条
浏览260736次