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/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...
随机推荐
- Wireshark win7 没有找到接口;找不到接口
下载安装winpcap: https://www.winpcap.org/install/default.htm
- scoping作用域,anonymous function匿名函数,built-in functions内置函数
作用域练习1 def test1(): print('in the test1') def test(): print('in the test') return test1 res = test() ...
- json 数据在textarea中显示的时候,切换 beauty和ugly模式
转化为beauty模式 var jsonText = $('#json').val(); $('#json').val(JSON.stringify(JSON.parse(jsonText), nul ...
- Struts2复习
补充 声明处为什么要继承前面的actionsupport?继承action的execute等格式啊,更规范 声明处为什么后面实现一个model?数据封装到模型再返回去方便啊 值栈是什么啊?原理呐?存放 ...
- 如何配置nginx负载均衡配置(轮询,权重,ip绑定)
集群是为了解决单节点无法服务高并发的情况,在集群中nginx是如何分配将来自客户端的请求 转发给服务器的 负载均衡可以提高网站的吞吐量(接受和响应),减轻单台服务器的压力 负载均衡提供了三种策略:轮询 ...
- redis总结问题
简单回顾了redis,在这过程中 首先得了解redis是什么,redis的运用场景,redis支持哪些数据格式,redis如何操作数据,redis如何实现高可用 redis是什么: Redis 是一个 ...
- finstrument-functions
2017-12-03 23:59:16 参考 如何快速地在每个函数入口处加入相同的语句? https://www.zhihu.com/question/56132218 做个存档 scj@scjCom ...
- 注解:大话AOP与Android的爱恨情仇
转载:大话AOP与Android的爱恨情仇 1. AOP与OOP的区别 平时我接触多的就是OOP(Object Oriented Programming面向对象).AOP(Aspect Oriente ...
- 特性(attribute)
一.什么是特性? 特性(attribute)是被指定给某一声明的一则附加的声明性信息. 在C#中,有一个小的预定义特性集合.在学习如何建立我们自己的定制特性(custom attributes)之前, ...
- 红黑树Python实现
# coding=utf-8 # 红黑树Python实现 # 颜色常量 RED = 0 BLACK = 1 def left_rotate(tree, node): if not node.right ...