装木块问题 |
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; }
|