School Team Contest #2 ABCEH 解题报告

Problem A:

给你一片叶子的信息,从哪颗树上掉下的和颜色,然后问有几种不同的叶子

由于数据不大,用的暴力法比较法解决

tutorial里讲到一种比较好的方法就是把信息(字符串)进行排序,然后忽略相同的,这种方法在数据量大的时候效果应该会比较好

代码:

 

 

Problem B:

给你体积为0.5,1,2的三种瓶子,每种分别有a,b,c个,问用这些瓶子装体积为n的可乐可以有多少种方法

我的方法是DP,设cnt[i]为装体积i有多少种方法,由于0.5的存在,把体积都扩大2倍,若i=j+v(v=1,2,4),则cnt[i]+=cnt[j]

初始cnt[0]=1

代码:

 

Problem C:

题目意思抽象出来就是给若干个区间,每次把区间上的点覆盖一次,然后问你是否每个点都只被覆盖一次,若不是,输出第一个不满足条件的点和它被覆盖的次数,由于数据量很小,也就变成一道水题了

代码:

 

 

Problem E:

给你一长串字符,然后要你把它分成k行输出,每行至少输出a个字符,之多输出b个字符

注意到当l<k*a或者l>k*b时,是无解的

当有解时,k*a<=l<=k*b => a<=l/k<=b,设h=l/k,如果h为整数,每行输出h个,否则,令ret=l%k,ret<k,我们可以选择前ret行输出h+1个

代码:

 

Problem H:

给你玛莎的电话号码s,然后她随即选一个数字作为新号码t的首位,新号码的第i位这样得到:t[i]=(s[i]+t[i-1])/2,如果t[i]为小数,可以向上或向下取整,问一共可以得到多少种新号码(如果t==s,t不算新号码)

这道题我的方法是记忆化搜索,f[d][x]表示号码t的第d个数字是x的话有几种可能,号码s是不变的,一旦号码t的某一位确定了,它后面可能的情况数就不会变了

判断t是否会与s相等时,只要当i>=2时,s[i]都能由s[i]和s[i-1]得到就会出现相等的情况,一开始忽略了s[i]×2可能等于s[i]+s[i-1]-1的情况

代码:

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值