首页 > 其他分享 >【洛谷 2347】[NOIP1996 提高组] 砝码称重

【洛谷 2347】[NOIP1996 提高组] 砝码称重

时间:2023-10-25 16:25:30浏览次数:34  
标签:2347 洛谷 int 砝码 ans NOIP1996 include dp

题目描述

设有 1g1g、2g2g、3g3g、5g5g、10g10g、20g20g 的砝码各若干枚(其总重≤1000≤1000),可以表示成多少种重量?

输入格式

输入方式:�1,�2,�3,�4,�5,�6a1​,a2​,a3​,a4​,a5​,a6​

(表示 1g1g 砝码有 �1a1​ 个,2g2g 砝码有 �2a2​ 个,…,20g20g 砝码有 �6a6​ 个)

输出格式

输出方式:Total=N

(�N 表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)

输入输出样例

输入 #1
1 1 0 0 0 0
输出 #1
Total=3

说明/提示

【题目来源】

NOIP 1996 提高组第四题

题解:复习一下背包问题,为下一题做铺垫 很古老的一道noip题

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<bits/stdc++.h>
using namespace std;
int b[8],dp[1002];
int ans,sum; 
int a[8]={0,1,2,3,5,10,20};
int main(){
    freopen("2347.in","r",stdin);
    freopen("2347.out","w",stdout);
    for(int i=1;i<=6;i++){
        scanf("%d",&b[i]);
        sum+=a[i]*b[i];
    }
    dp[0]=1;
    for(int i=1;i<=6;i++){
        for(int j=sum;j>=0;j--){
            for(int k=1;k<=b[i];k++){
                if(j-a[i]*k>=0){
                    if(dp[j-a[i]*k]==1 && dp[j]==0) {
                       ans++; dp[j]=1;
                    }
                }
            }
        }
    }
    printf("Total=%d",ans);
    return 0;
}

 

标签:2347,洛谷,int,砝码,ans,NOIP1996,include,dp
From: https://www.cnblogs.com/wuhu-JJJ/p/17787480.html

相关文章

  • 【洛谷 8601】 [蓝桥杯 2013 省 A] 剪格子
    #[蓝桥杯2013省A]剪格子##题目描述如图$1$所示,$3\times3$的格子中填写了一些整数。![](https://cdn.luogu.com.cn/upload/image_hosting/hsfjsi38.png)我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是$60$。本题的要求就是请你编程判定:对给定的$m\tim......
  • 洛谷P5706 【深基2.例8】再分肥宅水(Python3)
    关键点:1.同一行输入两个数input().split(),然后list一下存到变量里,这个不多说2。输出两个数Python中默认end=‘\n’,所以不用多写一遍换行。3.输出三位小数这里用到了Python的格式化输出,与c++的格式化输出非常相近,只是符号不同。具体可看这篇blog 代码如下:a=list(input(......
  • 洛谷 最长最短单词 c语言 函数解决
    #include<stdio.h>#include<string.h>inti;intmain(){intIs_letters(chara);//声明判断字母intbigword(charstr[]);//声明最长单词intminword(charstr[]);//声明最短单词charstr[20010];//str要足够大intt;gets(str);t......
  • 洛谷5597复读
    具体题解可以看zhy136036那一篇解释一下是如何合并树的每次都可以提取出来一个子树然后把这三棵子树重叠在一起(根对根,2号点对2号点,以此类推),就得到了这个新图然后解释一下为什么这么做是对的首先在单次操作中,至少需要把这个新树给遍历完,不然的话就会存在有些点遍历不到,即这是......
  • 洛谷-P9779 题解
    正文对于每个选择题,都有两种状态,因此总状态数为\(2^n\)。请注意初始所有选择题都不选也是一个状态,不计入贡献,因此答案为\(2^n-1\)。代码:#include<iostream>usingnamespacestd;intmain(){longlongn;cin>>n;cout<<(1<<n)-1;}提交记录。......
  • 洛谷题解 | AT_abc321_c Primes on Interval
    目录题目翻译题目描述输入格式输出格式样例#1样例输入#1样例输出#1样例#2样例输入#2样例输出#2样例#3样例输入#3样例输出#3题目简化题目思路AC代码题目翻译【题目描述】你决定用素数定理来做一个调查.众所周知,素数又被称为质数,其含义就是除了数字一和本身之外不能......
  • 洛谷 P2568 GCD
    题意:给定\(n\)求\(\displaystyle{\sum_{i=1}^n{\sum_{j=1}^n{\left[(i,j)\inprime\right]}}}\)其中\(prime\)为素数集合。\(n<10^7\)解:原式等于\[\displaystyle{\sum_{p\inprime}\sum_{i=1}^n{\sum_{j=1}^n{\left[(i,j)=p\right]}}}\]这等于\[\displa......
  • KMP模板(洛谷P3375)
    1#include<bits/stdc++.h>2usingnamespacestd;3strings1,s2;4vector<int>find_next(vector<int>next,strings)5{6inti=1,prefix=0,len=s.length();7while(i<len)8{9if(s[prefix]=......
  • 【洛谷 9240】[蓝桥杯 2023 省 B] 冶炼金属
    #[蓝桥杯2023省B]冶炼金属##题目描述小蓝有一个神奇的炉子用于将普通金属O冶炼成为一种特殊金属X。这个炉子有一个称作转换率的属性$V$,$V$是一个正整数,这意味着消耗$V$个普通金属O恰好可以冶炼出一个特殊金属X,当普通金属O的数目不足$V$时,无法继续冶炼。现......
  • 洛谷P9752
    考场上暴力100题目传送门思路考虑到\(n\)很小,于是暴力,但不是枚举每个5位数再判断,而是把所有状态的可能正解用桶存个数,然后数量为\(n\)的就是一种方案代码#include<bits/stdc++.h>usingnamespacestd;constintMaxn=10;longlongn,a[Maxn][Maxn],cnt,vis[Max......