C++のpartition_point
このチュートリアルでは、C++でpartition_pointを理解するためのプログラムについて説明します。
パーティションポイントは、指定された範囲の最初の値を指すイテレータを返すメソッドです。範囲は、述語が真ではない分割された範囲です。
例
#include <iostream> #include <algorithm> #include <vector> bool IsOdd(int i) { return (i % 2) == 1; } int main(){ std::vector<int> data{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; std::vector<int> odd, even; std::stable_partition(data.begin(), data.end(), IsOdd); auto it = std::partition_point(data.begin(), data.end(), IsOdd); odd.assign(data.begin(), it); even.assign(it, data.end()); std::cout << "odd:"; for (int& x : odd) std::cout << ' ' << x; std::cout << '\n'; std::cout << "even:"; for (int& x : even) std::cout << ' ' << x; std::cout << '\n'; return 0; }
出力
odd: 1 3 5 7 9 even: 2 4 6 8 10
-
C++でのリスのシミュレーション
木、リス、そしていくつかのナッツがあります。位置は、2Dグリッドのセルで表されます。あなたの目標は、リスがすべてのナッツを集めて、それらを1つずつ木の下に置くための最小距離を見つけることです。リスは一度に最大で1つのナットしかとることができず、隣接するセルに向かって上下左右の4つの方向に移動できます。距離は移動回数で表されます。 したがって、入力が高さ:5幅:7木の位置:[2,2]リス:[4,4]ナッツ:[[3,0]、[2,5]]の場合、出力は12になります。 、 これを解決するには、次の手順に従います- 関数calc()を定義します。これには、x1、y1、x2、y2、が必要で
-
C++の長方形エリアII
(軸に沿った)長方形のリストがあるとします。ここで、各rectangle [i] ={x1、y1、x2、y2}です。ここで、(x1、y1)は左下隅のポイントであり、(x2、y2)は右上隅のポイントです。 i番目の長方形。 平面内のすべての長方形でカバーされる総面積を見つける必要があります。答えは非常に大きい可能性があるため、モジュロ10 ^ 9+7を使用できます。 したがって、入力が次のような場合 その場合、出力は6になります。 これを解決するには、次の手順に従います- m =10 ^ 9 + 7 関数add()を定義します。これには、a、b、が必要です。 r