HDU
来源:互联网 发布:淘宝发布宝贝主图尺寸 编辑:程序博客网 时间:2024/06/08 13:54
题目大意:
在一个二维坐标系中,给你一个整数面积 S ,让你用尽量少的边围出一个封闭图形,使得该图形的面积大于等于 S 。每条边可以是长为 1 的平行或垂直于坐标轴的线段或者斜率为 1 或 -1 长为
分析:
首先至少 4 条边才能围成封闭图形,然后我考虑对于每一条边,最多能围成的面积。如果是偶数条边,那么就是使得两条边长度差最小得到的面积。如果是奇数条边,那么就是,首先少用一条,然后围成一个偶数条边的最大矩形,之后在这个矩形的较长边上增加一条边,可以突出一个梯形的部分,这就是对应的最大面积。打好表之后,对于每一个给入的 S,扫一遍就行了。
代码:
#include<bits/stdc++.h>#define maxn 500000using namespace std;long long int f[maxn];void init(){ f[4]=2; f[5]=2; for(int i=6;i<maxn;i++) { if(i%2==0) { if(i%4!=0)f[i]=(long long int)(i/4)*(long long int)(i/4+1)*2; else f[i]=(long long int)(i/4)*(long long int)(i/4)*2; } else { if((i-1)%4!=0)f[i]=f[i-1]+(long long int)(i-1)/4; else f[i]=f[i-1]+(long long int)(i-1)/4-1; } //else f[i]=(long long int)((i-1)/4)*(long long int)((i-1)/4+1)*2+(long long int)((i-1)/4); }}int main(){ init(); int t; scanf("%d",&t); while(t--) { int s; scanf("%d",&s); for(int i=4;i<maxn;i++) { if(f[i]>=s) { printf("%d\n",i); break; } } }}
阅读全文
4 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- SpringBoot专题1----springboot与mybatis的完美融合
- 数组
- NOI2017同步赛游记
- 大二课本之链表理解
- HDU 6152 Friend-Graph
- HDU
- 输入输出外挂
- 使用idea maven实现Spring+mybati的整合
- BZOJ 3998 [TJOI2015]弦论 后缀数组
- linux多线程学习设置线程调度权限
- snapshot_Multi-Engine_Trigger_Algorithm
- 20-SpringBoot——核心-运行原理
- Spring事务的隔离级别
- 单调递增最长子序列nyoj17