http://172.20.6.3/Problem_Show.asp?id=1535

整体来说是道水题,但是穿过点的判定把我坑得wa了两次,考场上这可是40分的水分啊啊啊。

开始的错误想法:排序后向上扫一遍,通过边就转换加或不加这一段的状态,通过点就不转换。
错误想法没有考虑到折点而非转点的情况。
正确想法与错误的只有点的判定不同:点的判定是如果这个点连接的两条边是在穿越线的一侧,则通过这点后加或不加的状态不变,否则转换。

还是逻辑太弱。

代码

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define lc x*2
#define rc x*2+1
using namespace std;
const int maxn=;
int n,x,y;
int a[maxn]={};
int b[maxn]={};
struct wtf{
double y;
bool f;
}e[maxn];
int tot=;
bool mmp(wtf xx,wtf yy){
return xx.y<yy.y;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
}a[]=a[n];b[]=b[n];
scanf("%d%d",&x,&y);int x1,x2,y1,y2;
for(int i=;i<=n;i++){
if(a[i]==x){
e[++tot].y=b[i];e[tot].f=;
if((a[i-]-a[i])*(a[i+]-a[i])>) e[tot].f=;
}
if((a[i]-x)*(a[i-]-x)<){
if(a[i]>a[i-]){x1=a[i-],x2=a[i],y1=b[i-],y2=b[i];}
else {x1=a[i],x2=a[i-],y1=b[i],y2=b[i-];}
e[++tot].y=double(y2-y1)/(x2-x1)*(x-x1)+y1;
e[tot].f=;
}
}
sort(e+,e++tot,mmp);
double cnt=,z;int f=;
if(e[].f)f=;
for(int i=;i<=tot;i++){
if(f&&e[i].y>y){
if(y>e[i-].y)z=y;
else z=e[i-].y;
cnt+=e[i].y-z;
}
if(!e[i].f)f=f^; }int ans=cnt;
printf("%d\n",ans);
return ;
}

JZYZOJ1535 [haoi2014]穿越封锁线的更多相关文章

  1. [haoi2014]穿越封锁线

    这题需要注意的一点是射线法需要考虑边界,而且题目对边界的限制极为严格. dcmp(v[i%n].x-x)<=0&&dcmp(v[(i+1)%n].x-x)>0 dcmp(v ...

  2. 崽崽帮www.zaizaibang.com精选3

    [景山远洋美国交换生随笔]异国他乡的感触 [成都亲子活动]可能是成都最全最好的亲子活动了! 黄平-儿科 @体育活动 下雪天乐翻天之穿越封锁线 北京育翔小学的前世今生 武汉儿科类中医口碑榜 南宁周边农家 ...

  3. android穿越之旅--如何弹出一个非比寻常的窗体

    上一篇中介绍了一种闻所未闻在android执行java命令的方法,虽然这是一种非常"高级"的技术,然后并没有什么卵用,因此被移除了博客园首页.实际上也并不是一点用处也没有,对已立即 ...

  4. 如何穿越到android底层

    对于android开发,实际上大部分工作都是在应用层,但为了体现"技术含量",以及"知其所以然",以便在遇到问题是不至于束手无策.因此有必要了解底层的工作机制. ...

  5. 开发技巧-Java通过HttpProxy实现穿越

    需求描述     在正常的项目开发需求中,连接远程服务器的场景一般有二:     1  自家实现的http服务器,api接口都已经约定好:     2  开发平台服务,通常如新浪.百度云等平台提供的r ...

  6. P2P NAT检测和穿越方式

    一.      NAT类型 本文转自:http://www.cnblogs.com/hummersofdie/archive/2013/05/21/3090163.html  1.基本的NAT类型:只 ...

  7. NAT原理与NAT穿越

    最近在看东西的时候发现很多网络程序中都需要NAT穿越,特意在此总结一下. 先做一个约定: 内网A中有:A1(192.168.0.8).A2(192.168.0.9)两用户 网关X1(一个NAT设备)有 ...

  8. [转]SIP穿越NAT&FireWall解决方案

    原文链接(也是转载)http://blog.csdn.net/yetyongjin/article/details/6881491.我修改了部分错字.   SIP从私网到公网会遇到什么样的问题呢? 1 ...

  9. 穿越泥地(mud) (BFS)

    问题 C: 穿越泥地(mud) 时间限制: 1 Sec  内存限制: 128 MB提交: 16  解决: 10[提交][状态][讨论版] 题目描述 清早6:00,FJ就离开了他的屋子,开始了他的例行工 ...

随机推荐

  1. Plant (矩阵快速幂)

    题目链接:http://codeforces.com/problemset/problem/185/A 题目: Dwarfs have planted a very interesting plant ...

  2. Fermat2018游记

    day (-22) 2018年2月5日 Devin大佬给我发了一份Waterloo AIF的原件截图,发现里面居然直接问你的Fermat分数,那么这么重要的考试当然不能错过啊 若干天之后刚开学不久的一 ...

  3. Spring 路由地址的基本使用

    1.下面是spring的使用基本框架连接 https://www.cnblogs.com/HD/p/4103239.html

  4. 【HNOI】五彩斑斓 模拟

    [题目描述] 给定一个n*m的矩阵,矩阵的某些位置有一个颜色(可以没有颜色,即为0),现在你可以将矩阵的某一行或者某一列染成同一种颜色,问最少用多少步能达到目标矩阵的染色方案,输出最少步数和方案. [ ...

  5. E题hdu 1425 sort

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425 sort Time Limit: 6000/1000 MS (Java/Others)    M ...

  6. import学习

    一.import  as     import socket, os, regex模块导入时可以使用 as 关键字来改变模块的引用对象名字: import os as system //当多个引入时  ...

  7. Java——关于static关键字的那些事总结

    前言: 先说说今天为啥要谈这个东西,虽然学Java已经有两年了,但是今天,本着温故而知新的态度,仔细的第三次翻看了<Head Firt Java>这本书,虽然这本书介绍的很多东西都特别基础 ...

  8. 上传漏洞新姿势(限Linux)

    服务器:Linux当前环境:nginx/1.4.7PHP版本:PHP Version 7.0.0  上传情况简介:上传  111.jpg111 确实可以成功的但是上传  1.php.jpg1111.1 ...

  9. 【NOIP2016】补题

    今天突然想到自己居然还没把NOIP2016补完 简直是傻逼... 所以开始写 D1T1:模拟 D1T2:NOIP最难的一道题,首先求LCA 离线下,把观察员单独提出来 然后可以维护一个类似桶排序的东西 ...

  10. PHP-5.6.22安装

    查看系统及内核版本 [root@test88 ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@test88 ~]# uname ...