B3930 问题求助
  • 板块题目总版
  • 楼主_OTZ_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/14 00:44
  • 上次更新2024/7/14 07:25:37
查看原帖
B3930 问题求助
625398
_OTZ_楼主2024/7/14 00:44
import Data.Bits ((.&.))
import Data.List (foldl', sort)
import Data.Text qualified as T
import Data.Text.IO qualified as TIO

maxAnd :: [Int] -> Int
maxAnd (x : xs) = (snd $ foldl' (\(x0, ac) y -> (y, max ac $ x0 .&. y)) (x, 0) xs)
maxAnd _ = 0

calcFunc :: [Int] -> Int
calcFunc [] = 0
calcFunc [_] = 0
calcFunc lst = max (maxAnd lst) (calcFunc $ tail lst)

main :: IO ()
main = do
  (total_num : nums) <- (fmap $ read @Int . T.unpack) <$> T.words <$> TIO.getContents
  print $ calcFunc $ take 32 $ sort $ take total_num nums

代码实现问题,求大神debug

代码可以通过示例,但提交后一个用例也过不了,请大神们帮忙看一看是哪一步出了问题

思路是 B3930 [GESP202312 五级] 烹饪问题 题解

  • maxAnd 将列表第一个元素和剩余元素做 位与,求出最大值
  • calcFunc 每次去除首元素,对剩余求 maxAnd
    1. calcFunc [1,3,4]
    2. max (maxAnd [1,3,4]) (calc [3,4])

上面是我的思路和haskell代码实现,请大神们帮忙看看问题出在哪,多谢!

2024/7/14 00:44
加载中...