pku 1328 第一周訓練 貪心

2021-09-06 05:04:24 字數 1635 閱讀 9830

這個題目就是每個島嶼對應乙個雷達區間,然後確定好雷達區間後,然後在將區間的s或者e從小到大排序,然後貪心。

第一種按s從小到大排序:

#include 

#include

#include

#include

#include

#define maxn 1007

using

namespace std;

struct node

tagp[maxn];

struct mode

tagq[maxn];

int cmp(mode a,mode b)

int main()

double tmp = sqrt((1.0*d*d) - (1.0*tagp[i].y*tagp[i].y));

double s = 1.0*tagp[i].x - tmp;

double e = 1.0*tagp[i].x + tmp;

tagq[i].s = s;

tagq[i].e = e;

}if (flag)

sort(tagq,tagq + n,cmp);

double e = tagq[0].e;

int count = 1;

for (i = 1; i < n; ++i)

else}}

printf("

case %d: %d\n

",cas++,count);

}return

0;}

第二中是按e從小到大排序,這裡定義int型來接受double型的資料,悲催死我了。。檢查了很長時間。。就是經典貪心之會場安排,不過還是有點差別的。

#include 

#include

#include

#include

#define maxn 1007

using

namespace std;

struct node

tagp[maxn];

struct mode

tagq[maxn];

bool hash[maxn];

int cmp(mode a,mode b)

int main()

double tmp = sqrt((1.0*d*d) - 1.0*(tagp[i].y*tagp[i].y));

tagq[i].s = 1.0*tagp[i].x - tmp;

tagq[i].e = 1.0*tagp[i].x + tmp;

}if (flag)

sort(tagq,tagq + n,cmp);

//for (i = 0; i < n; ++i)

//printf("%.2lf %.2lf\n",tagq[i].s,tagq[i].e);

int mark;

memset(hash,false,sizeof(hash));

count = 0;

int j;

j = 0;

while (1)

}count++;

for (i = 0; i < n; ++i)

}if (!mark)}}

return

0;}

pku 1328 第一周訓練 貪心

這個題目就是每個島嶼對應乙個雷達區間,然後確定好雷達區間後,然後在將區間的s或者e從小到大排序,然後貪心。第一種按s從小到大排序 view code include include include include include define maxn 1007 using namespace st...

pku 第一周訓練 模擬

給你一系列的左右括號的兩個表示方法,p和w.然後是有p向w轉換 pi表示第i個右括號前邊有幾個左括號 wi表示第i個右括號如果要找匹配的話,要找從後往前數幾個左括號與它匹配。include include include define maxn 25 using namespace std int ...

pku 第一周訓練 模擬

給你一系列的左右括號的兩個表示方法,p和w.然後是有p向w轉換 pi表示第i個右括號前邊有幾個左括號 wi表示第i個右括號如果要找匹配的話,要找從後往前數幾個左括號與它匹配。view code include include include define maxn 25 using namespac...