摘要: mark一下,免得忘了,估计是题意理解错了,写成了双连通分量,估计是单向边。未AC的代码,用的双连通分量。#include#include#include#include#include#include#include#includeusing namespace std;#define ForEdge(i,u) for(int i=head[u];i!=-1;i=edge[i].next)#define For(i,forN) for(int i=0;i Scc[Maxn];int n,m;inline void add_edge(int u,int v){ edge[etot].t... 阅读全文
posted @ 2013-11-05 19:56 phk52 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 题目的意思是询问[A,B]区间内,有多少个Balanced Number,每个Balanced Number符合以下条件:将一个数按位拆分,存在一个位置mid,使得sigma(val[i]*(mid-i))=sigma(val[j]*(j-mid)) {imid}然后就是一脸数位dp的样子...一开始的想法是枚举mid,因为分析了一下,除0以为的某个Balanced Number,一定只有一个位置符合条件。然后接下来就脑残了,将数字拆成两半来dp,然后合并的时候死活合并不了。后来想了一下,瞬间觉得自己脑残了,根本就不用拆分。直接从后往前dp就行,没想好代码怎么写,就开始敲,真的很忧伤..#in 阅读全文
posted @ 2013-11-05 19:52 phk52 阅读(311) 评论(0) 推荐(0) 编辑