zoukankan      html  css  js  c++  java
  • HDU. 5312. Sequence(构造 三角形数)

    题目链接
    虽然可能有点水可还是挺有意思的/kk


    (Description)
    给定(m)。求(m)最少可由多少个形如(3n(n-1)+1 (ngeq 1))的数构成。
    (T)组数据。(mleq10^9, Tleq10^4)

    (Solution)

    任何一个数可由最多三个三角形数构成

    最少个构成可以考虑下三角形数(记为(A_n)),而(3n(n-1)+1=6 imesfrac{n(n-1)}{2}+1=6A_n+1)
    假设答案为(k),有(m=6(A_1+A_2+...+A_k)+k)

    • (kgeq 3)时,(sum A_i)可表示任意数,有(k=(m-1)\%6+1+6n (ngeq 0)),所以答案即((m-1)\%6+1),且有((m-1)\%6+1geq 3)
    • ((m-1)\%6+1lt 3)时,有(k=1或2),直接特判(1或2)是否可行,如果不可行那(k+6geq 3)一定可行。

    //748MS	2332Kb
    #include <bits/stdc++.h>
    #define pc putchar
    #define gc() getchar()
    typedef long long LL;
    const int N=2e4+5,INF=1e9;
    
    int A[N];//19000
    std::unordered_map<int,int> f;
    
    inline int read()
    {
    	int now=0,f=1; char c=gc();
    	for(;!isdigit(c);c=='-'&&(f=-1),c=gc());
    	for(;isdigit(c);now=now*10+c-48,c=gc());
    	return now*f;
    }
    
    int main()
    {
    	for(int i=1; (A[i]=3*i*(i-1)+1)<=INF; ++i) f[A[i]]=1;
    
    	for(int T=read(); T--; )
    	{
    		int n=read(),k=(n-1)%6+1;
    		if(k==1) printf("%d
    ",f.count(n)?1:7); //不要写f[n]。。会加到map/unordered_map里(我为什么才发现这点) 
    		else if(k==2)
    		{
    			bool fg=0;
    			for(int i=1,lim=n/2; A[i]<=lim; ++i)
    				if(f.count(n-A[i])) {fg=1; break;} //同上别写f[n-A[i]] 
    			printf("%d
    ",fg?2:8);
    		}
    		else printf("%d
    ",k);
    	}
    
    	return 0;
    }
    
    ------------------------------------------------------------------------------------------------------------------------
    无心插柳柳成荫才是美丽
    有哪种美好会来自于刻意
    这一生波澜壮阔或是不惊都没问题
    只愿你能够拥抱那种美丽
    ------------------------------------------------------------------------------------------------------------------------
  • 相关阅读:
    HTML+CSS笔记 CSS进阶续集
    HTML+CSS笔记 CSS进阶
    HTML+CSS笔记 CSS入门续集
    HTML+CSS笔记 CSS入门
    test
    Python Paramiko模块安装和使用
    RedHat升级Python到2.7.6
    python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
    5、使用EF对后台SysSample数据增删改查
    4、创建SQL数据库,添加EF实体数据模型
  • 原文地址:https://www.cnblogs.com/SovietPower/p/14433810.html
Copyright © 2011-2022 走看看