携程员工运动会场地问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 821    Accepted Submission(s): 231

Problem Description
携程每年要举行员工运动会,现在需要搭建三角形的场地给运动员们自由活动。
现在有N (3 <= N <= 40)个栅栏段(每个栅栏长度Li (1 <= Li <= 40)),必须刚好用掉所有的栅栏拼成一个最大面积的三角形活动区域,
求这个最大面积。
 
Input
* 第一行: 整数 N ,表示有多少个栅栏

* 第 2..N+1行: 共N 行, 每行中包括一个整数, 表示 一个栅栏的长度.( 多个栅栏的长度可以出现相同).

* 第N+3行:第二组数据。

每组数据隔一空行,文件末尾以0结尾。

 
Output
每行输出一个截取后的整数,即最大面积乘以100后的整数。 如果无法构成,输出 -1。
 
Sample Input
5
1 1 3 3 4
5
12 37 1 4 3 0
 
Sample Output
692
-1

一道简单的二维背包问题,当时由于有一段时间没有碰这种题,在做这道题的时候也没有向这个方向想....

并只以为很装B的用着组合数字里的,frrerrs图像可以AC。。。但是最后wa的一塌糊涂....

谢安贴一下错误的代码吧....以此为戒.

代码:

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<math.h>
#include<iostream>
#include<functional>
using namespace std;
int main()
{
int n,i;
double ans,tol;
//freopen("test.in","r",stdin);
//freopen("test.out","w",stdout);
while(scanf("%d",&n)!=EOF)
{
vector<int>aa(n+);
for(i=;i<n;i++)
cin>>aa[i];
sort(aa.begin(),aa.end(),greater<int>());
for(i=;i<n;i++)
{
if(aa[]>aa[])
{
if(aa[]>aa[])
aa[]+=aa[i];
else
aa[]+=aa[i];
}
else
{
if(aa[]>aa[])
aa[]+=aa[i];
else
aa[]+=aa[i];
}
}
tol=(aa[]+aa[]+aa[])/2.0;
ans=(100.0*sqrt(tol*(tol-aa[])*(tol-aa[])*(tol-aa[]))); //o£?×1?ê?
if(ans>1.0e-4)
{
printf("%d %d %d\n",aa[],aa[],aa[]);
printf("%.lf\n",floor(ans)); }
else
printf("-1\n");
}
return ;
}

copy

当然上面的代码,一般的情况是可以过的,但是有bug.....
比如下面的数据就过不了...

 /*
10
1 3 6 9 0 8 5 7 4 2
7 6 5 4 3 2 1 0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
10 9 8 7 6 5 4 3 2 1 0
*/ //answer
/*
9742
2121
-1
-1
-1
-1
447
1082
2121
3741
6235
9742
*/

用二维0/1背包来求解为:
当然是经过优化后的...

 //二维0/1背包
//扩大栈空间
#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
int val[],aa[];
bool dp[][];
int main()
{
int n,i,j,k,ans,len,temp;
double cc;
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
while(scanf("%d",&n)!=EOF)
{
memset(dp,,sizeof(dp));
memset(aa,,sizeof(aa));
for(i=;i<=n;i++)
{
scanf("%d",&val[i]);
aa[i]+=aa[i-]+val[i];
}
cc=aa[n]/2.0;
len=cc;
temp=;
dp[][]=true;
for(i=;i<=n;i++)
{
if(len<=aa[i])
temp=len;
else temp=aa[i];
for(j=temp;j>=;j--)
{
for(k=temp;k>=;k--)
{
if((j-val[i]>=&&dp[j-val[i]][k])||(k-val[i]>=&&dp[j][k-val[i]]))
dp[j][k]=true;
}
}
}
ans=;
for(i=;i<=len;i++)
{
for(j=;j<=len;j++)
{
if(dp[i][j])
{
if(ans<*sqrt(cc*(cc-i)*(cc-j)*(i+j-cc)))
ans=*sqrt(cc*(cc-i)*(cc-j)*(i+j-cc));
}
}
}
if(ans==) printf("-1\n");
else printf("%d\n",ans);
}
return ;
}

HDUOJ---携程员工运动会场地问题的更多相关文章

  1. OpenStack虚拟云桌面在携程呼叫中心的应用

    编者:本文为刘科在第六期[携程技术微分享]中的分享内容.在携程技术中心(微信号ctriptech)微信后台回复[云桌面],可加入微信交流群,和关注云桌面的小伙伴一起玩耍~ 刘科,携程系统研发云平台桌面 ...

  2. 我所了解的 京东、携程、eBay、小米 的 OpenStack 云

    参加过几次 OpenStack meetup 活动,听过这几家公司的Architect 讲他们公司的 OpenStack产品.本文试着凭借影响加网络搜索,按照自己的理解,对这些公司的 OpenStac ...

  3. IBM、京东、携程、eBay 的 OpenStack 云

    我所了解的 IBM.京东.携程.eBay 的 OpenStack 云 参加过几次 OpenStack meetup 活动,听过这几家公司的Architect 讲他们公司的 OpenStack产品.本文 ...

  4. 敏捷之旅--携程行程&订单团队

    转自本人运营的公众号“ 携程技术中心PMO”(ID:cso_pmo)     关于我们   我们面临的挑战   敏捷开发是以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.先把一个大项目分 ...

  5. 微信小程序体验(1):携程酒店机票火车票

    在 12 月 28 日微信公开课上,张小龙对微信小程序的形态进行了阐释,小程序有四个特定:无需安装.触手可及.用完即走.无需卸载. 由于携程这种订酒店.火车票和机票等工具性质非常强的服务,非常符合张小 ...

  6. 携程App的网络性能优化实践

    首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一 ...

  7. 实现携程X分钟前有人预定功能

    实现携程X分钟前有人预定功能 原理:利用cookie与计时器两部分: 首先,进入页面,x会被随机数赋值,赋值后x会一分钟加1,直到加到60,再从1开始累加. 页面是否相同是根据页面的url后的id值判 ...

  8. 今天携程出事了:让我们来学习下http的响应码

    就在今天,2015年5月28日,中国最大的旅游机票预订网站--携程网粗大事了.据传携程网的数据库被人物理删除了,而容灾备份的数据又无法正常使用,服务器全面遭受瘫痪.每小时给携程带来的损失约100万美元 ...

  9. 携程Ctrip DAL的学习 2

    携程Ctrip DAL的学习 2 本人net开发菜鸟,原理请自行看github的官网源码. 我这里是简单的使用(helloworld的水平). 代码生成器的使用 详见 官网使用说明 注意的地方: 1 ...

随机推荐

  1. tornado基础入门(一)——简单了解tornado

    参考:http://demo.pythoner.com/itt2zh/ch1.html tornado是一个轻量级的web框架,是一个用python写的web服务器,它有三个最大的特点(优势)速度.简 ...

  2. u-boot支持yaffs映像烧写的补丁

    u-boot的nand flash驱动有两个版本,似乎是以u-boot1..5为分界点的,之前的版本使用的是自己写的nand flash驱动,而后面的版本使用的是linux内核中nand flash的 ...

  3. Objective-C:对象之间循环引用会造成死循环

    对象之间的循环引用        两个对象A.B,有可能会出现一种特殊的情况:A中包含B的实例变量:B中又包含A的实例变量,如果两个实例变量都是强引用(A有B实例变量的所有权,B也有A的实例变量的所有 ...

  4. [置顶] think in java interview-高级开发人员面试宝典(一)

    “生死六重门” 无论你是在职,非在职,高级工程师,工程师,架构师,如果你正在面试阶段,请看完此文! 相信这篇文章对你的职业生涯和阶值观会造成重大的改变! 如果你是一名PM或者是管理者正在物色合适的开发 ...

  5. 如何在Windows 7 或Vista中修改MTU

    Windows操作系统使用Maximum Transmission Unit (MTU) 来确定在下面的网络层上可以传输的协议数据包(protocol data packet)的最大尺寸. MTU参数 ...

  6. IOS开发之地图导航

    一.问题描述 现在很多的APP 都开始引入了地图和定位功能,包括一些餐饮业,团购等.他们都过定位和地图来让用户更加方便的根据自己的位置找到合适的目标,也就是说,现在地图定位已经不再是导航工具类,地图工 ...

  7. CI框架入门中的简单MVC样例

    最简单的CI模型: 注意:模型须要用到数据库 配置文件在appcation/config.php 这里我们要用到数据库,须要将databases.php中的 相关參数填写一下,详细不再赘述. 直接进入 ...

  8. Android -- Fragment注意事项

    ViewPager+Fragment 让Fragment成为ViewPager的一页时,FragmentManager会一直保存管理创建好了的Fragment,即使当前不是显示的这一页,Fragmen ...

  9. Android -- 程序启动画面 Splash

    很多应用都会有一个启动界面.欢迎画面慢慢隐现,然后慢慢消隐. 我的方式是使用两个Activity,程序启动时候load第一张Activity,然后由tick触发N秒钟后startActivity另外一 ...

  10. [置顶] hdu 4418 高斯消元解方程求期望

    题意:  一个人在一条线段来回走(遇到线段端点就转变方向),现在他从起点出发,并有一个初始方向, 每次都可以走1, 2, 3 ..... m步,都有对应着一个概率.问你他走到终点的概率 思路: 方向问 ...