cf 659 div2

本次比赛一共想去尝试三道题,看了题意,只觉得A能做出来

总体来说难度确实不小,不过我确实是没读明白B题,A题通过不了,C题都不想去看。其实现在看来,A题是因为眼界放的太小,把题想复杂了,C题总感觉如果去作的话好像有机会,但是也还是没去看。

 

A

题意:给n个数,让你输出n+1个单词,使得第i个单词和第i-1个单词有a[i]个相同前缀。

思路:其实这题也没什么,就是相对来说,输出的自由度有点大,我一开始是在想就直接弄个数组,第i个单词就输出前max(a[i],a[-1])个前缀,这样的话就是如果要求a[i]是0的话,我这样就不做输出了,就感觉不对,于是再把a[i]为0的情况单独拿出来处理,但这样很容易错,我看到最好的方法就是直接字符串全赋值a,每次把第a[i]个变成b就行了,这样一想真的好简单。

B1&B2

题意:给定一个N表示过河的宽度,k表示潮水变化周期,2k时间中前k每个时间涨潮1,后k每个时间退潮1,l表示人的最小承受深度,然后给n个数表示开始时每个位置的水高度,问你人能否从0游到n+1,每个时间中我们可以选择向前或者不动(不能向后)

思路:B1能用这个思路B2应该不行,太大了。现在能明白的思路就是用dp做的一个,dp[i][j]表示在第i个地方第j个时间,-1表示不可以在这,0表示可以在这,如果上一秒的i地方和i-1地方都是-1不行,就跳过这里(初始值-1)

题意:给你两个字符串,让你把A变成B问你最少操作几次,每次操作可以把几个相同字符加一(a变b) ,变不成就输出-1

思路:首先只有A中字符大于B中字符时才是不能操作的,把每个字母拿出来进行操作,每次操作就是把A中的i字母变成相应的B中相同位置里最小的字母然后答案加一。我感觉答案好像就是A中不同字母的个数减一加B中不同字母减一再加上AB里的相同字母,这也只是突发奇想寻巧不知对不对

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值