思路:

暴力枚举度娘的点,判断是否所有的要保护的点都在左边(或者都在右边,一样的)。如果都在左边,那么建一条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 度度熊保护村庄 (叉积判断点线关系+图论)相关推荐

  1. hdu 6080 度度熊保护村庄

    题意 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村. 但是度度熊发现,这是一场旷日持 ...

  2. 2017百度之星资格赛:1001. 度度熊保护村庄(floyd最小环)

    度度熊保护村庄  Accepts: 26  Submissions: 677  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 32768/ ...

  3. 2020 年百度之星·程序设计大赛 - 测试赛1001 度度熊保护村庄

    Problem Description 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村 ...

  4. HDU 6082 度度熊与邪恶大魔王 (完全背包)

    度度熊与邪恶大魔王                                                                 Time Limit: 2000/1000 MS ( ...

  5. HDU - 6082 度度熊与邪恶大魔王(背包变式)

    度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...

  6. HDU 6113 度度熊的01世界【DFS/Flood Fill】

    度度熊的01世界 Accepts: 967 Submissions: 3064  Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/ ...

  7. HDU 6082 度度熊与邪恶大魔王(01背包)

    Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式 ...

  8. 【hdu 6082 度度熊与邪恶大魔王 】 完全背包

    hdu 6082 这道题一拿过来 对一个熊直接跑完全背包 然后跑 100000 次 完美TLE 其实因为对一个熊跑的时候 下次熊还是会跑的 于是需要对所有的熊直接完全背包预处理 设 dp[i][j] ...

  9. HDU - 6118 度度熊的交易计划(最大费用可行流)

    题目链接:点击查看 题目大意:给出一张 n 个点 m 条边的有向图,每个点可以生产至多 b[ i ] 个物品,每个物品花费为 a[ i ] ,可以出售至多 d[ i ] 个物品,每个物品售价为 c[ ...

  10. HDU - 6082——度度熊与邪恶大魔王 (背包+DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6082 思路:dp[i][j]代表打死血量为i,防御力为j的怪兽要用的最少晶石.用背包的方式dp. #i ...

最新文章

  1. Java学习总结:7
  2. 从“元宇宙”热炒中理性看待我国虚拟现实产业发展
  3. pycharm最常用的快捷键总结
  4. 猎豹浏览器怎么收藏网页 网页收藏方法简述
  5. 我必须要吐槽,你们的数据管理都是错的,这才是规划和产出
  6. 深度学习笔记--单层感知机原理及代码实现
  7. tft_LCD一些引脚极性设置方法:vsync, hsync, VBLANK
  8. php1.9,PHP1.9--数组
  9. java poi 操作ppt
  10. 剑指offer25-合并两个排序的链表
  11. Linux 命令(6)—— sort 命令
  12. 英语语法——万法归宗
  13. 我要多开梦幻手游PC端(梦幻手游PC端多开的简单分析及实现办法)
  14. 解决vue页面四周有白边的问题
  15. CloudSim仿真流程研究(一)
  16. 十日均线算法oracle,十日均线买卖法则,简单管用!
  17. 麦吉尔大学统计与计算机科学,麦吉尔大学统计学和计算机科学本科.pdf
  18. 翻译如重构,期待您的单元测试
  19. R语言----制作数据分布图(直方图+概率密度曲线)
  20. 3款移动应用数据统计分析平台对比

热门文章

  1. 单片机 一键开关机 软件结合
  2. 解决 Could not find common.jar (android.arch.core:common:1.0.0). 错误
  3. mysql一张表有几个主键_一张表可以有多少个主键
  4. 批量发短信的平台浏览总结
  5. python IRR公式使用——定投基金收益率计算
  6. oracle瘦身,数据库瘦身
  7. RTT笔记-分析自动初始化机制
  8. grep/awk/sed查指定时间段日志
  9. 联想集团大裁员:公司不是家
  10. Scratch www 系统搭建