摘要:
参考:点击打开链接 区间修改+区间查询的树状数组,实际上是用两个树状数组来表示一个数组 用a[i]表示原数组, d[i]=a[i]-a[i-1](a[i]视为0) 关于 的说明: a[1]+a[2]+...+a[x] =d[1]+(d[1]+d[2])+(d[1]+d[2]+d[3])+...+(d 阅读全文
摘要:
P144 UVa12657 移动盒子 Boxes in a Line#includetypedef long long LL;LL n,m;LL l[100010],r[100010],p;//双向链表LL case1;//记录这是第几种情况int main(){ LL t,ans,i,a,x,y,... 阅读全文
摘要:
对于每组数据,首先通过一个map将每个字符串由一个数字代替,相同的字符串由相同数字代替,不同的字符串由不同数字代替。那么题目就变为了询问是否存在行r1,r2以及列c1,c2使得str[r1][c1]=str[r2][c1]且str[r1][c2]=str[r2][c2](此时所有单元格内都是数字,s... 阅读全文
摘要:
#includeusing namespace std;typedef set Set;map IDcache;vector Setcache;stack s;int ID(Set x){ if(IDcache.count(x)) return IDcache[x]; Setcache.push_b... 阅读全文
摘要:
#include//http://blog.csdn.net/solomon1558/article/details/40798901//http://www.360doc.com/content/12/0403/11/9140140_200442978.shtmldouble do1(){ pri... 阅读全文
摘要:
vjudge 第一种(枚举法): 设Ax=By=C x=C/A与y互质 要使B最小,则y最大 则寻找最大的与x互质的c的约数另一种做法: 分解质因数,再做一些处理(把指数为0的补上,使A,B,C有相同的a1到an),得 A=a1^x1*a2^x2*...*an^xn B=a1^y1*a2^y2*.. 阅读全文
摘要:
也就是求|x-a1|+|x-a2|+...+|x-an|的最小值。可以证明,当x为a1,a2,...,an的中位数时该式有最小值。怎么证明呢?第一个:绝对值不等式:||a|-|b|| ≤|a±b|≤|a|+|b|这里要用的是|a|+|b|≥|a+b|可以推出如|a|+|b|+|c|≥|a+b+c|以... 阅读全文
摘要:
P1(贪心)自己想的糟糕的算法:#include//从大到小排序龙头和骑士,每个龙头由“恰好”能砍掉的骑士来砍#include//貌似没问题,但是又难写又慢#include//就当复习stl了#includeusing namespace std;int n=1,m=1;int a[30000];v... 阅读全文
摘要:
P2279 [HNOI2003]消防局的设立法一:某贪心方法(摘自洛谷题解):一般的,对于深度最大的结点u,选择u的k级祖先是最划算的(意思是说这个题目的2改成了k我们都是可以做的,至于这个结论,详见刘汝佳的《***入门经典》(蓝书P35),还有一个例题,不过和本题不一样)法二://树形dp/*状态... 阅读全文
摘要:
P1273 有线电视网//ans[i][j]表示第i个结点以下共j个用户观看时最大的赚钱量 //(仍然没有想到)ans[u][i]=max{ans[u][i-j]+ans[v][j]-w}//具体解释:/*ans[i][j][k]表示第i个结点以下前k个子结点中有j个用户观看时最大的赚钱量ye[v]... 阅读全文
摘要:
P1040 加分二叉树树形dp,用记忆化搜索即可//树形dp P1040 //http://www.cnblogs.com/mhpp/p/6628528.html #include#includeusing namespace std;int ans[31][31];//从l到r的结点构成的子树的最... 阅读全文
摘要:
P1892 团伙并查集#includeint fa[2500];//fa[i]表示i的朋友所在集合,fa[i+n]表示i的敌人所在集合bool boo[2500];int ans,n,m;int find(int x){ if(fa[x]!=x) fa[x]=find(fa[x]); return ... 阅读全文
摘要:
P2024 食物链法一:种类并查集#includeint fa[250000];int n,k,ans;//fa[i]表示与i同类的集合,fa[i+n]表示i吃的集合,fa[i+2n]表示吃i的集合int find(int x){ if(fa[x]!=x) fa[x]=find(fa[x]); re... 阅读全文
摘要:
P1196 银河英雄传说加权并查集,简介见加权并查集,具体方法见代码及注释//P1196 银河英雄传说#includeint fa[30010];int r[30010];//r[i]表示第i号战舰在其父亲之后的第r[i]个位置int r2[30010];//r2[i]表示以第i号战舰为队首的队列有... 阅读全文
摘要:
一、定义并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。基础的并查集能实现以下三个操作:1.建立集合;2.查找某个元素是否在一给定集合内(或查找一个元素所在的集合); 3.合并两个集合.“并”“查”“集”三字由此而来。并查集能解决的问题一般可以转化为这样的形式:初始时n个元素分属... 阅读全文