POJ-1862-Stripies

这个题是说给你n个数,然后你每次可以合并其中的2个得到一个新的数,合并的方式为c=2*(a*b)^(1/2) 然后要求你将他们合并成一个后最后剩下的最少是多少。

不难想到每次从其中选择最大的2个进行合并操作,然后得到的新的放入里面,然后每次再取最小的2个。不过这个题交的时候只能C++能过,G++过不了,不知道为什么

代码:

#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn=110;
struct Node
{
    double val;
    bool operator < (const Node &a)const
    {
	return val q;
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
	Node node;
	for(int i=0;i


你可能感兴趣的:(ACM,POJ,Math)