zoukankan      html  css  js  c++  java
  • ECNUOJ 2142 放书

    放书

    Time Limit:1000MS Memory Limit:65536KB
    Total Submit:409 Accepted:173

    Description 

    你要把一叠书放进一些箱子里面,为了节约箱子,你要放尽量多的书到一个箱子里面,但不能超过箱子的重量限制。
    当你把尽量多的书放进一个箱子以后,你把箱子关上,然后用下一个箱子去装书。为了避免麻烦,你只按书堆叠的从上到下的顺序把书放进箱子,也就是说在下面的书不会比上面的书先放进箱子。
    从上到下给你每本书的重量和箱子的能承受的重量,你能求出需要多少个箱子吗?

    Input 

    第一行是一个整数T,表示有T组测试数据。
    每组测试数据的第一行是两个整数n(0<=n<=50),k(1<=k<=1000),表示有n本书,每个箱子的载重上限是k。
    接下来一行有n个整数,表示n本书的重量,从上到下。这n个整数都大于等于1且小于等于k。

    Output 

    对于每组测试数据,输出需要箱子的个数,占一行。

    Sample Input 

    2
    6 10
    5 5 5 5 5 5
    11 12
    12 1 11 2 10 3 4 5 6 6 1

    Sample Output 

    3
    6

    Source

    第一届程序设计竞赛热身赛

    解题:一道dp,dp[i]表示从i开始到最后最小需要几个箱子

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int maxn = 100;
     4 int d[maxn],dp[maxn];
     5 int main(){
     6     int kase,n,m;
     7     scanf("%d",&kase);
     8     while(kase--){
     9         scanf("%d%d",&n,&m);
    10         for(int i = 0; i < n; ++i){
    11             scanf("%d",d+i);
    12         }
    13         int ret = 0;
    14         memset(dp,0x3f,sizeof dp);
    15         dp[n] = 0;
    16         for(int i = n-1; i >= 0; --i){
    17             int sum = 0;
    18             for(int j = i; j < n; ++j){
    19                 sum += d[j];
    20                 if(sum > m) break;
    21                 dp[i] = min(dp[i],dp[j+1] + 1);
    22             }
    23         }
    24         printf("%d
    ",dp[0]);
    25     }
    26     return 0;
    27 }
    View Code
  • 相关阅读:
    为什么说http协议是无状态协议
    LR中获取当前系统时间的方法
    在Ubuntu Server下配置LAMP环境
    服务器性能监控
    性能测试:过程和重要指标
    LR中线程和进程的区别
    怎样获取Windows平台下SQL server性能计数器值
    用Excel创建SQL server性能报告
    Windows下部署Appium教程(Android App自动化测试框架搭建)
    性能测试指标
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/4639070.html
Copyright © 2011-2022 走看看