自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ACdreamer

欢迎关注知乎:https://www.zhihu.com/people/acdreamers/activities

  • 博客(26)
  • 资源 (3)
  • 收藏
  • 关注

原创 Floyd求传递闭包

在用Floyd求传递闭包时如果数据很大时就得用if语句优化,否则会超时,例如下面的第二题就是这样。 题目:变形课#include #include int map[28][28];void Floyd(){ int i,j,k; for(k=0;k<26;k++) for(i=0;i<26;i++)

2013-02-28 15:39:43 3944

原创 匈牙利算法详解

题目:Strategic Game 用vector实现邻接表的匈牙利算法。典型的最小顶点覆盖!最小顶点覆盖=最大匹配(双向图)/2;此题有个小细节,数据较大,要用邻接表,不然会超时! 最小顶点覆盖:选出最少的点,这些点的关联的边都被覆盖最小顶点覆盖等于最大匹配 真正求二分图的最大匹配的题目很少,往往做一些简单的变化:变种1:二分图的最小顶点覆盖 最小顶点覆盖要求

2013-02-28 11:10:49 22817

原创 差分约束系统之Bellman_Ford与Spfa判断负权回路

学习差分约束系统请戳这里。 题目:POJ1364#include #define INF 99999999#define N 105typedef struct{ int s; int e; int v;}node;node edge[N];int dist[N];int index,n;void add(i

2013-02-26 19:34:41 3283 2

原创 最短路径之Spfa算法

题目:宫锁珠帘#include #include #define INF 99999999#define N 105int map[N][N];int dist[N];int visit[N];int q[100*N];int n,m;void Spfa(int s){ int i,head,tail,temp; mems

2013-02-25 18:50:34 1390

原创 RMQ问题(区间求最值)

RMQ的树状数组实现:#include #define N 100005int idx[N];int num[N];int n,m,l,r,i,j;int min(int a,int b){ return a<b? a:b;}int lowbit(int x){ return x&(-x);}void init()

2013-02-23 17:34:52 1152

原创 HDU4259(简单群置换)

题目:Double Dealing#include #include #define LL long longconst int N=1005;int n,k;int a[N][N];bool f[N];int num[N];LL gcd(LL a,LL b){ return b? gcd(b,a%b):a;}int mai

2013-02-18 00:10:59 1563

原创 最短路径之Floyd算法

深度学习Floyd_Warshall算法请戳这里。 模板题:宫锁珠帘#include const int INF=1000010;int n,m;int s,t;int a,b,x;int dist[105][105];int map[105][105];void init(){ int i,j; for(i=1;i<=n

2013-02-17 23:16:14 1426

原创 博弈论初步学习

一.巴什博弈(Bash Game):首先我们来玩一个比较古老的报数游戏。A和B一起报数,每个人每次最少报一个,最多报4个。轮流报数,看谁先报到30.如果不知道巴什博弈的可能会觉得这个是个有运气成分的问题,但是如果知道的人一定知道怎样一定可以赢。比如A先报数的话,那么B一定可以赢(这里假定B知道怎么正确的报数)B可以这样报数,每次报5-k(A)个数,其中k(A)是A报数的个数

2013-02-17 21:40:36 1778

原创 斐波那契博弈

题目:取石子游戏hdu2516 234(-1)                解释4 - 1 = 3 , n==3为必败点,所以4为必胜点56(-1)7(-2)89(-1)10(-2)11(-3)12(-1)  13首先 2个石头肯定是必败点,3个石头也是必败点,然后开始看后面,4个石头时,可以去一个使对手到必败点,而对手在这种情

2013-02-17 20:28:45 4048

原创 HDU1403(后缀数组--最长公共子串)

题目:Longest Common Substring 看代码注释请戳这里题意:判断给定的两个串中,最长的公共串。思路:将它们合并为一个串,然后利用后缀数组求解。首先是二倍增算法:时间复杂度为O(n*log(n))#include #include #define max 1000010int wa[max],wb[max],wv[max],ws[max];

2013-02-16 22:45:07 3167 3

原创 离散对数(Baby Step Giant Step)

扩展Baby Step Giant Step深入学习请戳这里 题目:Clever Y 求解A^x = B (mod C) 中 0 本算法的安全性更高。#include#include#include#include#define CC(m ,what) memset(m , what , sizeof(m))typedef long long L

2013-02-12 20:04:27 4863

原创 次小生成树

次小生成树:在求最小生成树时,用数组path[i][j]来表示MST中i到j最大边权。求完后,直接枚举所有不在MST中的边,把它加入到MST中构成一棵新的树,且该树有环,此环是由刚加入的边(I,j)造成的,所以可以通过删除path[i][j]即可得到新的一颗树,且所有的该类树中必有一棵为次小生成树。比如如图所示:G,H不是MST上的边,通过加入边(G,H),得到一个环(B,

2013-02-12 15:03:17 1283

原创 POJ2528 线段树+离散化+hash(成段更新)

题目:Mayor's posters 题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:这题数据范围很大,直接搞超时+超内存,需要离散化:离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2000],[1990,2012] 我们用不到[-∞,999][1001,1989][1991,1999][2001,2011][2013,+∞]这些值,所以我只

2013-02-10 21:09:52 1573

原创 线段树POJ3468(成段更新,区间求和)

题目:A Simple Problem with Integers#include #define N 111111#define LL long long#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1LL add[N<<2];LL sum[N<<2];void PushUP(int rt){

2013-02-10 19:50:54 9115 2

原创 线段树HDU1698(成段更新)

题目:Just a Hook 延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候。#include #define N 111111#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int n;int col[N<<2];int sum

2013-02-10 19:08:31 1338

原创 POJ2886线段树 Joseph游戏(单点更新)

题目:Who Gets the Most Candies? 题意:1.n个人进行Joseph游戏,游戏共p轮(p为 思路:用相对坐标来处理,例如这一轮出局的是p,下一个要+m,则p出局时p+1就变成了p(因为是相对坐标),则下一个人应该是p+m-1,再注意循环和m的正负的处理,不要忘了取模。2.求解原始序号时维护一棵线段树,类似上一题插队的方法建树,每个节点为该区间段的人数

2013-02-09 16:56:49 3409

原创 POJ2828线段树 插队(单点更新)

题目:Buy Tickets#include #define N 200010#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int tree[N<<2];int pos[N],val[N],ans[N];int id;void Build(int l,int r,int rt){ tree[

2013-02-09 16:22:12 1013

原创 线段树空间容纳且最上边的数(单点更新)

题目:HDU2795 Billboard#include #define maxn 222222#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int w,h,n;int MAX[maxn<<2];int max(int a,int b){ return a>b? a:b;}void

2013-02-09 14:40:36 977

原创 线段树求逆序数(单点更新)

题目:HDU1394 Minimum Inversion Number 若abcde...的逆序数为k,那么bcde...a的逆序数是多少?我们假设abcde...中小于a的个数为t , 那么大于a的个数就是n-t-1,当把a移动最右位时,原来比a大的现在都成了a的逆序对,即逆序数增加n-t-1,但是原来比a小的构成逆序对的数,现在都变成了顺序,因此逆序对减少t ,所以新序列的逆序数为

2013-02-09 11:53:28 3464

原创 线段树求区间最大值RMQ(单点更新)

题目:HDU1754#include #define maxn 222222#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int MAX[maxn<<2];int max(int a,int b){ return a>b? a:b;}void PushUP(int rt){

2013-02-09 00:19:48 3011

原创 平面分割问题

(1) n条直线最多分平面问题      题目大致如:n条直线,最多可以把平面分为多少个区域。      析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2

2013-02-07 23:33:33 2089

原创 NEFU394 素数价值

题目:素数价值 本题可以直接用结论,或者用DP做。。。哥德巴赫猜想:任何大于偶数都等于两个素数和;分类:大于2的偶数,价值为2           奇数:若是质数价值为1,若是等于两个质数之积价值是2,若是等于2加上某个质数价值等于2,其他价值等于3#include #include #define N 50003bool prime[N];int va

2013-02-07 00:13:40 1145

原创 HDU2608 0 or 1

题目:0 or 1 分析:  首先看T(n),通过找规律可以发现:(看了别人的解题报告才知道这部分是怎么推出来的) 仅当n为1,2,4,8,9,16,18,25,32,36,49,50,64,72,81,98,100…………的时候,T(n)%2==1; 可以发现,if(n%(i*i)==0 || n%(i*i*2)==0) => T(n)%2==1; 然

2013-02-06 22:50:43 1426

原创 特殊方法求1~n的和

题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。       分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制。但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度。       通常求1+2+…+n 除了用公式n(n+1)/2之外,

2013-02-05 23:07:08 1290 1

原创 数论经典题目

题目:Special Prime 推导:n^b + p*n^(b-1) = m^bn^(b-1)*[n+p]=m^b因为n里面要么有p因子,要么没有,所以gcd(n^(b-1),n+p)=1或(含有p因子的数)当gcd(n^(b-1),n+p)== (含有p因子的数)的时候,显然无解因为 假设有解,那么n=K*p , K^(b-1) * p^b*(K+1)如果希

2013-02-05 22:55:02 7866

原创 多重背包问题

题目:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 #include #include using namespace std;const int MAX = 100;int v[MAX];int w[MAX];int num[MAX]

2013-02-01 15:26:48 18206

Fibonacci数列与矩阵连乘

适合ACM-ICPC竞赛中关于Fibonacci数列和矩阵连乘的学习

2014-01-19

ACM数论概论好书

本书是对于ACM编程数论的好书,有很大帮助哦!

2013-05-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除