這個題目就是每個島嶼對應乙個雷達區間,然後確定好雷達區間後,然後在將區間的s或者e從小到大排序,然後貪心。
第一種按s從小到大排序:
view code
#include第二中是按e從小到大排序,這裡定義int型來接受double型的資料,悲催死我了。。檢查了很長時間。。就是經典貪心之會場安排,不過還是有點差別的。#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;}
view code
#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從小到大排序 include include include include include define maxn 1007 using namespace std struct n...
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...