【leetcode】1024. 视频拼接(video-stitching)(DP)[中等]

2023-05-16

链接

https://leetcode-cn.com/problems/video-stitching/

耗时

解题:1 h
题解:16 min

题意

你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。

视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。

我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目,如果无法完成该任务,则返回 -1 。

思路

dp[i][j] 表示运动过程 i 开始,j 结束,时长 [i, j] 所需片段的最小数目。

初始化,将所有能直接剪辑得到的视频片段的 dp[i][j] 都置为 1,i==j 都置为 0,其它全部 INF。

除了 dp[i][j]==1,剩下的每个片段 [i, j],都用可能的 k (i<k<j) 分割,尝试找到最小的划分。

状态转移方程:

d p [ i ] [ j ] = { min ⁡ k = i + 1 j − 1 d p [ i ] [ k ] + d p [ k ] [ j ]        i < j I N F                                            其 它 dp[i][j] = \begin{cases} \min_{k=i+1}^{j-1} dp[i][k]+dp[k][j] \ \ \ \ \ \ i<j \\ INF \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 其它 \end{cases} dp[i][j]={mink=i+1j1dp[i][k]+dp[k][j]      i<jINF                                          

时间复杂度: O ( T 3 ) O(T^3) O(T3)

AC代码

class Solution {
private:
    static constexpr int INF = 0x3f3f3f3f;
public:
    int videoStitching(vector<vector<int>>& clips, int T) {
        vector<vector<int>> dp(T+1, vector<int>(T+1, INF));
        
        // init
        for(int i = 0; i <= T; ++i) dp[i][i] = 0;
        for(auto clip : clips) {
            for(int i = clip[0]; i <= min(clip[1], T); ++i) {
                for(int j = i+1; j <= min(clip[1], T); ++j) {
                    dp[i][j] = 1;
                }
            }
        }
        
        // dp
        for(int i = T; i >= 0; --i) {
            for(int j = i+1; j <= T; ++j) {
                if(dp[i][j] == 1) continue;
                for(int k = i+1; k < j; ++k) {
                    dp[i][j] = min(dp[i][j], dp[i][k]+dp[k][j]);
                }
            }
        }
        
        return dp[0][T]==INF?-1:dp[0][T];
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【leetcode】1024. 视频拼接(video-stitching)(DP)[中等] 的相关文章

  • 使用 HTML 输入类型文件从网络摄像头捕获摄像机录制视频

    在我的公司 我的任务是建立一个网站 用户可以在其中录制视频 这将被发送到服务器 一些事情将被完成 用户最终会收到一封电子邮件 嵌入该视频的微型网站的链接 经过一番研究 我得出的结论是 至少目前这是不可能的 在 iPad 上使用 getUse
  • 如何获取 iPhone MPMoviePlayer 视频的总时间?

    我只想弄清楚如何获取视频的总时间 以秒为单位 是否有加载的视频元数据之类的 MP电影播放器 控制器有财产duration iOS 3 2 电影的时长 以秒为单位 只读 property 非原子 只读 NSTimeInterval持续时间 如
  • 视频swf的php正则表达式

    我想从对象 嵌入 html 源获取视频 url 我读到我可以使用正则表达式来获取它 但我和正则表达式不是朋友 这就是我所拥有的
  • 使用 Python 从原始帧创建 MPEG4 视频文件

    我有一个原始视频帧源 我可以在 Python 中访问它 我想用它创建一个 MPEG4 视频 并带有 MP3 背景音乐 Python 中有哪些类型的工具和库可用于此类任务 最好我想要一个 API 我可以为其提供输出文件名 然后将各个帧作为 2
  • 我想从互联网路径的 videoview 获取视频大小(以 MB 为单位)

    我试图在开始视频之前获取视频文件大小并将其显示在布局中 我已经尝试了很多东西 但它不起作用 video player view VideoView findViewById R id videoView2 media Controller
  • ffmpeg 使用 -movflags faststart

    我尝试使用命令 movflags 快速启动 并得到以下错误 Microsoft Windows 版本 6 0 6002 版权所有 c 2006 Microsoft 公司 版权所有 C uploads 1 videos gt ffmpeg i
  • 使用 jQuery 将播放/暂停/结束功能绑定到 HTML5 视频

    我正在尝试绑定play pause and ended使用 jQuery 的事件但有一个问题 当我右键单击视频并选择播放或暂停时 图标会正确更改 当我单击播放按钮时 它会更改为暂停 但如果我单击暂停按钮继续播放视频 它不会更改为再次播放 谁
  • 使用 Servlet 启动 VLC HTTP Stream 时出现问题

    我正在为自己开发一个 VLC 项目 我的目标是创建一个 HTML 前端来启动流 我通过使用 Java Servlet 来完成此操作 概述 乌班图13 04 Java 7 21 冰茶 2 3 9 Eclipse JAVAEE IDE 雄猫7
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • 加载视频数据集(Keras)

    我正在尝试实现 LRCN C LSTM RNN 来对视频中的情绪进行分类 我的数据集结构分为两个文件夹 train set 和 valid set 当你打开其中任何一个时 你可以找到3个文件夹 积极 消极 和 惊喜 最后 这 3 个文件夹中
  • 使用 ffmpeg 将视频与其自身连接,但相反

    我能够逆转 ffmpeg i input mp4 vf reverse output reversed mp4 我可以连接 ffmpeg i input mp4 i input mp4 filter complex 0 0 0 1 1 0
  • VideoJs 在 Firefox 中的 Flash 回退问题

    我尝试将 videoJs 添加到我的网站来播放 MP4 文件 所有这些在 Chrome 中都能完美运行 但当我转到 Firefox 不支持 MP4 文件 时 Flash 播放器停留在黑屏上 按钮不执行任何操作 简单的问题 为什么 我不明白
  • 为什么我在模拟器中看不到视频?

    我见过几个与此类似的问题 但我想确定一下 我无法在模拟器上运行视频 是否一致 有人在模拟器上成功运行视频吗 以下是我使用的代码 import android app Activity import android net Uri impor
  • 使用 UIActivityViewController 分享视频

    我正在尝试使用默认的苹果共享屏幕将视频分享到 Twitter 和 Facebook 等 我已经让它与图像一起使用 但我不知道如何更改它以与视频一起使用 提前致谢 这是我用来分享照片的代码 IBAction shareButtonPresse
  • 在列表视图/滚动视图中自动播放视频,类似于 facebook

    如果视图包含视频 我需要视频在列表视图 滚动视图中自动播放 这与 Facebook 非常相似 如果用户向下滚动并且可见区域包含视频 系统将播放视频 如果仍然滚动 则会自动停止该视频 它应该像一次播放一个视频一样工作 有人可以帮我解决这个问题
  • ios 将 alpha 通道视频叠加在另一个视频上

    我一直在尝试创建一个视频模板 该模板使用 alpha 通道视频叠加在 mp4 视频和图像上 这就是我需要创建视频的方式http viewptch ptchcdn com rendered 52b28a9f8d4f980f3a3f99c3 c
  • HTML 5 视频自定义控件

    与许多 Web 开发人员一样 我期待着利用新的 HTML 5 进行流式传输视频
  • iOS 视频压缩 Swift iOS 8 损坏的视频文件

    我正在尝试压缩用户相机从 UIImagePickerController 拍摄的视频 不是现有视频 而是动态视频 以上传到我的服务器 并花费少量时间来完成此操作 因此较小的尺寸是理想的选择 而不是 30 较新质量的相机为 45 mb 这是在
  • 当 mp4 是唯一来源时,自定义 HTML5 视频控件不起作用

    问题 我只有一个视频源 mp4 因为我正在尝试向 tumblr 视频添加自定义控件 如果只有mp4作为源video duration返回为NaN 作为使用 3 个源 mp4 webm ogg 时的测试 它可以工作 所以video durat
  • 在 ffmpeg 中,如何使用scale2ref 过滤器缩放 dvdsub 字幕以匹配视频大小?

    我有一个从直播电视录制的 mpeg 文件 其中包含视频以及多个音频和字幕流 我的最终目标是能够创建较小的视频文件 因为 mpeg 文件大小为数 GB 我在这条道路上的第一步只是能够选择视频 音频和字幕流中的每一个并将它们复制到 mkv 文件

随机推荐