2013 ACM区域赛长沙 H zoj 3733 (hdu 4798) Skycity

题意:一个圆台,底面和顶面半径分别为R,r,然后高度为H,一共F层,每层高度一样,然后要在每层的天花板上贴方格玻璃,方格玻璃要满足以下几个条件:

方格玻璃面积不能小于S,且方格玻璃要围成一个正多边形,且正好将天花板围住(也就是说天花板的圆面是这个多边形的内接圆),并且要使得贴的玻璃数量尽量少,也就是说这个正多边形的边数要尽量少。问最后所用玻璃的总面积。

思路:先求每个圆的半径,也就是等差数列。再二分正多边行数量。二分容易出错,此题还有精度要求。。。。。

 1 #include <iostream>
 2 #include <string.h>
 3 #include <stdio.h>
 4 #include <algorithm>
 5 #include <cmath>
 6 using namespace std;
 7 const double pi=acos(-1);
 8 int R,r,H,t,S;
 9 double h,ans;
10 double get(int n,double r) {
11     return 2.0*r*tan(pi/n);
12 }
13
14 void binary() {
15     int limit=100000;
16     for(int i=t; i>=1; i--) {
17         double rr=1.0*(R-r)/t*(i-1)+r;
18         int mi=3,ma=limit,mid,num;
19         double s;
20         while(mi<=ma) {
21             mid=(mi+ma)>>1;
22             double tmp=get(mid,rr)*h;
23             if(tmp-S>1e-8) {
24                 s=tmp;
25                 num=mid;
26                 mi=mid+1;
27             } else
28                 ma=mid-1;
29         }
30         ans+=num*s;
31         limit=num;
32     }
33 }
34
35 int main() {
36     while(~scanf("%d%d%d%d%d",&R,&r,&H,&t,&S)) {
37         h=(double)H/t,ans=0;
38         binary();
39         printf("%.3lf\n",ans);
40     }
41     return 0;
42 }

时间: 2024-12-19 18:46:03

2013 ACM区域赛长沙 H zoj 3733 (hdu 4798) Skycity的相关文章

08年acm区域赛北京赛区 部分题解题报告

08年区域赛北京赛区 http://poj.org/searchproblem?field=source&key=Beijing+2008 POJ 3921 Destroying the bus stations 题目还是比较难的,当时的榜似乎只有4/25的通过/提交,其实题目数据很水.学长转换模型写了网络流求最小割,可以AC,不过自己造了个数据推翻了正确性.我写了个很挫的bfs套bfs,外层是最小的删除点数,内层是求最短路,数据很水可以AC.但比较蛋疼的在于bfs耗内存,而且队列中的点数是阶乘

HDOJ Hard Disk Drive 4788【2013成都区域赛H题-水】

Hard Disk Drive Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1887    Accepted Submission(s): 1042 Problem Description Yesterday your dear cousin Coach Pang gave you a new 100MB hard disk dri

2013区域赛长沙赛区现场赛 K - Pocket Cube

K - Pocket Cube Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4801 Description Pocket Cube is a 3-D combination puzzle. It is a 2 × 2 × 2 cube, which means it is constructed by 8 mini-cubes.

【组队训练】2013南京区域赛

大概是第四五次组队训练了. 四题. 第一次进铜牌线了= =(苦笑 A题,水题,队友看一会就敲了,1A. J题,我看的,没看懂,叫队友和我一起看,三个人在没有讨论的情况下,全都理解错题意,凑不出样例,后来zr说,before和after应该是空间的,恍然大悟…… 因为当RYB都>=2的时候有公式,我就直接分类讨论其他情况.写的……shi一样……wa了好几次,和zr一起找了半天,7A…… #include <bits/stdc++.h> using namespace std; typede

【组队训练】2013天津区域赛

三题,按现场排名应该是80名,铜牌靠后. 几次训练发现自己的心理素质实在是太!差!了!一开始,老规矩,我k题,zrA题,ysB题. A题大模拟,比较费时,zr先看了过了几个人的H,31mins,1A B题过的人越来越多,我看了N久终于看懂K题……不会做……我去问ys怎么样,他说了下题意,我觉得很水的暴力,让他直接写,他一直在和我讲说复杂度不够.我有点不耐烦,直接上机写.写的过程中出了点小问题,不过还是水题,一个小时左右1A #include <cstdio> #include <cstr

2017 ACM区域赛现场赛 青岛站 E (polya计数)

题目链接(暂无) 吐槽:这场比赛感觉对我感觉还算友好,虽然Q群知乎上命题方已经被喷死了,C语言上机题还有字符串题有大腿队友轻松搞定,网络流恰是我能想出来的,E本来也应该是在能力范围内,不过因为之前没写过跑程序搜置换的题,一时看到就发怵..万幸过掉了K题网络流拿到了金,不然场上没写E打铜得后悔死我.. 题意:一个3*3*1的长方体,有3*3(顶面)+3*4(侧面)+3*3(底面)=30个待染色的小面,长方体有四个可扭动的轴,位于四条边的中间那个1*1*1的小块,每次可扭动180°.支持的基本的置换

2017 ACM区域赛(南宁站) 参赛流水账

day0: 早上四点起床赶飞机,还好没有吵醒室友导致被打死.本来想在飞机上准备一下下周的小测,结果飞机一点都不平稳,只能全程和队友吹逼聊天.下午在宾馆里和johann通关了一部合金弹头,重温了童年的经典.晚上补了补前一天晚上的CF educationnal round的E题和F题,然后被彪爷拉去开黑打牛客网的一个比赛,一看比赛都已经开始2小时了,不过彪爷实力稳如狗,我写了个D题,他写了ABCE,最后rank 9,要是早点参加就可以骗到奖金了QAQ.  打完比赛逛逛B站发现fgo出了一个剧场版动画

2013 ACM/ICPC 长沙现场赛 A题 - Alice&#39;s Print Service (ZOJ 3726)

Alice's Print Service Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice is providing print service, while the pricing doesn't seem to be reasonable, so people using her print service found some tricks to save money. For example, the price when

HDU 4791 Alice&#39;s Print Service(2013长沙区域赛现场赛A题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791 解题报告:打印店提供打印纸张服务,需要收取费用,输入格式是s1 p1 s2 p2 s3 p3...表示打印区间s1到s2张纸的单价是p1,打印区间s2 到s3的单价是p2....最后是sn到无穷大的单价是pn,让你求打印k张纸的总费用最少是多少?有m次查询. 因为s1*p1 > s2 * p2 > s3*p3......,很显然,加入k所在的那个区间是第x个区间,那么最低费用要么是k * p