NBUT 1121 Sakuya's Fly Knife 飞刀(暴力)
题意:给出一个带有n*m个格子的矩阵,部分格子中有靶子target,现在要从一个没有靶子的格子中射出飞刀数把,飞刀是可穿透靶子的,同一直线上都可以一刀全射掉。现在问在哪个格子射出飞刀,可以在全部射中的情况下用刀次数最少?有target的格子不可选。
思路:穷举所有没有靶子的格子,计算每个靶子的角度,若角度相同就是可以一刀解决的。这里角度可能用的是实数的,用map解决。需要注意的是,在判断角度时,可能有重复,比如: 。t。。x。t。。 这里的x代表飞刀的出发点,‘t’代表靶子,那么两边的 t 计算出来的角度是相同的(按照靶子坐标的x/y来算角度即可)。需要做的只是对上下两边进行区分即可。
#include<bits/stdc++.h>
using namespace std;
bool tar[][];//标出每个靶子
int x[],y[];//记录每个靶子的坐标
map<double,int> mapp1,mapp2; void cal(int n,int m,int t)
{
int ans[]={,,};//答案
for(int i=; i<n; i++)
{
for(int j=; j<m; j++)
{
if(!tar[i][j]) //对于每个非有刀格子
{
mapp1.clear();
mapp2.clear();
int cnt_l=,cnt_r=;
for(int k=; k<t; k++)//扫描所有的target
{
if(y[k]>j) //上边的
{
double q=(double)(y[k]-j)/(x[k]-i);
if(mapp1[q]<=)
mapp1[q]=;
}
else if(y[k]<j) //下边的
{
double q=(double)(y[k]-j)/(x[k]-i);
if(mapp2[q]<=)
mapp2[q]=;
}
else //同一行的
{
if(x[k]>i) //同行左边
cnt_l=;
else //同行右边
cnt_r=;
}
}
if(ans[]>cnt_l + cnt_r + mapp1.size()+mapp2.size())//有更少的,则更新答案
{
ans[]=cnt_l + cnt_r + mapp1.size() + mapp2.size();
ans[]=i;
ans[]=j;
}
}
}
}
printf("(%d, %d) %d\n",ans[],ans[],ans[]);
} int main()
{
//freopen("e://input.txt","r",stdin);
int n, m, t, a, b;
while(cin>>n>>m)
{
memset(tar,,sizeof(tar));
scanf("%d",&t);
for(int i=; i<t; i++)
{
scanf("%d%d",&x[i],&y[i]);
tar[x[i]][y[i]]=true;
}
cal(n,m,t);
} return ;
}
AC代码
NBUT 1121 Sakuya's Fly Knife 飞刀(暴力)的更多相关文章
- bzoj1800[Ahoi2009]fly 飞行棋 暴力枚举
找了道bzoj的水题,千年难得一遇. 建议初学者做做,然而我个蒟蒻初学时应该A不了..... < http://www.lydsy.com/JudgeOnline/problem.php?id= ...
- bzoj 1800: [Ahoi2009]fly 飞行棋 暴力
1800: [Ahoi2009]fly 飞行棋 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- [bzoj1800]fly 飞行棋<暴力>
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1800 说实话我这几天运气不错,随便在bzoj上找题都可以找到水题,这题在代码上没有丝毫难度 ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1689 Solved: 1335[Submit][St ...
- Friends number NBUT - 1223 (暴力打表)
Paula and Tai are couple. There are many stories between them. The day Paula left by airplane, Tai s ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【暴力】
Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input 第一行为 ...
- NBUT 1457 Sona(莫队算法+离散化)
[1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...
- Uva 10167 - Birthday Cake 暴力枚举 随机
Problem G. Birthday Cake Background Lucy and Lily are twins. Today is their birthday. Mother buys ...
- BZOJ_2754__[SCOI2012]_喵星球上的点名_(暴力+后缀数组)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2754 给出n个姓名串和m个点名串.求每个点名串在多少人的姓名中出现过(在名中出现或在姓中出现, ...
随机推荐
- HDU 2602 Bone Collector (简单01背包)
Bone Collector http://acm.hdu.edu.cn/showproblem.php?pid=2602 Problem Description Many years ago , i ...
- VS2010 Notes
1.fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK112 ...
- ExtJs之Ext.getCmp
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...
- ExtJs之Field.Trigger和Field.Spinner
作文本框功能的. <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta h ...
- JDBC第四次学习
传智播客李勇老师的JDBC系列学习终于接近尾声了,好开心,能学到这么多的东西,还不赶快记录下来,留待以后回味! 如何使用开源项目DBCP(实际项目中常用) 主要分为三个步骤: 使用DBCP必须用 ...
- HADOOP NAMENODE对Image和edits的处理
1.SNN CheckPoint的处理流程 配置中配置做CheckPoint的两个条件,一个是文件大小editlog大于多大就做,另一个是时间维度,多长时间做一次. (1)SNN首先检查是否需要进行c ...
- 私有虚函数的特点(C++和Java的机制还有所不同)
多态性与将实现多态的函数的访问限定符没有任何关系,private 函数仍然可以实现多态,它的指针仍然位于vtbl中,只不过该函数的多态一般只能在基类的内部由其他非虚函数调用该函数的时候反映出来,访问限 ...
- linux shell 命令学习(5) xxd- make a hexdump or do the reverse.
对于标准输入或者给定的文件,显示其16进制的内容.也可以反过来进行转换. xxd -h[elp] xxd [options] [infile [outfile]] xxd -r[evert] [opt ...
- iOS:UIAlertController和UIAlertAction的详解
提示框控制器:UIAlertController 提示框按钮:UIAlertAction 功能:用来提示信息,并给出一些可以进行选择的按钮来处理相应的要求. 注意:在Xcode的iOS8 SD ...
- MySQL的数据库引擎
Mysql的数据库引擎有很多,最重要的就是MyISAM.InnoDB.heap(memory),此外还有BDB.archive数据表.csv.ndb.federated InnoDB 优点: 1. ...