HDU6080 百度之星资格赛1001 度度熊保护村庄
度度熊保护村庄
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 249 Accepted Submission(s): 99
度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村。
但是度度熊发现,这是一场旷日持久的战斗,所以度度熊决定要以逸待劳,保存尽量多的体力,去迎战哗啦啦村的战士。
于是度度熊决定派尽量多的人去休息,但是同时也不能松懈对喵哈哈村的保护。
换句话而言,度度熊希望尽量多的人休息,而且存在一个包围圈由剩下的人组成,且能够恰好的包围住喵哈哈村的所有住房(包括边界)。
请问最多能让多少个人休息呢?
第一行一个整数n,表示喵哈哈村的住房数量。
接下来n行,每行两个整数(x1[i],y1[i]),表示喵哈哈村的住房坐标。
第n+1行一个整数m,表示度度熊的士兵数量。
接下来m行,每行两个整数(x2[i],y2[i]),表示度度熊伙伴的坐标。
满足:
1<=n,m<=500
-10000<=x1[i],x2[i],y1[i],y2[i]<=10000
如果无法保护整个村庄的话,输出"ToT"
1 ToT
#include <stdio.h>
#include<algorithm>
#include<string.h>
#define inf 99999999
using namespace std;
struct point{int x,y;
}a[1000],b[1000];
int map[1000][1000];
int rightorleft(point a,point b,point c)
{int temp=(a.y-b.y)*c.x+(b.x-a.x)*c.y+a.x*b.y-b.x*a.y;return temp;//小于零在右边 大于零在左边 等于零共线
}
int check(point a,point b,point c)
{if(a.x>b.x&&a.x>c.x)return 1;if(a.x<b.x&&a.x<c.x)return 1;if(a.y>b.y&&a.y>c.y)return 1;if(a.y<b.y&&a.y<c.y)return 1;return 0;
}
int main(int argc, char *argv[])
{int n,m;while(scanf("%d",&n)!=EOF){int x,y,i,j,k;for(i=0;i<n;i++){scanf("%d %d",&x,&y);a[i].x=x;a[i].y=y;}scanf("%d",&m);for(i=0;i<m;i++){scanf("%d %d",&x,&y);b[i].x=x;b[i].y=y;}for(i=0;i<m;i++){for(j=0;j<m;j++){map[i][j]=inf;}}for(i=0;i<m;i++){for(j=0;j<m;j++){int flag=1;for(k=0;k<n;k++){if((rightorleft(b[i],b[j],a[k])>0)||(rightorleft(b[i],b[j],a[k])==0&&check(a[k],b[i],b[j]))){flag=0;break;}}if(flag)map[i][j]=1;}}for(i=0;i<m;i++)//start {for(j=0;j<m;j++){if(map[j][i]==inf)continue;for(k=0;k<m;k++){map[j][k]=min(map[j][k],map[j][i]+map[i][k]);}}}int ans=99999999;for(i=0;i<m;i++){ans=min(ans,map[i][i]);}if(ans>m)printf("ToT\n");elseprintf("%d\n",m-ans);} return 0;
}
注意:dijstra的算法求最短路径方便,Floyd求最小环方便,c在ab向量的右边在ba向量的左边
HDU6080 百度之星资格赛1001 度度熊保护村庄相关推荐
- 2017百度之星资格赛:1001. 度度熊保护村庄(floyd最小环)
度度熊保护村庄 Accepts: 26 Submissions: 677 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/ ...
- 2017百度之星资格赛—1003度度熊与邪恶大魔王
其他题目就不发博客了(有些也没做出来!!),感觉这次百度之星资格赛题目数据有毒,吐槽,其他题目也不好说,感觉这个题目正常点. 这个题目我当时想到的就是动态规划,但是评论中很多人说是贪心,我一直不理解, ...
- 2020 年百度之星·程序设计大赛 - 测试赛1001 度度熊保护村庄
Problem Description 哗啦啦村袭击了喵哈哈村! 度度熊为了拯救喵哈哈村,带着自己的伙伴去救援喵哈哈村去了!度度熊与伙伴们很快的就过来占据了喵哈哈村的各个军事要地,牢牢的守住了喵哈哈村 ...
- 百度之星资格赛1003 度度熊与邪恶大魔王
Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...
- 百度之星资格赛1003 度度熊与邪恶大魔王(dp)--2017
度度熊与邪恶大魔王 Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊 ...
- (百度之星资格赛) 度度熊与邪恶大魔王 (dp)
度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石 ...
- 2017百度之星 资格赛1003度度熊与邪恶大魔王
1003度度熊与邪恶大魔王 Accepts: 1503 Submissions: 9026 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...
- 2017百度之星资格赛1003 度度熊与邪恶大魔王(完全背包)
题意: 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来.邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力.度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的 ...
- 2017百度之星资格赛 1003 度度熊与邪恶大魔王
本题我们可以类比背包 背包dp[i][j] 表示再有i个物品下j个空间所获得的最大价值 本题dp[i][j] 可以表示干掉i个血量j个防御力下的最小花费 我们看其实我们就是在不同血量之间转移 如果当前 ...
- 百度之星资格赛 1003 度度熊与邪恶大魔王 DP 完全背包
题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=774&pid=1003 题目大意: a[i], ...
最新文章
- 动态绑定与继承:不得不去想细节
- Android之PullToRefresh控件源码解析
- .Net Core 3.0 gRPC部署问题解决
- linux将bridge当做hub来用
- android4 设置栈大小,【技术分享】Android内核漏洞利用技术实战:环境搭建栈溢出实战...
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- 计算机视觉中的牛人贡献及其主页
- 类 java_java类的基本结构
- Javascript的websocket的使用方法
- 上传Text文档并转换为PDF(解决乱码)
- python以读写方式打开文件_python 文件读写with open模式r,r+,w,w+,a,a+的区别
- Joomla网站的移植步骤
- qchart 怎么点击一下 出一条线_疏通身上一条线,很多难缠病,不知不觉消失了!...
- tplink软件升级有用吗_TP-LINK路由器升级方法 | 吴文辉博客
- 设置Easyui datagrid的pageNumber导致两次请求的解决方案
- HD2500显卡驱动linux,Intel HD Graphics 4000/2500集成显卡驱动
- 技术架构图-软件研发流程
- APMServ中Apache启动失败解决方法大全
- 第三方支付的商户订单号和支付交易号
- 英文格式的时间转换为 yyyy-MM-dd 格式