1. 程式人生 > >hdu acm-step 1.3.6 Wooden Sticks

hdu acm-step 1.3.6 Wooden Sticks

continue -- i++ style print clas 重置 step mem

 技術分享

    本題題意:有n根棍子,給出兩個屬性長度l和重量w,當加工當前棍子的長度和長度均大於上一根棍子時,可以不重置機器,每次重置機器要花1min,

    求最小時間。

    代碼如下:

    

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
struct Node
{
        int l,w;
        bool operator<(const Node &node){if(l<node.l)return
true;else if(l>node.l)return false;if(w<node.w)return true;return false;} }; Node a[5000]; int b[5000]; int main() { int T; scanf("%d",&T); while(T--) { memset(b,0,sizeof(b)); int n; scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d%d",&a[i].l,&a[i].w); sort(a,a+n); int count = 0; int sum=0; Node temp; for(int i=0;i<n;i++) { if(b[i]==0) { sum
++; count++; b[i] = 1; temp = a[i]; if(count==n)break; } else continue; for(int j=0;j<n;j++) { if(temp.l<=a[j].l&&temp.w<=a[j].w&&b[j]==0){temp=a[j];b[j]=1;count++;if(count==n)break;} } if(count==n)break; } printf("%d\n",sum); } return 0; }

這道題就是兩個循環,每處理完一根棍子後,要記錄當前棍子的屬性,然後跟下一根比較,僅當當前棍子的兩個屬性都大於上一根棍子時才進行比較,比較完n個棍子,就結束循環,打印結果。

hdu acm-step 1.3.6 Wooden Sticks