2015百度之星 放盘子

2024-09-05 17:18
文章标签 百度 2015 盘子 之星

本文主要是介绍2015百度之星 放盘子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

放盘子

Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description
小度熊喜欢恶作剧。今天他向来访者们提出一个恶俗的游戏。他和来访者们轮流往一个正多边形内放盘子。最后放盘子的是获胜者,会赢得失败者的一个吻。玩了两次以后,小度熊发现来访者们都知道游戏的必胜策略。现在小度熊永远是先手,他想知道他是否能获胜。 注意盘子不能相交也不能和多边形相交也不能放在多边形外。就是说,盘子内的点不能在多边形外或者别的盘子内。
Input
第一行一个整数$T$,表示$T$组数据。每组数据包含$3$个数$n,a,r (4 \leq n \leq 100,0 < a < 1000,0 < r < 1000)$ $n$是偶数,代表多边形的边数,$a$代表正多边形的边长,$r$代表盘子的半径。
Output
对于每组数据,先输出一行 Case #i: 然后输出结果.如果小度熊获胜,输出”Give me a kiss!” 否则输出”I want to kiss you!”
Sample Input
2
4 50 2.5
4 5.5 3
Sample Output
Case #1:
Give me a kiss!
Case #2:
I want to kiss you!
Hint
在第一组样例中,小度熊先在多边形中间放一个盘子,接下来无论来访者怎么放,小度熊都根据多边形中心与来访者的盘子对称着放就能获胜。  

Problem's Link:   http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=584&pid=1004


 

analyse:

SB题。

策略是这样的:因为是百度熊先放,如果可以放第一个,百度熊就将这个盘子放在正多边形的中央(盘子圆心和正多边形的中心重合),剩下的就是别人怎么放,百度熊跟着放在对称的位置就行。因为:边数为偶数的正多边形一定是关于几何中心对称。

问题就简化成了:如果能放下第一个盘子,百度熊就一定能赢。

只需要求出正多边形对边的距离和2*r相比较即可。

                      

Time complexity: O(n)

 

Source code:  

Java代码:
import java.util.Scanner;
public class Main
{
static Scanner in=new Scanner(System.in);
double calcLen(int n,double a)
{
if(n==4) return a/2.0;
double PI=3.1415926;
return a/2.0/(Math.tan(PI*360.0/(double)n/2.0/180));
}
public static void main(String[] args)
{
int t=in.nextInt();
for(int Cas=1;Cas<=t;++Cas)
{
int n;
double a,r;
n=in.nextInt();
a=in.nextDouble();
r=in.nextDouble();
System.out.println("Case #"+Cas+":");
double len=new Main().calcLen(n,a);
if(len-r>=0.0)
System.out.println("Give me a kiss!");
else
System.out.println("I want to kiss you!");
}
}
}
View Code

C++代码:

/*
* this code is made by crazyacking
* Verdict: Accepted
* Submission Date: 2015-05-24-19.09
* Time: 0MS
* Memory: 137KB
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#define  LL long long
#define  ULL unsigned long long
using namespace std;
int  i, t, n;
double a, r, x, y;
int main()
{
scanf( "%d", &t );
for ( i = 1; i <= t; i++ )
{
scanf( "%d%lf%lf", &n, &a, &r );
printf( "Case #%d:\n", i );
x = ( 90 * n - 180 ) / n;
y = a / 2 * tan( x / 180 * 3.1415927 );
if ( y < r ) {printf( "I want to kiss you!\n" ); continue;}
printf( "Give me a kiss!\n" ); continue;
}
return 0;
}
View Code

 

这篇关于2015百度之星 放盘子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139583

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

Imageview在百度地图中实现点击事件

1.首先第一步,需要声明的全局有关类的引用 private BMapManager mBMapMan; private MapView mMapView; private MapController mMapController; private RadioGroup radiogroup; private RadioButton normalview; private RadioBu

CF Bayan 2015 Contest Warm Up B.(dfs+暴力)

B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/probl

CF Bayan 2015 Contest Warm Up A.(模拟+预处理)

A. Bayan Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/problem/A The fi

2015年校赛总结

题目名为“校赛总结”,其实更想换成“Rainbow为什么五题滚粗?!”。作为今年校赛大二没拆的两个队伍之一,结果打成这样,没脸见人了,总结起来就是我认为自己今天SB了。主要有以下几点: 1.我今天状态的确不好,最后卡的那道B题跟去年在农大校赛上遇见的那题类似,在最后那段时间我已经有思路了,可是由于当时不敢写。等到最后15分钟才开始敲,加上我用很麻烦的Dijstra那种方法,调试起来好多细节要处理

百度之星 2015 复赛 1001 (数长方形)

数长方形    Accepts: 595    Submissions: 1225  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形

百度之星 2015 初赛(1) 1002 找连续数

找连续数      Accepts: 401      Submissions: 1911  Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是

百度之星初赛1002(二分搜索)

序列变换    Accepts: 816    Submissions: 3578  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 给定序列 A={A1,A2,...,An} , 要求改变序列A中

百度之星初赛1006(计算几何:能包含凸包的最小矩形面积)

矩形面积    Accepts: 717    Submissions: 1619  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些

2015多校联合训练第三场Work(hdu5326)

题意: a是b的上司,b是c的上司,则a是c的上司,问构成一个树种,有多人是 k个人的上司 思路: 先找出root,然后dfs一下就行 #include <bits/stdc++.h>#define LL long longusing namespace std;const int MAXN = 1e6;int f[105];int n, k;int mp[101][101];