楼主: 〇〇

[精华] Puzzleup 2010 比赛快开始了,大家用SQL解答啊

[复制链接]
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
241#
发表于 2010-10-13 23:03 | 只看该作者
猜一个:
20+(20-4)/2*(20/2)=100

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
242#
发表于 2010-10-14 09:58 | 只看该作者
原帖由 newkid 于 2010-10-13 23:03 发表
猜一个:
20+(20-4)/2*(20/2)=100


感觉100有点大了。。。

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
243#
发表于 2010-10-14 09:59 | 只看该作者
哇,发现我不知什么时候多了一颗徽章~ ^^

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
244#
发表于 2010-10-14 10:06 | 只看该作者
我算出一个结果 = 96,不过不知正确否 :D

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
245#
发表于 2010-10-14 10:41 | 只看该作者
发现通项公式
若机场数为M(M>3)
且 3*2^n < M <= 3*2^(n+1),
则直班数 P = 2^(2n+1) + 2^(n+1)*( M - 3*2^n )

对于 M = 20,有 3*2^2 < 20 <= 3*2^3
P = 2^5 + 2^3 * ( 20 - 3*2^2 ) = 32 + 8*8 = 96

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
246#
发表于 2010-10-14 11:06 | 只看该作者
貌似 P 还可以化简下,
P = 2^(n+1)*[ M - 2^(n+1) ]

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
247#
发表于 2010-10-14 13:26 | 只看该作者
原帖由 newkid 于 10-10-13 21:25 发表
又是图论相关,奥数哥大显身手的时候到了:

Airports

In a country there is a total of 20 airports. Each one of these airports are linked to all the others, either through direct or indirect (ie. connecting) flights. There are at most two direct flights among any randomly chosen three airports.

What is the maximum possible number of direct flights among these 20 airports?

Note: If there is a flight between A and B, it can be used in both directions and it will be counted as one flight.

20个机场,它们之间之间或间接可达,任意三个机场之间至多有两个直飞航班。所有机场之间最多可以有多少个直飞航班?注意如果A到B有直飞航班,则为双向,而且只算作一个航班。

20个顶点的连通无向图,任意三个顶点之间只能有两条边,最多可以有多少条边?因为三角形不允许存在,必须画出尽可能多的四边形。


翻译不够准确,已纠正如上,顺带换页

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
248#
发表于 2010-10-14 14:19 | 只看该作者
两两互连,总共有C(20,2)=190条航线,从中找到三个机场互连的情况,然后删除其中一条航线,算一种办法
但在没有明确删除哪条航线时,这种方法无法保证得到一个最大值,但可以保证最大值一定不小于这个值(废话……)

若就 3个点,最多2条
4个点,最多4条(a和bc互连,d和cd互连)
5个点,最多6条(a和bc互连,d和cd互连,然后e和ad或者bc互连)
任意四点最多组成一个四边形
6个点,最多9条(a和bc互连,d和cd互连,然后e和ad,f和bc互连,ef互连)
每新增加一个点,都只能从已经联好的点里面选N个互不相连的,然后用该点与这N个点分别连接,所增加的连接数为N
由此推下去
7个点,最多12条(a和bc互连,d和cd互连,然后e和ad,f和bc互连,ef互连)
8个点,这时最多有4个点是两两互不相连的,因而最多16条

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
249#
发表于 2010-10-14 14:29 | 只看该作者
h 如上图,可以连接a、d、f、g
————————————————————————————————————
好了,至此我们就能看出规律了
增加第N个点时,至多有trunc(N/2)个互不相连的点可连接,此时总共有T条连接
于是乎,就有
T(9)=t(8)+trunc(9/2)=16+4=20

不excel了,开着sql就sql来吧
SCOTT@lw.lw> select n, y1, sum(y1)over(order by n,y1) Y from
  2  (select rownum n, trunc(rownum/2) y1 from dual connect by rownum<21)
  3  /

         N         Y1          Y
---------- ---------- ----------
         1          0          0
         2          1          1
         3          1          2
         4          2          4
         5          2          6
         6          3          9
         7          3         12
         8          4         16
         9          4         20
        10          5         25
        11          5         30
        12          6         36
        13          6         42
        14          7         49
        15          7         56
        16          8         64
        17          8         72
        18          9         81
        19          9         90
        20         10        100

已选择20行。

已用时间:  00: 00: 00.03


故而答案是100个


天哪,newkid你是咋猜的……╮(╯_╰)╭

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
250#
发表于 2010-10-14 15:10 | 只看该作者
原帖由 lastwinner 于 2010-10-14 14:29 发表
h 如上图,可以连接a、d、f、g
————————————————————————————————————
好了,至此我们就能看出规律了
增加第N个点时,至多有trunc(N/2)个互不相连的点可连接,此时总共有T条连接
于是乎,就有
T(9)=t(8)+trunc(9/2)=16+4=20

不excel了,开着sql就sql来吧
SCOTT@lw.lw> select n, y1, sum(y1)over(order by n,y1) Y from
  2  (select rownum n, trunc(rownum/2) y1 from dual connect by rownum



鹦鹉哥的方法是对的,赞~!我的消三角思路错了 - -#

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表