洛谷p1113 杂物


一道拓扑排序的板子题,因为我们可以先记录一下每个点是受到哪几个点的影响,因为只有这些点的工作完成了才能完成这个工作 就可以想到用拓扑排序了。

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N],d[N],nt[N];
queue<int> q;
vector<int > h[N];
int main(){
    int n;
    cin>>n;

     for(int i=1;i<=n;i++){
         cin>>i;
         cin>>a[i];
         int t;
         while (cin>>t,t) {
             h[t].push_back(i);//统计这个点与那些点相连
             d[i]++;//这个点就增加一入度;
         }
     }
  for(int i=1;i<=n;i++)
      if(!d[i]) {
          nt[i]=a[i];//这个点完成耗费的总时间
          q.push(i);//找到那入度为0的点
      }
    while (q.size()){
        auto t=q.front();
        q.pop();
        for(int i=0;i<h[t].size();i++){
            int j=h[t][i];
            nt[j]= max(nt[j],a[j]+nt[t]);//更新当前耗费时间;
            if(--d[j]==0) q.push(j);//只有与他相连的所有工作完成了才能做这个工作
        }
    }
    int ma=0;
    for(int i=1;i<=n;i++) ma=max(ma,nt[i]);
    cout<<ma;
    return 0;
}

这个也可以dp,因为每个点的前提工作都小于自己那么只需要考虑最大的那个点的耗费时间就可以了

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N],n,ansmax;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
       int m,t,t1;
       cin>>i>>t;
       int tm=0;
        while (cin>>t1,t1) tm=max(a[t1],tm);//记录前提工作的最大耗费时间;
        a[i]=tm+t;//更新自己的总耗费时间
        ansmax= max(a[i],ansmax);//更新最大耗费时间
    }
    cout<<ansmax;
    return 0;
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SIFT算法杂物场景方面的应用主要是通过关键点的检测和匹配来实现目标识别和物体检测。在杂物场景下,图像中可能存在大量的噪声、背景干扰和目标形态变化等问题,这会影响到SIFT算法的关键点检测和匹配效果。 针对这种情况,可以采用以下方法: 1. 减少背景干扰:在杂物场景下,背景干扰会影响到关键点的检测和匹配效果,因此需要对图像进行预处理,减少背景干扰的影响。例如,可以使用图像分割算法将目标从背景中分离出来,或者使用图像增强算法增强目标的对比度和亮度等。 2. 增加关键点密度:在杂物场景下,目标可能存在多种变形和形态,因此需要增加关键点的密度,以确保能够检测到足够多的关键点。具体来说,可以在图像中采样多个尺度和方向的关键点,并计算每个关键点的描述子。 3. 局部特征匹配:在进行关键点匹配时,可以使用局部特征匹配的方法来提高匹配的准确性。具体来说,可以使用SIFT算法计算关键点的描述子,然后使用局部特征匹配算法来进行关键点匹配。这种方法可以提高关键点匹配的鲁棒性和可靠性。 4. 多尺度匹配:在杂物场景下,目标可能存在多种尺度和形态,因此需要使用多尺度匹配的方法来提高匹配的准确性。具体来说,可以使用多个尺度的匹配窗口来进行关键点匹配,从而找到最佳匹配结果。 综上所述,SIFT算法杂物场景方面的应用可以通过减少背景干扰、增加关键点密度、局部特征匹配和多尺度匹配等方法来提高算法的稳定性和鲁棒性。这些方法可以使SIFT算法杂物场景下仍能够准确地检测和匹配关键点,实现目标识别和物体检测。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值