poj1456

本文介绍了一种滚动查找最优解的算法实现过程,通过优化数据结构和算法逻辑,提高了查找效率并降低了复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<cstdio>
#include<algorithm>

using namespace std;
int pd[10001]={0};

struct node{
 int price,bit;
 
};

node m;

void find(int x,int y)
{
        if(y<=0) return; 
  else
  {                                                                                                      //滚动向前;
   if(x>pd[y])
   {
    m.price=pd[y];
    m.bit=y-1;
    pd[y]=x;

    find(m.price,m.bit);
   }
      else
      {
       y=y-1;
       find(x,y);
       
      }
   
   
  }
 
 
 
 
}
int main()
{
 int n,i,j,k,x,y,total=0,flag;
 //freopen("test.txt","r",stdin);
 while(scanf("%d",&n)!=EOF)
 {
    total=0;
    for(i=1;i<=10000;i++) pd[i]=0;                                                         //简陋的初始化数组
   
    for(i=1;i<=n;i++)
  {
  scanf("%d%d",&x,&y);
  if(x>pd[y])
  {
   m.price=pd[y];
   m.bit=y-1;
            pd[y]=x;
   find(m.price,m.bit);


   
   
  }

  else
  {
   y--;
  
   find(x,y);
   

   
  }
  }
    
 
    for(i=1;i<=10000;i++)
  {
  if(pd[i]!=0) total=total+pd[i];
  
  }
 
    printf("%d\n",total);
  
  
  
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值