acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 资讯
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • 2022 CSP-J 上升序列

    /* 对于当前的n个点排序按照x然后y,从小到大 f[i][j]以当前第i个点作为结尾,还剩下j个自由点 max(f[i][j]+j); 当前的这个点为最后一个,还剩下j个直接拼接后面 枚举合法状态下的第k个点(坐标不超过i),假设d为距离 中间使用d-1个自由点 f[i][j]=max(f[k][j+d-1]+d); */

    userId_undefined
    知予
    秩序白银
    350阅读
    4回复
    6点赞
  • Solution

    [CSP-J 2022] 上升点列 题意 只能向右、向上走,坐标单调不减;最多额外加 kkk 个点,求最长点序列。 两点 jjj 到 iii 需要插入点数: d=(xi−xj)+(yi−yj)−1d=(x_i-x_j)+(y_i-y_j)-1 d=(xi −xj )+(yi −yj )−1 DP 1. 所有点按 xxx 升、yyy 升排序 2. 状态:dp[i][t]dp[i][t]dp[i][t] 以第 iii 个点结尾,用了 ttt 个新增点的最大长度 3. 初始化:dp[i][0]=1dp[i][0]=1dp[i][0]=1 4. 转移:j<ij<ij<i 且 yj≤yiy_j\le y_iyj ≤yi ,花费 *** 个新增点 dp[i][t]=max⁡(dp[i][t],dp[j][t−d]+d+1)(t≥d)dp[i][t]=\max(dp[i][t],dp[j][t-d]+d+1) \quad(t\ge d) dp[i][t]=max(dp[i][t],dp[j][t−d]+d+1)(t≥d) 5. 答案:遍历所有 dp[i][t]+(k−t)dp[i][t]+(k-t)dp[i][t]+(k−t) 取最大值 SOLUTION

    userId_undefined
    starasdflight
    时间刺客空间掌握者时空双修者快乐小狗
    34阅读
    0回复
    1点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页