zoukankan      html  css  js  c++  java
  • 解题报告:luogu P5020(NOIP 2018 D1T2)

    题目链接:P5020 货币系统
    (NOIP) 的题挺精华啊。
    开始感觉自己有隐约的思路,但感觉太暴力,连数据范围都没看,就去看题解了(不会啊)。
    听说是(dp)又是一惊,直接弃疗。
    其实只是个简单的筛法吧,和线性筛啥的有异曲同工之处,类似模拟打表,把能表示的都筛一遍就好了,大概是(O(n;max(a_i)))的复杂度,可以通过本题。

    (Code):

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int t,n,a[20005];
    int vis[25005]={0};
    int main()
    {
    	scanf("%d",&t);
    	while(t--)
    	{
    		scanf("%d",&n);
    		int maxn=-1;
            memset(vis,0,sizeof(vis));
    		for(int i=1;i<=n;i++) scanf("%d",&a[i]),maxn=max(maxn,a[i]);
    		sort(a+1,a+n+1);
    		int ans=0;
    		for(int i=1;i<=n;i++)
    		{
    			if(vis[a[i]]) continue;
    			else ans++,vis[a[i]]=1;
    			for(int j=a[i];j<=maxn;j++)
    			{
    				if(vis[j-a[i]]) vis[j]=1;
    			}
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    

    我裂开了

  • 相关阅读:
    生成缩略图
    Log4net 记录日志
    cs端调用webApi
    抽象工厂
    简单工厂
    DataSet读取XML
    EntityFramework+WCF
    构造函数基础
    延迟加载
    位运算
  • 原文地址:https://www.cnblogs.com/tlx-blog/p/12300949.html
Copyright © 2011-2022 走看看