HDU 6080 度度熊保护村庄 (叉积判断点线关系+图论)
思路:
暴力枚举度娘的点,判断是否所有的要保护的点都在左边(或者都在右边,一样的)。如果都在左边,那么建一条i到j的边。
坑:
我到现在也不太明白为啥三点共线也可以。然而本题确实是:保护的点和ij在一条直线上,而且这个点在ij之间,那么这也算保护住了。
优化:
floyd的时候不优化会t。
#include<stdio.h>
#include <iostream>
#include<string.h>
#include<math.h>
#include<algorithm>
#define eps 1e-8
typedef long long int lli;
using namespace std;
const int maxn = 1e6+10;struct poi{lli x,y;poi(){}poi(int xx,int yy){x=xx,y=yy;}poi operator - (poi t){return poi(x-t.x,y-t.y);}lli operator * (poi b){return x*b.y - y*b.x;}
};poi an[550],bn[550];
int ma[550][550];
bool jue(poi a,poi b,poi c){if(a.x > b.x) swap(a,b);if(c.x<= b.x && c.x >= a.x){if(a.y > b.y) swap(a,b);if(c.y <= b.y && c.y >= a.y){return true;}}return false;
}
int main(){int n,m;while(~scanf("%d",&n)){memset(ma,0x3f,sizeof(ma));for(int i = 1;i <= n;i++){scanf("%lld%lld",&an[i].x,&an[i].y);}scanf("%d",&m);for(int i = 1;i <= m;i++){scanf("%lld%lld",&bn[i].x,&bn[i].y);}for(int i = 1;i <= m;i++){for(int j = 1;j <= m;j++){int flag = 1;for(int k = 1;k <= n;k++){if((bn[j]-bn[i])*(an[k]-bn[i]) > 0) flag = 0;if((bn[j]-bn[i])*(an[k]-bn[i])==0 && !jue(bn[i],bn[j],an[k])) flag = 0;if(!flag) break;}if(flag) ma[i][j] = 1;}}for(int k = 1;k <= m;k++){for(int i = 1;i <= m;i++){if(ma[i][k]==0x3f3f3f3f) continue;for(int j = 1;j <= m;j++){if(ma[i][k]+ma[k][j] < ma[i][j]){ma[i][j] = ma[i][k]+ma[k][j];}}}}int ans = 0x3f3f3f3f;for(int i = 1;i <= m;i++){ans = min(ans,ma[i][i]);}if(ans == 0x3f3f3f3f){puts("ToT");}else{printf("%d\n",m-ans);}}return 0;
}
HDU 6080 度度熊保护村庄 (叉积判断点线关系+图论)相关推荐
- hdu 6080 度度熊保护村庄
题意 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村. 但是度度熊发现,这是一场旷日持 ...
- 2017百度之星资格赛:1001. 度度熊保护村庄(floyd最小环)
度度熊保护村庄 Accepts: 26 Submissions: 677 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/ ...
- 2020 年百度之星·程序设计大赛 - 测试赛1001 度度熊保护村庄
Problem Description 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村 ...
- HDU 6082 度度熊与邪恶大魔王 (完全背包)
度度熊与邪恶大魔王 Time Limit: 2000/1000 MS ( ...
- HDU - 6082 度度熊与邪恶大魔王(背包变式)
度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...
- HDU 6113 度度熊的01世界【DFS/Flood Fill】
度度熊的01世界 Accepts: 967 Submissions: 3064 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/ ...
- HDU 6082 度度熊与邪恶大魔王(01背包)
Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式 ...
- 【hdu 6082 度度熊与邪恶大魔王 】 完全背包
hdu 6082 这道题一拿过来 对一个熊直接跑完全背包 然后跑 100000 次 完美TLE 其实因为对一个熊跑的时候 下次熊还是会跑的 于是需要对所有的熊直接完全背包预处理 设 dp[i][j] ...
- HDU - 6118 度度熊的交易计划(最大费用可行流)
题目链接:点击查看 题目大意:给出一张 n 个点 m 条边的有向图,每个点可以生产至多 b[ i ] 个物品,每个物品花费为 a[ i ] ,可以出售至多 d[ i ] 个物品,每个物品售价为 c[ ...
- HDU - 6082——度度熊与邪恶大魔王 (背包+DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 思路:dp[i][j]代表打死血量为i,防御力为j的怪兽要用的最少晶石.用背包的方式dp. #i ...
最新文章
- Java学习总结:7
- 从“元宇宙”热炒中理性看待我国虚拟现实产业发展
- pycharm最常用的快捷键总结
- 猎豹浏览器怎么收藏网页 网页收藏方法简述
- 我必须要吐槽,你们的数据管理都是错的,这才是规划和产出
- 深度学习笔记--单层感知机原理及代码实现
- tft_LCD一些引脚极性设置方法:vsync, hsync, VBLANK
- php1.9,PHP1.9--数组
- java poi 操作ppt
- 剑指offer25-合并两个排序的链表
- Linux 命令(6)—— sort 命令
- 英语语法——万法归宗
- 我要多开梦幻手游PC端(梦幻手游PC端多开的简单分析及实现办法)
- 解决vue页面四周有白边的问题
- CloudSim仿真流程研究(一)
- 十日均线算法oracle,十日均线买卖法则,简单管用!
- 麦吉尔大学统计与计算机科学,麦吉尔大学统计学和计算机科学本科.pdf
- 翻译如重构,期待您的单元测试
- R语言----制作数据分布图(直方图+概率密度曲线)
- 3款移动应用数据统计分析平台对比
热门文章
- 单片机 一键开关机 软件结合
- 解决 Could not find common.jar (android.arch.core:common:1.0.0). 错误
- mysql一张表有几个主键_一张表可以有多少个主键
- 批量发短信的平台浏览总结
- python IRR公式使用——定投基金收益率计算
- oracle瘦身,数据库瘦身
- RTT笔记-分析自动初始化机制
- grep/awk/sed查指定时间段日志
- 联想集团大裁员:公司不是家
- Scratch www 系统搭建