leetcode:1326. 灌溉花園的最少水龍頭數目(dp,困難)
題目:
分析:直接把水龍頭轉化為區間,那麼就是一道簡答的區間問題。
要全部覆蓋,那麼顯然要選擇某一位置開頭(或包含某一位置),然後可以向右達到的最大長度。
也就是一道穿著華麗外表的基礎題。
程式碼:
class Solution {
public:
struct node{
int x;
int y;
} nn[10005];
int n2=0;
static bool cmp(struct node &n1,struct node &n2)
{
if(n1.x==n2.x) return n1.y<n2.y;
return n1.x<n2.x;
}
int minTaps(int n, vector<int>& r) {
//int n;
//vector<int> r;
for(int i=0;i<r.size();i++)
{
if(r[i]==0) continue;
nn[n2].x=max(0,i-r[i]);
nn[n2].y=min(n,i+r[i]);
n2++;
}
sort(nn,nn+n2,cmp);
int l=0;
int ans=0;
int n3=0;
while(1)
{
if(l>=n) return ans;
if(n2==n3) return -1;
if(nn[n3].x>l) return -1;
int maxx=nn[n3].y;
n3++;
while(n3<n2)
{//找包含l且最大的。
if(nn[n3].x>l) break;
maxx=max(nn[n3].y,maxx);
n3++;
}
l=maxx;
ans++;
}
}
};
相關文章
- 2617. 網格圖中最少訪問的格子數(困難)
- Some 困難的數論
- 【js】Leetcode每日一題-製作m束花所需的最少天數JSLeetCode每日一題
- leetcode:1000. 合併石頭的最低成本(區間dp,困難)LeetCode
- leetcode:41. 缺失的第一個正數(困難,陣列)LeetCode陣列
- MYSQL練習題:給定數字的頻率查詢中位數(Leetcode困難)MySqlLeetCode
- 選擇學習目標的困難與焦慮
- 機器學習最困難的部分:超引數除錯機器學習除錯
- 出門困難
- iOS 的圍欄花園iOS
- 3111. 覆蓋所有點的最少矩形數目
- Leetcode 通過率最高的困難題 N皇后 II 【回溯解法-剪枝】LeetCode
- Leetcode171-190刷題筆記(非困難題)LeetCode筆記
- 【LeetCode刷題(困難程度)】132. 分割回文串 IILeetCode
- 細數被程式設計師吐糟的9大困難程式設計師
- 力扣刷題——3096.得到更多分數的最少關卡數目力扣
- leetcode 4. Median of Two Sorted Arrays 尋找兩個正序陣列的中位數(困難)LeetCode陣列
- 選擇困難的三點思考
- 《夢幻花園》御花園春版本:感受春日好時光,用心做好中國風
- 網際網路巨頭灌溉,虛擬偶像市場開花
- 一些困難題
- LeetCode C++ 968. Binary Tree Cameras【Tree/DFS】困難LeetCodeC++
- ACM 最少步數ACM
- 最少操作次數
- JS祕密花園摘要JS
- P1357 花園
- 智慧園林:智慧節水灌溉監控系統解決方
- 技術學習選擇的困難
- LeetCode 不只是題解(10.正規表示式匹配[困難])LeetCode
- Kubuntu 專案遭遇困難(轉)Ubuntu
- ctfshow_web_1(困難題)Web
- [DP] 數位DP
- 【基礎dp】HDU 1257 最少攔截系統
- leetcode410分割陣列的最大值(二分+貪心,困難)LeetCode陣列
- 【leetcode】45. Jump Game II 非負陣列的最少跳躍步數LeetCodeGAM陣列
- 3229. 使陣列等於目標陣列所需的最少操作次數陣列
- NOIP2012pj擺花[DP 多重揹包方案數]
- leetcode:462. 最少移動次數使陣列元素相等 II(數學,中等)LeetCode陣列