算法题
扣扣坎坎坷坷扩扩扩
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu1394
如何转化很重要,先求原序列的逆序数,则每次移动后逆序数增加为 n-1-2*x[i],用线段树求原序列逆序数,看做x[i]=i,求x[i]和其之前数构成的逆序数,只要看大于x[i]的数是否出现,线段树中就是查询x[i]-n 的和# include # include # define maxn 5005 using namespace std; int sum[maxn<<2]; int min(i原创 2013-11-13 18:10:16 · 474 阅读 · 0 评论 -
UVA 10047
# include # include # define maxn 26 struct { int dir[4]; }vis[maxn][maxn][5];//还要记录颜色 struct Point { int x,y; int dir; int time; int c; }que[maxn*maxn*4*5]; int gox[4]={-1,1,0,0};原创 2013-10-10 21:14:34 · 450 阅读 · 0 评论 -
XDU 1278
求出割点后枚举 ,两两相乘 # include # include # define maxn 1005 using namespace std; vector G[maxn]; int total; int pre[maxn],iscut[maxn],dfs_clock,vis[maxn],N,num[maxn]; int dfs(int u,int f) { int原创 2013-09-10 21:13:39 · 737 阅读 · 1 评论 -
hdu1004
# include # include # include # include using namespace std; int main() { mapm; int N,max=0; while(scanf("%d",&N)!=EOF&&N) { m.clear(); char ss[17]; string str;原创 2014-03-30 22:59:05 · 512 阅读 · 0 评论 -
1166
# include # include # define maxn 50005*4 using namespace std; int sum[maxn];//不用记录每个节点的左右 void build(int o,int l,int r) { if(l==r) scanf("%d",&sum[o]); else { int m=(l+r)/2; build(o原创 2013-11-12 22:01:46 · 565 阅读 · 0 评论 -
mid=(l+r)/2 mid=l+(r-l+1)/2 区别
用二分法解题时,mid上下取值正确与否关系程序是否进入si原创 2014-04-05 21:21:41 · 4413 阅读 · 2 评论 -
Uva11324
# include # include # include # include using namespace std; const int maxn=2000+5; vectorG[maxn]; vectorScc[maxn]; int pre[maxn],low[maxn],vis[maxn],value[maxn],sccno[maxn],dfs_clock,scc_cnt; stackS;原创 2014-04-05 15:44:16 · 552 阅读 · 0 评论 -
xdu1267 二分查找
# include # include using namespace std; typedef long long LL; const LL maxk=1e10; LL a[10000],b[10000]; int A,B; int cmp(int x,int y) { return x>y; } LL find(int aa,LL m) { int l=-1,r=B;原创 2014-05-08 15:43:29 · 472 阅读 · 0 评论
分享