古城子的房子 貪心

2022-08-18 17:54:11 字數 1051 閱讀 2374

古子城街上有很多房子,它們從左到右依次為\(1\)到\(n\),每兩個相鄰房屋之間的距離等於\(1\)個單位,每幢房子的顏色依次為\(c1,c2,...,cn\),即第\(i\)幢房屋的顏色為\(ci\)。

冬冬想要選擇兩幢房子\(i\)和\(j\),使得\(1≤i並且它們具有不同的顏色:\(ci≠cj\)。然後他將從房子\(i\)走到房子\(j\),距離為\(j-i\)個單位。

冬冬喜歡逛街,因此他想選擇兩幢房屋之間的距離盡可能的大。

可以貪心,對於每種顏色只保留他的序號最小和最大的元素,然後對所有顏色進行排序,分別領令序號最小的元素為頭和領序號最大的元素為尾求出兩個最大值(保險起見)即得到答案

這道題一開始很快得到思路,但是除錯時出現很多問題,沒有考慮到陣列的初始值的處理,導致排序後不能得到正常的順序,debug花了很多時間。

#include#define mem(a,b) memset(a,b,sizeof(a))

typedef long long ll;

typedef unsigned long long ull;

using namespace std;

struct node minn[100000+10], maxx[100000+10];

int vis[100000 + 1];

inline bool cmpmin(node a, node b)

return a.pos < b.pos;

}inline bool cmpmax(node a, node b)

return a.pos > b.pos;

}int main()

sort(minn+1,minn+cnt+1,cmpmin);

sort(maxx+1,maxx+cnt+1,cmpmax);

int ans = 0;

for (int i = 1; i <= cnt; i++)

} for (int i = 1; i <= cnt; i++)

} cout << ans;

return 0;

}

杭電ACM 建房子(貪心)

突破口 充分利用每一堵牆,有牆出現,其所在的行 列都加權1 除非遇到另一堵牆才停止 依次從權值由高到低開始建,每建一座,其所在的行 列都設定為n no 除非遇到牆才停止 如下 include include includeusing namespace std char map 6 6 製作一張圖 ...

找出最大的房子

找出最大的房子 include include include using namespace std int r,c 行列數 int rooms 60 60 rooms i j 表示 i j 地方對應的房屋數值 int color 60 60 方塊是否染過顏色標記 int maxroomarea ...

房子裡的物件

房子裡的物件,以前有過一篇 house of com 將com物件比喻為呆在房子裡的物件,如果我們要訪問這個物件,我們必須越過機構,最後才能獲取業務物件所提供的服務 現在,對於容器的研究比較熱門,容器就是這個房子 通過將我們編寫的赤裸物件進行包裝,我們的物件看起來變得非常複雜 例如remoting技...