北京林业大学“华为杯”程序设计竞赛题解(非官方)&比赛感受

本文详细解析了北京林业大学“华为杯”程序设计竞赛的题目,涉及数学、博弈论、图论等多个知识点。解题策略包括数学归纳法、模拟、贪心算法等,同时分享了比赛过程中的失误与赛后感想。
摘要由CSDN通过智能技术生成

A

题意:给2n个数,分别是1,2,…2n。让你分成元素数量相等的两个集合{A}和{B},满足每个集合中所有数的i次方和相等(i从1到n-1)。
知识点:数学
解法:观察到n等于2时,分为{1,4}和{2,3}。n等于3时,分为{1,4,6,7}和{2,3,5,8}。猜想每次n自增时,后面续2n-1个数,分别是另外一个集合所有数增加2n-1的值。
交了一发直接过了。后面听题解得知可以用数学归纳法证明。

B

题意:给一个井字棋的残局,问是否有必胜策略。
知识点:博弈/dfs
解法:我的解法是每一步按最优策略模拟下棋。所谓最优策略是:直接获胜步优先,防守直接获胜次之,2步必胜再次之。然后按中间>角>边的策略。跑了一些样例之后把走过1步的一些特解也加进去了。
最后因为把小写的“yes”打成了大写导致wa了,真的太可惜了。
官方给出的题解是O(n!)的dfs爆搜法,tqlxbl

C

题意: 每个点染色对区间(x-bi,x+bi)的点全部染色,并产生连锁反应(直到连锁不了为止)。第i个点染色点数量ai。求Σai*i
知识点:图论
不会做。。

D

题意:给定一个数组a[n],对于排列{k+1,k+2,…,k+n},改变其顺序(第i项记为b[i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值