zoukankan      html  css  js  c++  java
  • [网络流24题]魔术球问题

    题目:洛谷P2765。

    题目大意:给你n根柱子,现在让你从1开始,每次把一个数放到柱子上。

    规定放上来的数要么在最下面,要么与下面一个数的和为完全平方数。

    求最多能放多少个数,并输出方案。

    解题思路:这道题可以贪心。

    每次有一个数,它能放哪里就直接给它放着,不去考虑。

    据说可以证明,但我不会。

    标准做法是网络流。

    做法大致是拆点,然后连边跑即可。

    我用贪心玄幻地过了。

    C++ Code:

    #include<cstdio>
    #include<cmath>
    int n,a[57][20000],cnt[55]={0};
    inline int power(int a){return a*a;}
    inline int judge(int a,int b){
    	return power((int)(sqrt(a+b)+0.000000001))==a+b;
    }
    int main(){
    	scanf("%d",&n);
    	int i=1;
    	for(;;++i){
    		bool b=false;
    		for(int j=1;j<=n;++j)
    		if(!cnt[j]||judge(a[j][cnt[j]],i)){
    			a[j][++cnt[j]]=i;
    			b=true;
    			break;
    		}
    		if(!b)break;
    	}
    	printf("%d
    ",i-1);
    	for(int i=1;i<=n;++i){
    		for(int j=1;j<cnt[i];++j)printf("%d ",a[i][j]);
    		printf("%d
    ",a[i][cnt[i]]);
    	}
    	return 0;
    }
    
  • 相关阅读:
    C语言 常用单词
    导航菜单
    css3中的过渡(transition)
    HTML CSS 常用英语单词
    css基础
    XHTML基础
    MongoDB作为windows服务来安装-2
    MongoDB安装成windows 服务
    .NET平台MongoDB下使用JobStore存储Quartz.Net的Job,Trigger数据
    C# mongodb 类库
  • 原文地址:https://www.cnblogs.com/Mrsrz/p/8204254.html
Copyright © 2011-2022 走看看