几何 +线性dp
来源:互联网 发布:基本的网络知识 编辑:程序博客网 时间:2024/04/20 16:18
OJ题目:click here~~
题目分析:对于当前点i ,从u = i+1开始考虑,如果能直接从i到father[u] ,u不妨碍的话,说明能够直接从i 跳到father[ u ],下面考虑u = father[ u ] ,直到不能直接从i 跳到father[ u ] , 即被u阻碍了 ,此时 i 的步数 = u 的步数 + 1(从i 到u 花1步)。
AC_CODE
typedef long long LL;const int inf = 100000000;struct Node{ int x; int y; Node(){} Node(int i,int j):x(i),y(j){}};bool judge(Node &a , Node &b , Node &c)//true为a可以到c,false为a不可以到c,被b拦住{ return (LL)(b.y - a.y)*(c.x - a.x) < (LL)(b.x - a.x)*(c.y - a.y);}Node p[100002];int ans[100002],father[100002];int main(){ int t , tt , n, m ,u, i , j; cin >> tt; for(t = 1;t <= tt;t++) { scanf("%d",&n); for(i = 1;i <= n;i++) { scanf("%d%d",&p[i].x,&p[i].y); } ans[n] = 0; ans[n - 1] = 1; father[n - 1] = n; for(i = n - 2;i >= 1;i--) { u = i + 1; while(u != n && judge(p[i] , p[u],p[father[u]])) { u = father[u]; } father[i] = u; ans[i] = ans[u] + 1; } printf("Case#%d:",t); for(i = 1;i <= n;i++) printf(" %d",ans[i]); puts(""); } return 0;}
0 0
- 几何 +线性dp
- 线性DP
- 线性dp
- 线性dp
- 线性dp
- DP专辑之线性DP
- HDU 1003 (线性dp)
- 【线性DP】基础练习
- 线性DP WA
- 花瓶的线性dp
- 线性dp<一>
- Uva 11584 线性DP
- Uva1625 线性DP
- Uva10003 线性DP
- Uva1626 线性DP
- PID217 线性DP
- PID26 线性DP
- POJ3267 线性DP
- CWinAppEx::CleanState函数的作用
- pack(1)的使用
- 性能loadrunner--loadrunner11如何显示回放过程
- 单片机串行收发电路制作记录
- CentOS 6.5安装二进制版本的MongoDB 2.6
- 几何 +线性dp
- Struts“No action config found for the specified url.”错误,解决
- mysqldump导入导出mysql数据库
- ORACLE数据库导出(只是结构)
- 百度百科词条中对PX的描述竟是“剧毒
- 文件操作《9》输入错误处理
- bus总线分析与注册
- Persistent Ideal Hash Tries---一种Java实现
- java api学习纪要