Herramientas de usuario

Herramientas del sitio


algoritmos-oia:problemas-generales:planificar-tareas-optimamente

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
algoritmos-oia:problemas-generales:planificar-tareas-optimamente [2018/01/03 02:04]
sebach [Código]
algoritmos-oia:problemas-generales:planificar-tareas-optimamente [2018/02/07 07:14] (actual)
sebach [Código]
Línea 79: Línea 79:
     int termino=0;     int termino=0;
     forn(i, n){     forn(i, n){
- item it; +        ​item it; 
- cin>>​it.t>>​it.d>>​it.v;​ +        cin>>​it.t>>​it.d>>​it.v;​ 
- it.ind=i+1;​ +        it.ind=i+1;​ 
- termino=max(termino,​ it.d); +        termino=max(termino,​ it.d); 
- items.push_back(it);​ +        items.push_back(it);​ 
-+    
- sort(items.begin(),​ items.end(),​ compItem);​ +    sort(items.begin(),​ items.end(),​ compItem);​ 
- vector< vector<​int>​ > mejorValor(n+1,​ vector<​int>​(termino+2,​ 0)); +    vector< vector<​int>​ > mejorValor(n+1,​ vector<​int>​(termino+2,​ 0)); 
- forn(i, n){ +    forn(i, n){ 
- forn(j, termino+2){ +        forn(j, termino+2){ 
- if(j-items[i].t>​=0 && j<​items[i].d){ +            if(j-items[i].t>​=0 && j<​items[i].d){ 
- mejorValor[i+1][j]=mejorValor[i][j-items[i].t]+items[i].v;​ +                mejorValor[i+1][j]=mejorValor[i][j-items[i].t]+items[i].v;​ 
- +            
- mejorValor[i+1][j]=max(mejorValor[i][j],​ mejorValor[i+1][j]);​ +            mejorValor[i+1][j]=max(mejorValor[i][j],​ mejorValor[i+1][j]);​ 
- +        
-+    
- int lastRescueMoment=0;​ +    int lastRescueMoment=0;​ 
- forn(j, termino+2){ +    forn(j, termino+2){ 
- if(mejorValor[n][j]>​mejorValor[n][lastRescueMoment]){ +        if(mejorValor[n][j]>​mejorValor[n][lastRescueMoment]){ 
- lastRescueMoment=j;​ +            lastRescueMoment=j;​ 
- +        
-+    
- cout<<​mejorValor[n][lastRescueMoment]<<​endl;​ +    cout<<​mejorValor[n][lastRescueMoment]<<​endl;​ 
- vector<​int>​ rescato; +    vector<​int>​ rescato; 
- for(int i=n-1; i>=0; i--){ +    for(int i=n-1; i>=0; i--){ 
- if(lastRescueMoment>​=items[i].t && mejorValor[i+1][lastRescueMoment]==mejorValor[i][lastRescueMoment-items[i].t]+items[i].v){ +        if(lastRescueMoment>​=items[i].t && mejorValor[i+1][lastRescueMoment]==mejorValor[i][lastRescueMoment-items[i].t]+items[i].v){ 
- lastRescueMoment-=items[i].t;​ +            lastRescueMoment-=items[i].t;​ 
- rescato.push_back(items[i].ind);​ +            rescato.push_back(items[i].ind);​ 
- +        
-+    
- reverse(rescato.begin(),​ rescato.end());​ +    reverse(rescato.begin(),​ rescato.end());​ 
- cout<<​rescato.size()<<​endl;​ +    cout<<​rescato.size()<<​endl;​ 
- forn(i, rescato.size())cout<<​rescato[i]<<"​ ";+    forn(i, rescato.size())cout<<​rescato[i]<<"​ ";
 } }
  
algoritmos-oia/problemas-generales/planificar-tareas-optimamente.1514945047.txt.gz · Última modificación: 2018/01/03 02:04 por sebach