UVALive 6263 The Dragon and the knights --统计,直线分平面
题意:给n条直线,将一个平面分成很多个部分,再给m个骑士的坐标,在一个部分内只要有一个骑士即可保护该部分,问给出的m个骑士是不是保护了所有部分。
解法:计算每个骑士与每条直线的位置关系(上面还是下面),用0,1表示,所以每个骑士会有一个01串,最后统计出这n条直线分成的部分数(可能有平行的),然后排序每个骑士的01串,看有多少个处在不同部分的骑士(01串不同的个数),然后比较个数关系,得出答案。
代码:
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <algorithm>
- #include <string>
- #define ll long long
- using namespace std;
- #define N 50007
- struct Line
- {
- int A,B,C;
- }line[];
- bool UPLine(Line ka,ll x,ll y)
- {
- ll res = ka.A*x + ka.B*y + ka.C;
- return res > ;
- }
- bool intersection(Line ka,Line kb)
- {
- if(ka.A*kb.B == ka.B*kb.A)
- return false;
- return true;
- }
- string ss[N];
- int main()
- {
- int t,n,m,i,j;
- int x,y;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&m);
- for(i=;i<n;i++)
- scanf("%d%d%d",&line[i].A,&line[i].B,&line[i].C);
- string tmp = "";
- for(i=;i<n;i++)
- tmp += "";
- for(i=;i<m;i++)
- {
- scanf("%d%d",&x,&y);
- ss[i] = tmp;
- for(j=;j<n;j++)
- {
- if(UPLine(line[j],x,y))
- ss[i][j] = '';
- }
- }
- int C = n+;
- for(i=;i<n;i++)
- {
- for(j=i+;j<n;j++)
- if(intersection(line[i],line[j]))
- C++;
- }
- sort(ss,ss+m);
- int cnt = ;
- for(i=;i<m;i++)
- {
- if(ss[i] != ss[i-])
- cnt++;
- }
- if(cnt >= C)
- puts("PROTECTED");
- else
- puts("VULNERABLE");
- }
- return ;
- }
UVALive 6263 The Dragon and the knights --统计,直线分平面的更多相关文章
- Central Europe Regional Contest 2012 Problem I: The Dragon and the Knights
一个简单的题: 感觉像计算几何,其实并用不到什么计算几何的知识: 方法: 首先对每条边判断一下,看他们能够把平面分成多少份: 然后用边来对点划分集合,首先初始化为一个集合: 最后如果点的集合等于平面的 ...
- [BZOJ4064/Cerc2012]The Dragon and the knights
Description 与当地鞋匠协会发生冲突的瓦维尔城堡的龙决定将它的狩猎场移出克拉科夫以减少敌对的邻居数量.现在他正在给和平而宁静的Bytes王国带来灾难与恐怖. 在Bytes王国有n条河流,每一 ...
- PAT Basic 1021 个位数统计 (15 分)
给定一个 k 位整数 1 (0, ,, dk−1>0),请编写程序统计每种不同的个位数字出现的次数.例如:给定 0,则有 2 个 0,3 个 1,和 1 个 3. 输入格式: 每个输入包含 ...
- PAT Basic 1042 字符统计 (20 分)
请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母, ...
- 1042 字符统计 (20 分)C语言
请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母, ...
- PAT (Basic Level) Practice (中文)1021 个位数统计 (15 分)
给定一个 k 位整数 1 (0, ,, dk−1>0),请编写程序统计每种不同的个位数字出现的次数.例如:给定 0,则有 2 个 0,3 个 1,和 1 个 3. 输入格式: 每个输入包含 ...
- 【动态规划】bzoj3992 [Sdoi2015]序列统计 10分
#include<cstdio> using namespace std; #define MOD 1004535809 int a[8001],f[1001][101],n,m,x,S; ...
- Python爬取信息管理系统计算学分绩点
试手登录了下我们学校的研究生信息管理系统,自动计算学分绩点 # -*- coding:utf-8 -*- import urllib import urllib2 import re import c ...
- B1042 字符统计 (20 分)
#include<cstdio> #include<iostream> #include<algorithm> #include<string> usi ...
随机推荐
- jsp页面 列表 展示 ajax异步实现
1. 服务端先返回页面基本结构(如message.jsp), <%@ page language="java" contentType="text/html; ch ...
- Spring 接口代理 类代理
1.Question Description : when you use @Transactional annotation and @RequiresPermissions annotation ...
- ASP.NET WebAPI 07 路由
WebAPI的中路由设计与ASP.NET相似,但又是独立的一套框架. HttpRoute HttpRoute主要提供了路由模板,用于匹配url,生成virtualPath. public interf ...
- WCF服务部署到IIS7.5
下面介绍如何把WCF服务部署到IIS: 为WCF服务创建.svc文件 我们知道,每一个ASP.NET Web服务都具有一个.asmx文本文件,客户端通过访问.asmx文件实现对相应Web服务的调用.与 ...
- 【使用 DOM】使用 DOM 元素
1. 使用元素对象 HTMLElement对象提供了一组属性,可以用它们来读取和修改被代表的数据.下表介绍了这些属性. 下面代码展示了如何使用表中所列的一些基本属性. <!DOCTYPE htm ...
- MYSQL使用正则表达式过滤数据
一.正则与LIKE的区别 Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符.字符串.例如:select * from wp_posts where post_name REGEXP ...
- C安全问题与指针误用
欢迎关注我的个人博客:www.wuyudong.com, 更多精彩文章与您分享 指针的声明与初始化 1.不恰当的指针声明 考虑如下的声明: int* ptr1, ptr2; // ptr1为指针,pt ...
- 安卓第十天笔记-fragment
安卓第十天笔记-fragment Fragment(片段) 一.Fragment简介 *Fragment是3.0引入的API,主要为了解决平板,大屏幕手机显示问题 *Fragment代表了Activi ...
- IOS Quartz2D 通过UIColor生成图片
普通生成 示例代码: //这里实现普通生成图片的方法 - (void)drawRect:(CGRect)rect { CGRect cxRect = CGRectMake(, , , ); UIGra ...
- iOS之 APP异常捕获反馈给服务器
在我们开发的app中, 不可避免的, 有时候用户使用软件会崩溃. 我们就需要捕获异常, 可以在入口类中加入相应的代码, 可以在每次用户打开程序的时候, 检查一下沙盒中是否有崩溃日志, 如果有, 可以 ...