5.15[没什么营养的一段日子]A*
五月份没有写过blog.
期中考刚过......漫漫文化课,无尽头.
马上要为联赛开坑了,激动啊.
刚听了孙柘的演讲..%%%
最近刷的题只有一道启发式合并,一道分层图,一道差分约束..然后不知不觉破80啦
80其实是个很小的题量,但是之所以想讲一下是因为
自己在70+的位置浪了很久吧,所以衍生出一种好难破80的feel~
打算去看A*算法和K短路,
poj1077--Eight(据shy说A*入门题)
被自己逗笑了..居然开始写暴力了..因为这里暴力不虚..再加上个人看到A*淦不动啊 于是码了一道裸的bfs果然没什么营养..说好的要写A*呢!
里面敲了个康托展开,哈希利器啊
ll fold() { ll temp,t=; ;i<;i++) { temp=; ;j<;j++) if(a1.num[j]<a1.num[i])temp++; t+=temp*jc[-i]; } return t; }
然后听说bzoj1073是道K短路,又是一道二百人AC的首页题..可怕..还有十分要cheat..不是很想做啊..但是这道题有份题解很兹辞
传送门:http://z55250825.blog.163.com/blog/static/150230809201422581743407/
然后必刷水题poj2449,在这里MARK一下.
poj2449
第一次写stl的优先队列,果然方便啊..这里有两个没弄懂的点:
1.A结构的定义 const const是什么鬼
2.原blog http://blog.csdn.net/sdj222555/article/details/7690081,明明都考虑了有环的情况呀,这样spfa()不是会爆炸?在comments评论了,博主还未解答.//已解决,我sb了
#include<cstdio> #include<algorithm> #include<cstring> #include<queue> #define N 500005 #define inf 1000000000 using namespace std; int edgenum,x,y,k,w,n,m,st,ed; ],pri[N]; struct A { int f,g,v; bool operator <(const A a)const { if(a.f==f)return a.f<g; return a.f<f; } }; void add(int u,int v,int w) { edgenum++;vet[edgenum]=v;next[edgenum]=head[u];head[u]=edgenum;pri[edgenum]=w; edgenum++;vet[edgenum]=u;next[edgenum]=head[v];head[v]=edgenum;pri[edgenum]=w; } void spfa(int src) { ;i<=n;i++)dis[i]=inf;dis[src]=; memset(flag,,,tail=;q[]=src; while(tou<=tail) { ; ) { int v=vet[e]; ==){e=next[e];continue;} if(dis[v]>dis[u]+pri[e]) { dis[v]=dis[u]+pri[e]; ) { tail++;q[tail]=v;flag[v]=; } } e=next[e]; } tou++; } } int Astar(int st,int ed) { ;priority_queue<A>Q; if(st==ed)k++; ; A t,tt; t.v=st;t.g=;t.f=t.g+dis[st];Q.push(t); while(!Q.empty()) { tt=Q.top();Q.pop();//把tt弹出队列 if(tt.v==ed) { cnt++;if(cnt==k)return tt.g; } int u=tt.v,e=head[u]; ) { ==){e=next[e];continue;} t.v=vet[e]; t.g=tt.g+pri[e];t.f=t.g+dis[t.v];Q.push(t);//F(v)=f(v)+h(v); e=next[e]; } } ; } int main() { scanf("%d%d",&n,&m); ;i<=m;i++) { scanf("%d%d%d",&x,&y,&w); add(x,y,w); } scanf("%d%d%d",&st,&ed,&k); spfa(ed); printf("%d\n",Astar(st,ed)); ; }
刷了一道bzoj1957,感觉这题真高明啊,手写堆党拽起啊,hhh
debug的时候又发现自己各种sb打错,粗心活该
#include<cstdio> #include<algorithm> #include<cstring> #define ll long long #define inf 2000000000000 #define N 400005 using namespace std; struct A { double f,g; int v; }; A a[]; ],top,vet[N],next[N],head[N],q[N]; double e,pri[N],dis[N]; bool comp(A a,A b) { ;; return(a.g<b.g); } void push_up(int kk) { int k=kk; >&&comp(a[k],a[k/])) { A t;t=a[k];a[k]=a[k/];a[k/]=t; //swap(a[k],a[k/2]); k=k/; } } void push_down(int kk) { int k=kk; <=top) { +<=top&&comp(a[k*+],a[k])&&comp(a[k*+],a[k*])) { A t;t=a[k];a[k]=a[k*+];a[k*+]=t; //swap(a[k],a[k*2+1]); k=k*+; }],a[k])) { A t;t=a[k];a[k]=a[k*];a[k*]=t; //swap(a[k],a[k*2]); k=k*; }else break; } } void add(int u,int v,double w) { edgenum++;vet[edgenum]=v;next[edgenum]=head[u];head[u]=edgenum;pri[edgenum]=w; } void spfa(int src) { memset(flag,,sizeof(flag)); ;i<=n;i++)dis[i]=inf;flag[src]=;dis[src]=;q[]=src; ,tail=; while(tou<=tail) { int u=q[tou%N],ee=head[u]; ) { int v=vet[ee]; ==){ee=next[ee];continue;} if(dis[v]>dis[u]+pri[ee]) { dis[v]=dis[u]+pri[ee]; )tail++,q[tail%N]=v,flag[v]=; } ee=next[ee]; } tou++;flag[u]=; } } int Astar(int st ,int ed) { ; A t,tt;; t.v=st;t.g=;t.f=dis[st];a[]=t;top=; ) { tt=a[];a[]=a[top];top--;push_down(); //for(int i=1;i<=top;i++)printf("%lf ",a[i].f);printf("\n"); if(tt.v==ed) { //printf("%lf %lf\n",tt.f,e); if(e>=tt.g)e-=tt.g,cnt++;else return cnt; } int u=tt.v,ee=head[u]; ) { ==){ee=next[ee];continue;} t.v=vet[ee];t.g=tt.g+pri[ee];t.f=t.g+dis[t.v];top++;a[top]=t;push_up(top); ee=next[ee]; } } return cnt; } int main() { scanf("%d%d%lf",&n,&m,&e);int u,v;double w; ;i<=m;i++) { scanf("%d%d%lf",&u,&v,&w); add(u,v,w);add(v,u,w); } spfa(n);printf(,n)); }
还有,还没动过计算几何怎么办啊%>_<%
5.15[没什么营养的一段日子]A*的更多相关文章
- 【一段日子荟萃】where should I go.
当<UNIX环境高级编程>和<鸟哥的私房菜>到我的桌头的时候,我忽然产生了厌倦的心. NO,我不是想做这个,我不是想学习这个操作系统的结构和接口. 我想些一个操作系统,更一般的 ...
- 从苏宁电器到卡巴斯基第15篇:我在苏宁电器当营业员 VII
我们苹果的倒班制度 当年我在苏宁的时候,实行的是单休制度,而且只能选择在周一到周五其中的某一天,因为周六周日顾客比较多,是不允许休息的.尽管是单休,但并不表示我们在上班的时候每天都要完完整整地上八小时 ...
- IT实习总结-上海的实习的日子
在上海实习两个多月,从找工作,到面试,最后到创业公司工作,体会了一个人在外工作的那种工作时的压力与双休时的寂寞,有时甚至有点迷惘,可能这就是生活,每个人都会经历,在经历的过程中会有不同的味道. 说说我 ...
- FreeRTOS 临界段和开关中断
以下转载自安富莱电子: http://forum.armfly.com/forum.php 临界段代码的临界段也称为临界区,一旦这部分代码开始执行,则不允许任何中断打断.为确保临界段代码的执行不被中断 ...
- POJ-3468 A Simple Problem with Integers (区间求和,成段加减)
You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of op ...
- C/C++ 笔试题
/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...
- C/C++笔试题(很多)
微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...
- NOI2018游记&我的OI历程
day1 今天是报到日,坐着早上9点的飞机到了长沙,午饭时间到达雅礼洋湖. 宿舍还是一模一样,虽然是在女生宿舍. wifi信号还是一样的德行,刻意避开了宿舍内,只好把手机放在窗台上开热点. 饭菜还是如 ...
- 直面秋招!非科班生背水一战,最终拿下阿里等大厂offer!
前言 2020年已经接近到9月份了,很多粉丝朋友都对金九银十雀雀欲试了吧!也有很多朋友向我求教经验,因为我自己工作相对于稳定,在这里给大家分享一个粉丝朋友的经历,他作为一个曾经的菜鸡面试者,在不断的失 ...
随机推荐
- [Android Pro] svn实例
referece : http://www.cnblogs.com/cnblogsfans/archive/2010/03/21/1690891.html 签出 svn checkout URL pa ...
- September 12th 2016 Week 38th Monday
After all, tomorrow is another day. 不管怎样,明天又是全新的一天. Another day? Maybe. Remember when you reach for ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- C++面试之GetMemory问题
http://blog.csdn.net/zhuxiaoyang2000/article/details/8084629 #include <iostream> #include < ...
- Struts2之OGNL
一.OGNL是什么? OGNL(Object-Graph Navigation Language)对象图导航语言,是一种表达式语言,它可以 1.遍历对象的结构图 2.存取对象的属性(实例属性和静态属性 ...
- NYOJ题目77开灯问题
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsUAAAHXCAIAAADbX7BCAAAgAElEQVR4nO3dvVLrSMAm4L0Jci6E2B
- centos 安装 py pyhs2
1. yum install gcc-c++ cyrus-sasl-develpip2.7 install pyhs2 --->好像不行,在试试 用于 hive thrift 访问 2. os. ...
- MyEclipse破解(MEGen.java)
步骤: 1.将MEGen.java粘贴到任意web项目下,运行结果如下: 2.输入注册名:如sun,得到注册码: 3.Window >> Preference >> S ...
- cache buffers
buffers缓冲,可以型象的理解为漏斗.如果有大量的数据要写入磁盘,由于数据量很大,磁盘不能一下子接收,所以这个时候,就有了buffer这个漏斗,先把数据放入这个漏斗里面,然后让它慢慢的注入磁盘,这 ...
- 数据结构和算法 – 5.模式匹配和文本处理
了使用正则表达式,需要把 RegEx 类引入程序.大家可以在 System.Text.RegularExpression 名字域中找到这种类.一旦把这种类导入了程序,就需要决定想要用 RegEx 类来 ...