裝木塊問題 |
Time Limit: 1 Seconds Memory Limit: 32768 K Total Submit:79 Accepted:7 |
Description 有一種很特別裝箱子,箱子的所有長度都是L,還有N根木塊,所有木塊的長度都小於等於L,箱子可以裝木塊,但是有如下限制: Input 第一行一個N,表示有N根木塊。(1<=N<=105) Output 只有一行,最少需要的箱子數。 Sample Input 10 80 70 15 30 35 10 80 20 35 10 30
Sample Output 6 |
此題雖然簡單,但很容易超時哦,^_^,起先用c++提交了好多次,都是超時,換一下c就accept了
Source: #include<stdio.h> #include<algorithm> using namespace std; int a[100001]; int main() { int n,l,i,j,sum; scanf("%d",&n); scanf("%d",&l); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); sum=0; j=n-1; for(i=0;i<=j;) { if(i==j) { sum++; break; } else if(a[i]+a[j]>l) { sum++; j--; } else { i++; sum++; j--; } } printf("%d/n",sum); return 0; }
|