hdu6154 CaoHaha's staff
来源:互联网 发布:热血海贼王数据库修改 编辑:程序博客网 时间:2024/04/29 13:14
题目:
在一个网格纸上,小网格是 1 * 1的。每次可以画一笔,这一笔可以是边长1,也可以是对角线
分析:
同样画一笔,
一个小正方形和一个大正方形之间差了4笔,一个恰能用小正方形满足的面积,肯定用小正方形。若不能满足,不要立刻换大正方形,在两个规格的正方形之间还有4笔没画,这4笔同样可以扩大面积。如何扩大这四笔,见下图。
顺序为:黑 -> 红 -> 蓝 -> 绿 -> 棕
总之,给任何一个面积,总能用这几种图形中的一个来满足。所以,对任意面积,分别计算用这几种图形来满足各需要几笔,取最小的就是答案。
代码:
#include <iostream>#include <algorithm>#include <queue>#include <stack>#include <vector>#include <set>#include <cmath>#include <cstdlib>#include <cstring>#include <cstdio>using namespace std;#define ms(a,b) memset(a,b,sizeof(a))typedef long long ll;const double EPS=1e-8;const int INF=0x3f3f3f3f;int main(){ int T; ll ans,n; scanf("%d",&T); while(T--){ scanf("%lld",&n); ll k1,k2,k3,k4; k1 = sqrt(n/2); while(2*k1*k1 < n){ k1++; } k2 = (-1 + sqrt(5 + 8*n))/4; while(2*k2*k2+k2-0.5 < n+0.0){ k2++; } k3 = (-1 + sqrt(1 + 2* n))/2; while(2*k3*k3 + 2*k3 < n){ k3++; } k4 = (-3+sqrt(9-4+8*n))/4; while(2*k4*k4 + 3*k4 + 0.5 < n + 0.0){ k4++; } ans = min(min(4*k1,4*k2+1),min(4*k3+2,4*k4+3)); printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- HDU6154-CaoHaha's staff
- hdu6154 CaoHaha's staff
- 【HDU6154】CaoHaha's staff (二分+规律)
- HDU6154 CaoHaha's staff 找规律|签到
- hdu6154-CaoHaha's staff(找规律)
- hdu6154 CaoHaha's staff 找规律
- hdu6154 CaoHaha's staff CCPC网赛1005 找规律+构造
- hdu6154-CCPC网络赛&规律-CaoHaha's staff
- HDU6154 CaoHaha's staff(规律,2017中国大学生程序设计竞赛
- 2017CCPC网络赛1005 hdu6154 CaoHaha's staff
- CaoHaha's staff
- HDU_6154 CaoHaha's staff
- CaoHaha's staff
- hdu-CaoHaha's staff
- HDU 6154 CaoHaha's staff
- CaoHaha's staff(hdoj6154)
- Hdu 6154 CaoHaha's staff
- HDU 6154 CaoHaha's staff
- Super Mobile Charger FZU
- 珍味世家零售版
- spinner 适配器
- 8月22日云栖精选夜读:新零售业务中台设计及产品体系解决方案
- Android照片墙完整版,完美结合LruCache和DiskLruCache
- hdu6154 CaoHaha's staff
- eoj 3329 奇异收缩的剪影(异或性质的运用,简单dp)(存疑)
- 干货 | 算法工程师入门第二期——穆黎森讲增强学习(一)
- Android自定义View
- C#视窗大小
- 五种Sublime text 3同时快速编辑多行内容
- iOS开发小知识之改变UIlabel的行间距和字间距
- C++ 11特性(笔记)
- 病毒侵袭持续中(AC自动机)