携程员工运动会场地问题

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的一塌糊涂....

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

代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<algorithm>
 5 #include<vector>
 6 #include<math.h>
 7 #include<iostream>
 8 #include<functional>
 9 using namespace std;
10 int main()
11 {
12     int n,i;
13     double ans,tol;
14     //freopen("test.in","r",stdin);
15     //freopen("test.out","w",stdout);
16     while(scanf("%d",&n)!=EOF)
17     {
18         vector<int>aa(n+1);
19         for(i=0;i<n;i++)
20             cin>>aa[i];
21      sort(aa.begin(),aa.end(),greater<int>());
22      for(i=3;i<n;i++)
23      {
24          if(aa[0]>aa[1])
25          {
26              if(aa[1]>aa[2])
27                  aa[2]+=aa[i];
28              else
29                  aa[1]+=aa[i];
30          }
31          else
32          {
33              if(aa[0]>aa[2])
34                   aa[2]+=aa[i];
35              else
36                   aa[0]+=aa[i];
37          }
38      }
39           tol=(aa[0]+aa[1]+aa[2])/2.0;
40           ans=(100.0*sqrt(tol*(tol-aa[0])*(tol-aa[1])*(tol-aa[2])));    //o£?×1?ê?
41      if(ans>1.0e-4)
42               {
43                   printf("%d %d %d\n",aa[0],aa[1],aa[2]);
44                   printf("%.lf\n",floor(ans));
45
46               }
47      else
48           printf("-1\n");
49     }
50     return 0;
51 }

copy

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

 1 /*
 2 10
 3 1 3 6 9 0 8 5 7 4 2
 4 7 6 5 4 3 2 1 0
 5 1 0
 6 2 1 0
 7 3 2 1 0
 8 4 3 2 1 0
 9 5 4 3 2 1 0
10 6 5 4 3 2 1 0
11 7 6 5 4 3 2 1 0
12 8 7 6 5 4 3 2 1 0
13 9 8 7 6 5 4 3 2 1 0
14 10 9 8 7 6 5 4 3 2 1 0
15 */
16
17 //answer
18 /*
19 9742
20 2121
21 -1
22 -1
23 -1
24 -1
25 447
26 1082
27 2121
28 3741
29 6235
30 9742
31 */

View Code

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

 1 //二维0/1背包
 2 //扩大栈空间
 3 #pragma comment(linker, "/STACK:102400000,102400000")
 4 #include<stdio.h>
 5 #include<math.h>
 6 #include<string.h>
 7 #include<stdlib.h>
 8  int val[41],aa[41];
 9  bool dp[801][801];
10 int main()
11 {
12     int n,i,j,k,ans,len,temp;
13     double cc;
14     freopen("test.in","r",stdin);
15     freopen("test.out","w",stdout);
16     while(scanf("%d",&n)!=EOF)
17     {
18        memset(dp,0,sizeof(dp));
19        memset(aa,0,sizeof(aa));
20       for(i=1;i<=n;i++)
21        {
22          scanf("%d",&val[i]);
23          aa[i]+=aa[i-1]+val[i];
24        }
25         cc=aa[n]/2.0;
26         len=cc;
27         temp=0;
28        dp[0][0]=true;
29        for(i=1;i<=n;i++)
30        {
31            if(len<=aa[i])
32                 temp=len;
33            else temp=aa[i];
34          for(j=temp;j>=0;j--)
35          {
36            for(k=temp;k>=0;k--)
37            {
38               if((j-val[i]>=0&&dp[j-val[i]][k])||(k-val[i]>=0&&dp[j][k-val[i]]))
39                   dp[j][k]=true;
40            }
41          }
42        }
43        ans=0;
44        for(i=1;i<=len;i++)
45        {
46            for(j=1;j<=len;j++)
47            {
48                if(dp[i][j])
49                {
50                  if(ans<100*sqrt(cc*(cc-i)*(cc-j)*(i+j-cc)))
51                     ans=100*sqrt(cc*(cc-i)*(cc-j)*(i+j-cc));
52                }
53            }
54        }
55        if(ans==0)  printf("-1\n");
56         else  printf("%d\n",ans);
57     }
58   return 0;
59 }

View Code

转载于:https://www.cnblogs.com/gongxijun/p/3662759.html

HDUOJ---携程员工运动会场地问题相关推荐

  1. 携程员工的幸福感又增加了!

    在携程,员工怀孕生子非但不会影响工作,反而会得到公司"生一个娃5万元"的奖励! 据悉,携程自7月1日开始已经正式执行这个政策了.消息传出后,众多网民在热议中纷纷表示,携程的员工真幸 ...

  2. 【号外】携程变相裁员,员工拉横幅讨薪

    昨日有消息指出,携程总部楼下出现员工讨薪横幅.其原因是携程机票配送部门要裁员,据悉,该部门在北京.上海.广州.成都等均有设立,但是因为裁员方式不被接受,成都等地已经开始与携程打官司.而发生在携程上海总 ...

  3. 携程CEO称成功来自传统营销 B2C已经过时

    一夜之间身家暴涨至6亿多元的携程网CEO梁建章认为,电子商务发展一日千里,已经不再是过去所提的B2B.B2C.C2C这些旧概念.而携程的成功主要在于传统的营销手段,而不是互联网. 梁建章日前表示,70 ...

  4. 携程CEO孙洁:17年后的红色警报

    采访整理 / 刘煜 编辑 / 严睿 2020 焦虑与抉择 2020年新年开端这场重大疫情的奇袭,不仅是对国人个体免疫力的挑战,更是对群体意识协同性的考验. 从西贝的哀嚎到KTV土豪老板的悲凉,以及各种 ...

  5. 携程二十,尚能战否?

    ▼数据猿年度征集评选活动正在进行中▼ 大数据产业创新服务媒体-聚焦数据·改变商业 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新 ...

  6. 近六成员工强烈支持,携程将推出“3+2 ”工作模式,一周三天到岗两天在家办公...

    整理 | 于轩 出品 | 程序人生(ID:coder _life) 对于通勤时间动辄一两个小时的上班族来说,在家办公可谓是最理想的选择.情人节当天,携程宣布将推出"3+2"混合办公 ...

  7. 国内首家!携程每周两天可在家“躺平”,76% 的员工主动报名

    继快手.字节等公司取消大小周后,携程开始试验混合办公模式. 整理 | 王晓曼 出品 | 程序人生(ID:coder _life) 8月9日,携程集团宣布启动"2021混合办公试验" ...

  8. 混合办公时代来了?携程试点每周两天居家办公,76%的员工主动报名!

    自去年新冠疫情爆发以来,曾经我们都经历了一段时间的在家办公时期.得益于国内高效的疫情防控.很快我们又恢复了正常上班的节奏.而在国外,由于疫情控制未能得到有效控制,Facebook.苹果.Google. ...

  9. 携程试点每周两天居家办公反响热烈,76%的员工主动报名

    整理 | 钰莹.核子可乐 国外反响热烈的混合办公时代终于也要在国内开启了吗? 1.携程试点远程办公,76% 的员工报名 8 月 9 日,携程集团宣布启动"2021 混合办公试验". ...

  10. 携程显示连接不到服务器,携程:网络故障由员工错误操作导致

    网易科技讯 5月29日讯 今日凌晨1:30分,携程官方称,经携程技术排查,确认此次事件是由于员工错误操作导致.从5月28日上午11:09,发现携程官网及APP出现故障,到28日23:29全面恢复,整个 ...

最新文章

  1. 涉密计算机用户账号设置审批表,北京邮电大学涉密计算机配置审批表.PDF
  2. 2月书讯 | 193张图表+388段代码,原版长销13年的日系书终于来了
  3. 自定义Lisp透明命令
  4. c语言c2182是什么错误,C语言中一种更优雅的异常处理机制
  5. 联想v3500存储Linux配置手册,OEL6.X IBM v3500存储多路径配置
  6. Odoo(OpenERP)配置文件详解
  7. bsp模型适用于图计算_CODE V微信简报:光束合成传播算法(BSP)
  8. AUTOSAR专业知识篇(八)-大众ID.4 X网络架构详解
  9. Python程序员都会喜欢的6个库
  10. linux 搭建svn注意事项
  11. gom引擎传奇MapInfo.txt地图参数详解
  12. PIC单片机学习-中断
  13. STM8S103K3和STM8S105K4原理图
  14. 台式机和笔记本快速互拷超大文件
  15. POI标注分类数据/POI数据分析/商业分析制图
  16. Android 使用adb查看和修改电池信息
  17. java8中的流(Stream)
  18. vue 根据链接生成二维码(功能实现)
  19. edge使用html2协议,Legacy Microsoft Edge developer documentation
  20. 2022年山东省职业院校技能大赛中职组“网络搭建与应用”赛项规程

热门文章

  1. 实例分割最全综述(上):二阶段实例分割和一阶段实例分割
  2. 中科院计算机所 保研机试题,中科院软件所、计算所保研复试回忆
  3. 正好配资在线开户叶飞带崩小票
  4. 第二届“马栏山”杯国际音视频算法大赛音乐节拍检测题参赛总结及分享(Rank7)
  5. matlab在三维人体及服装建模上的应用,Matlab在三维人体及服装建模上的应用
  6. react配合modal实现progress进度条
  7. 跟我一起学Linux系统编程006C-进程内存分配,堆分配brk、malloc、free
  8. mysql实体完整性实现方法_MySQL数据库高级(一)——数据完整性
  9. 安全删除硬件并弹出媒体的列表中出现内置硬盘的解决办法.
  10. 在局域网内怎样使两台计算机共享,怎么使两台电脑共享数据?