- 博客(43)
- 资源 (13)
- 收藏
- 关注
原创 nyoj32
#include #include #include using namespace std;int a[10];void fun(int n,int r){ int i; for(i=n;i>0;--i)//每个递归有这个循环!! { // printf("%d\t%d\n",i,r); a[r]=i; if(
2013-08-30 16:50:52 976
原创 图的存储结构-邻接表-边集数组-前向星
1.【邻接表】 是一种图的存储结构,适用于点多边少的稀疏图。缺点:若要删除(V0,V2)这条边,就需要对邻接表结构中边表的两个结点进行删除操作。2.【边集数组】边集数组是由两个一维数组构成,一个是存储顶点的信息,另一个是存储边的信息,这个边数组每个数据元素由一条边的起点下标(begin),终点下标(end)和权(weight)组成。3.【前向星】
2013-08-29 16:18:52 4167
原创 树状数组入门
树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏
2013-08-28 22:55:44 636
原创 离散化+树状数组 求逆序数POJ2299
离散化是一种常用的技巧,有时数据范围太大,可以用来放缩到我们能处理的范围 因为其中需排序的数的范围0---999 999 999;显然数组不肯能这么大;而N的最大范围是500 000;故给出的数一定可以与1.。。。N建立一个一一映射;这里用一个结构体struct Node { int v,order; }p[510000];和一个数组a[510000];其中v就是
2013-08-27 23:38:36 1053
原创 POJ2513Colored Sticks一笔画问题
题意:给定一些木棒(25w根),木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。 用到的知识点:欧拉通路+并查集+trie树。首先我们可以分析问题,这是一个一笔画问题,就是询问是否存在欧拉通路。(不是欧拉回路)
2013-08-27 15:23:05 857
原创 求最长单调递增【等差】子序列
Boring TimTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 7 Solved: 3[Submit][STATUS][Web Board]DescriptionTim is study in Children of Primary School of Hunan Agricultural University. In
2013-08-26 16:40:33 1413
原创 Hdu2639_Bone-Collector-II
这道题求的是:01背包的第K优解,意思是,容量为V的背包,能装的物品价值由大到小排序,第K大的是?#include #include #include using namespace std;#define M 102struct shop{ int cost[M],value[M];}p;int dp[1001][35],N,V,K;/*** 01背包求第K优解,意思
2013-08-24 16:23:39 697
原创 Hdu2602_Bone-Collector
这道题是最基础的01背包问题;解法如下:#include #include #include #include using namespace std;#define M 1002struct shop{ int cost[M]; int value[M];}p;int n,dp[1002],v;void zeroOne_pcak(){ int i
2013-08-24 16:20:46 650
原创 poj1160post_office经典dp
[题目大意]: 用数轴描述一条高速公路,有V个村庄,每一个村庄坐落在数轴的某个点上,需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离和最小。[题目分析]:经典DP昨天做了一个邮局个数为1个 的题,详见博文http://blog.csdn.net/sunquana/article/details/10161185证明了当邮局个数为1 时,邮局应该建在最中
2013-08-23 00:10:27 813
原创 优先队列priority_queue(重载)
这个是算法可以 求最小huffman树#include #include #include #include using namespace std;struct Comp{ bool operator()(const int &a,const int &b) { return a>b; }};int main(){ int i,n,num;
2013-08-22 01:05:57 871
原创 nyoj-矩形嵌套
#include #include #include #include using namespace std;struct rectangle{ int a,b; //a为长,b为宽a,a>=b; bool operator <(const rectangle& m)const{ //从小到大排列,长小的放在前面,(如果长相等,那么以宽短的放在前面)
2013-08-22 00:03:14 926
原创 nyoj7街区最短路径问题
街区最短路径问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述一个街区有很多住户,街区的街道只能为东西、南北两种方向。住户只可以沿着街道行走。各个街道之间的间隔相等。用(x,y)来表示住户坐在的街区。例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。现在要建一个邮局,使得各个住户到
2013-08-21 20:13:29 1751
原创 三维凸包模板
三维凸包模板#include#include#include#include#include#includeusing namespace std;const int MAXN=505;const double EPS=1e-8;struct Point{ double x,y,z; Point(){} Point(doub
2013-08-19 23:19:13 1144 1
原创 Hdu2036-求多边形面积
求多边形面积,以此作为模板:#include #include using namespace std;struct point{ int x,y; point operator -(const point &b) { return (point){this->x - b.x,this->y - b.y}; }}p[102];int crossmul(po
2013-08-19 14:51:31 750
原创 Hdu2112_HDU Today_(dijskual最短路)
Hdu2112 HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10910 Accepted Submissi
2013-08-18 11:02:29 967
原创 Hdu1422 重温世界杯(模拟)
Hdu 1422 重温世界杯Problem Description世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们的债,捧起了大力神杯,成就了4星意大利.世界杯虽然结束了,但是这界世界杯给我们还是留下许多值得回忆的东西.比如我们听到了黄名嘴的3分钟激情解说,我们懂得了原来可以向同一个人出示3张黄牌,我们还看到了齐达内的头不仅能顶球还能顶人…………介于有这么多的精彩,
2013-08-18 08:41:19 787
原创 整数划分解报告(背包求解)
1.问题描述: 给定一个正整数N和K 1.> 将n划分成若干正整数之和的划分数。 2.> 将n划分成k个正整数之和的划分数。 3.> 将n划分成最大数不超过k的划分数。 4.> 将n划分成若干奇正整数之和的划分数。 5.> 将n划分成若干不同整数之和的划分数。 2.问题分类:总的来说这些都
2013-08-17 17:20:39 1080
原创 网络流算法模板
#include #include #include #include using namespace std;#define maxn 202#define INF 0x7fffffffint flow[maxn][maxn];int s,e,n;int fold_folkerson(){ int father[maxn]; int visted[maxn]
2013-08-16 11:21:49 849
原创 HDU 3790 最短路径问题 (双重权值) dp
最短路径问题Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 19 Accepted Submission(s) : 5Problem Description给你n个点,m条无向边,每条边都有长度d和花费p,给
2013-08-14 17:10:21 1045
原创 欧拉路/回路_并查集 NYOJ 42 一笔画问题
NYOJ 42 一笔画问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。输入第一行只有一个正整数N(N每组测试数据的第一行有两个正整数P,Q(P随后的Q
2013-08-14 10:14:55 1013
原创 Hdu1254-推箱子(经典的推箱子游戏)-bfs
#include #include #include #include using namespace std;#define INF 1<<30struct point{ int x,y; int step; bool operator==(const point&b)const{ if(this->x==b.x&&this->y==b.y) re
2013-08-14 00:40:22 2015 2
原创 Hdu-2069_Coin Change
Hdu-2069_Coin Change 题意:有若干5种面值的硬币,分别是1分,5分,10分,20分,50分。求现在表示钱数n(n乍一看是母函数的题,但是后面说,每一种方案 硬币数目不超过100;我们可以看出,该题就是指定因子的整数划分。用动态规划,dp[j][k]=dp[j][k] + dp[j-1][k-b[i]];注意:测试用例有n=0的情况,正确的结果应该输出1。
2013-08-13 16:47:41 859
原创 HDU1016-素数环
HDU1016-素数环 暴力深搜#include #include #include #include using namespace std;int prime[42]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1};int vis[2
2013-08-13 11:40:57 808
原创 n皇后问题--递归回溯
方法一:递归回溯;#include #include #include using namespace std;int n,a[20],sum;void dfs(int x){ int i; if(x>n) { sum++; return ; } for(i=1;i<=n;i++) {
2013-08-13 11:07:33 1481
原创 hdu1175- 连连看BFS
Hdu 1175 连连看Problem Description“连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。不好意思,由于我以前没有玩过连连看,咨询了同学的意见,连线不能从外面绕过去的,但
2013-08-12 23:18:10 780
原创 uva10590 整数拆分-大整数加法
#include#include#include#include#include#includeusing namespace std;class bign{public: int a[10]; int leng; void print(); bign () {leng=0;memset(a,0,sizeof(a));} bign operator +(bign &b
2013-08-12 15:06:50 1523 2
原创 博弈类题目小结(HDU,POJ,ZOJ)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove首先当然要献上一些非常好的学习资料:基础博弈的小结:http://blog.csdn.net/acm_cxlove/article/details/7854530经典翻硬币游戏小结:http://blog.csd
2013-08-11 11:04:45 856
原创 hdu1851_A Simple Game博弈—SG函数
hdu1851_A Simple Game 题意 :n堆石子,分别有M1,M2,·······,Mn个石子,各堆分别最多取L1,L2,·····Ln个石头,两个人分别取,一次只能从一堆中取,取走最后一个石子的人获胜。后选的人获胜输出Yes,否则输出No。 思路:先看一堆石子,然后求该堆的sg函数,最后由SG定理可知 将每堆石子的SG函数值异或,即可得解。
2013-08-11 10:18:48 773
原创 hdu2546饭卡-01背包
当卡上的金额大于等于5时,可以用5元去买任意价格的菜,所以当然是用这5元去买最贵的菜了,剩下的问题就是,求剩下的m-5元能买到的最高的价值总量。
2013-08-11 08:39:08 837
原创 java 处理大数据
import java.math.*;import java.util.*;public class Main{ public static void main(String args[]) { BigInteger a[]=new BigInteger [1002] ; a[1]=new BigInteger("1"); a
2013-08-10 11:51:51 1010
原创 poj3233 - Matrix Power Series-矩阵快速幂
题目大意:给你A矩阵,A矩阵是n*n的一个矩阵,现在要你求S = A + A^2 + A^3 + … + A^k.那么s一定也是一个N*N的矩阵,最后要你输出s,并且s的每一个元素对m取余数。解法一:【题解】:以下是matrix67的题解:这道题两次二分,相当经典。首先我们知道,A^i可以二分求出。然后我们需要对整个题目的数据规模k进行二分。比如,当k=6时,有:A + A
2013-08-09 22:43:17 888
原创 poj 2369-Permutations置换及其应用
2369-Permutations 置换及其应用 题意就是#include#include#include#includeusing namespace std;#define M 1002int per[M];bool vis[M];int ans;int dfs(int x,int cnt){ vis[x]=1; if(vis[p
2013-08-09 11:38:51 910
原创 高斯消元-解线性方程(模板)
#include#include#include#include#includeusing namespace std;const int MAXN=50;int a[MAXN][MAXN];//增广矩阵int x[MAXN];//解集bool free_x[MAXN];//标记是否是不确定的变元/*void Debug(void){ int i, j
2013-08-09 09:36:18 987
原创 hdu1527-威佐夫博弈(Wythoff Game)
hdu1527-威佐夫博弈 Problem Description有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
2013-08-08 19:50:07 1005
原创 博弈论的一些基础知识(参考网络资料,学习总结,很好,分享并保存)
原作者地址:http://blog.csdn.net/wche1990/article/details/6944696(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,
2013-08-08 19:13:14 836
原创 Hdu_1850 Nim博弈_求初始时有多少种走法取胜
hdu 1850 Being a Good Boy in Spring Festival 问题:有n堆石子,每堆石子有ai个(i(1“先手的人如果想赢,第一步有几种选择呢?”Input输入数据包含多个测试用例,每个测试用例占2行,首先一行包含一个整数M(1 Output如果先手的人能赢,请输出他第一步可行的方案数,否则请输出0,每个实例的输
2013-08-08 19:00:28 1016
原创 HDU 2147博弈-找规律
kiki's gameTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/1000 K (Java/Others)Total Submission(s): 3808 Accepted Submission(s): 2210Problem DescriptionRecently kiki has nothi
2013-08-08 11:28:04 811
转载 真正理解了扩展欧几里得定理
首先、扩展欧几里得定理:对于两个不全为0的整数a、b,必存在一组解x,y,使得ax+by==gcd(a,b);原作者article address:http://www.cnblogs.com/ka200812/archive/2011/09/02/2164404.htmlint gcd(int a,int b){ int t,d; if(b==0) {
2013-08-07 10:28:40 963
原创 奇数阶幻方 nyoj734
奇数阶幻方奇数阶魔方时间限制:1000 ms | 内存限制:65535 KB难度:3描述一个 n 阶方阵的元素是1,2,...,n^2,它的每行,每列和2条对角线上元素的和相等,这样的方阵叫魔方。n为奇数时我们有1种构造方法,叫做“右上方” ,例如下面给出n=3,5,7时的魔方.38 1 63 5 74 9 25
2013-08-06 17:29:50 873
原创 c++运算符重载
下面我们来具体学习如何使用c++重载; 重载函数的格式:返回值类型> operator 要重载的运算符> (const 结构体名)const{ . . . }#include #include #include using namespace std;struct Comp{ int a,b; //第一个const 如果传入参数不会被改变最好加上c
2013-08-06 17:21:28 833
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人