多校联合集训之ECNU专场 D:PrisonBreak hdu 3511
(2010-08-09 09:09:37)
标签:
多校联合集训ecnu专场it |
分类: 杂题 |
上周四做的比赛很纠结,就做出来一道题目。。。。赛后好好总结下,把赛后A的7道题目中自己不太熟悉的算法记录一下。
hdu 3511
D:PrisonBreak
题目不描述:
解题报告:
利用扫描线,把圆形看做类似正方形,判断是否内含。
主要学到了stl的set容器,以前没怎么用过,头一次用,感觉比手写线段树方便不少:
首先定义一个结构体,有自己的排序函数:
struct pint
{
};
迭代器:typedef set<pint>::iterator it;
定义:set<pint> jeo;
insert:插入函数。
erase:删除函数。
it a = jeo.insert(...).first;
可以用迭代器接收插入位置,并且位置的左右都是和插入元素“顺序”相邻的。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
#include<cmath>
using namespace std;
struct eve{ int x, id, type;}e[100000];
struct cir{int x, y, r;}x[50000];
bool cmp(eve a, eve b)
{
}
struct pint
{
};
typedef set<pint>::iterator it;
int n, cnt, ans[50000];
bool inside(int id1, int id2)
{
}
int main()
{