SPOJ - AMR11B
题目链接:https://www.spoj.com/problems/AMR11B/en/
题目大意就是要你求图形覆盖的格点数,标记每个图形里的未标记格点(包括边界),总标记数就是覆盖的总格点数。
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int x;
int y;
};
int t,n,visit[][];
void ri(node &a)//将每个点的横纵坐标加100
{
a.x+=;
a.y+=;
}
int po(node a,node b)//计算向量的点乘
{
return a.x*b.x+a.y*b.y;
}
int main()
{
cin>>t;
while(t--)
{
cin>>n;
getchar();
for(int i=;i<;i++)
for(int j=;j<;j++)
visit[i][j]=;
while(n--)
{
char op[];
cin>>op;
if(op[]=='S')
{
node a;
int l;
cin>>a.x>>a.y>>l;
ri(a);
for(int i=a.x;i<=a.x+l;i++)
for(int j=a.y;j<=a.y+l;j++)
if(!visit[i][j])
visit[i][j]=;
}
else if(op[]=='C')
{
node a;
int r;
cin>>a.x>>a.y>>r;
ri(a);
for(int i=a.x-r;i<=a.x+r;i++)
for(int j=a.y-r;j<=a.y+r;j++)
if(!visit[i][j]&&(abs(a.x-i)*abs(a.x-i)+abs(a.y-j)*abs(a.y-j)<=r*r))
visit[i][j]=;
}
else
{//判断点是否在三角形内用到了斜面坐标系法,参考链接我会发到下面
node A,B,C,AC,AB;
cin>>A.x>>A.y>>B.x>>B.y>>C.x>>C.y;
ri(A);ri(B);ri(C);
int x1,x2,y1,y2;
x1=min(A.x,min(B.x,C.x));x2=max(A.x,max(B.x,C.x));//锁定判断范围
y1=min(A.y,min(B.y,C.y));y2=max(A.y,max(B.y,C.y));
AC.x=C.x-A.x;AC.y=C.y-A.y;AB.x=B.x-A.x;AB.y=B.y-A.y;
for(int i=x1;i<=x2;i++)
for(int j=y1;j<=y2;j++)
if(!visit[i][j])
{
node P,AP;
P.x=i;P.y=j;
AP.x=P.x-A.x;AP.y=P.y-A.y;
int a=po(AP,AC),b=po(AB,AB),c=po(AP,AB),d=po(AC,AB),e=po(AC,AC),ans;
ans=(a*b-c*d)+(c*e-a*d)-(e*b-d*d);
if((a*b-c*d)>=&&(c*e-a*d)>=)
if(ans<=)
{
visit[i][j]=;
}
}
}
}
int ans=;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(visit[i][j])
ans++;
cout<<ans<<endl;
}
return ;
}
判断点是否在三角形内:https://www.cnblogs.com/kyokuhuang/p/4314173.html
SPOJ - AMR11B的更多相关文章
- Spring-2-B Save the Students(SPOJ AMR11B)解题报告及测试数据
Save the Students Time Limit:134MS Memory Limit:0KB 64bit IO Format:%lld & %llu Descri ...
- SPOJ - AMR11B 判断是否在三角形 正方形 圆形内
Hogwarts is under attack by the Dark Lord, He-Who-Must-Not-Be-Named. To protect the students, Harry ...
- BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MBSubmit: 5217 Solved: 1233 ...
- SPOJ DQUERY D-query(主席树)
题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...
- SPOJ GSS3 Can you answer these queries III[线段树]
SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...
- 【填坑向】spoj COT/bzoj2588 Count on a tree
这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...
- SPOJ bsubstr
题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...
- 【SPOJ 7258】Lexicographical Substring Search
http://www.spoj.com/problems/SUBLEX/ 好难啊. 建出后缀自动机,然后在后缀自动机的每个状态上记录通过这个状态能走到的不同子串的数量.该状态能走到的所有状态的f值的和 ...
- 【SPOJ 1812】Longest Common Substring II
http://www.spoj.com/problems/LCS2/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...
随机推荐
- new 对象时的暗执行顺序
为什么称为暗执行顺序,因为当我们在new 对象时,其不是简简单单的new一个完事,它要首先检查父类的,静态的,非静态的等代码,就好像我们结婚生孩子一样,要先到祖宗那里,公安局那里,左邻右舍那里,告诉他 ...
- Linux(centos 7)配置tomcat8、JDK1.8、lighttpd、ngnix、mysql
JDK 下载好后使用 rpm -ivh jdk-7u25-linux-x64.rpm 进行安装. 安装好后编辑 /etc/profile 文件,在末尾加上: 1 2 3 export JAVA_HOM ...
- 理解OpenShift(4):用户及权限管理
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- hash的排序(转载)
sort函数 sort LISTsort BLOCK LISTsort SUBNAME LIST sort 的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUBNAME或B ...
- java中如何给控件设置颜色
1. tv.setTextColor(Color.parseColor("#000000"));2. tv.setTextColor(getResources().getCo ...
- Redis 存储数组
我们知道Redis是不可以直接存储数组的. 我们只需在存储数组之前序列化(serialize)一下, 然后获取的时候反序列化(unserialize) 就解决这个问题了!
- Java 泛型的作用及其基本概念
一.泛型的基本概念 java与c#一样,都存在泛型的概念,及类型的参数化.java中的泛型是在jdk5.0后出现的,但是java中的泛型与C#中的泛型是有本质区别的,首先从集合类型上来说,java 中 ...
- c# 对DataTable进行分组group by
]);//对索引为0的一列进行分组,结果是集合
- 关于mysql的删除和安装
mysql删除不干净大概有两点1.文件残留 2.注册表 删除:https://www.cnblogs.com/solargen/p/6838657.html 安装:https://www.cnblog ...
- spring boot 之 spring security 配置
Spring Security简介 之前项目都是用shiro,但是时过境迁,spring security变得越来越流行.spring security的前身是Acegi, acegi 我也玩过,那都 ...