# 题意
nが与えられた初期のひし形が与えられた場合、このひし形を使用して、与えられたnに対応するグラフをカバーします。カバレッジが異なるということは、同じ小さな形状が2つの異なるひし形でカバーされることを意味します
# 説明
垂直方向の1つが満たされた場合、残りは対角であるため、垂直方向のケースを見つけるだけでよいことがわかります。これは明らかにnに等しくなります。
1 #include <bits / stdc ++。h> 2 名前空間std を使用 。 3 void work(){ 4 int n; 5 cin >> n; 6 cout << n << endl; 7 } 8 int main(){ 9 int t; 10 cin >> t; 11 while(t-- ){ 12 work(); 13 } 14 }
# 题意
長さnのシーケンスaが与えられた場合、| a 1 -a 2 |≤| a 2 -a 3 |≤......≤| a n-1 -a n | になるようにaの順序を並べ替えます。
# 説明
ソート後、2つのポインタを中央から2つまたは2つ配置できます。
1 #include <bits / stdc ++。h> 2 名前空間std を使用 。 3 const int N = 1e5 + 10 ; 4 int a [N]; 5 void work(){ 6 int n; 7 cin >> n; 8 for(int i = 1 ; i <= n; i ++ ) 9 cin >> a [i]; 10 sort(a + 1、a + n + 1 ); 11 vector < int > ans; 12の場合 (n&1 ){ 13 ans.push_back(a [n / 2 + 1 ]); 14 for(int i = n / 2、j = n / 2 + 2 ; i> = 1 && j <= n; i-、j ++ ) 15 ans.push_back(a [i])、ans.push_back(a [j]); 16 } 17 else { 18 for(int i = n / 2、j = n / 2 + 1 ; i> = 1 && j <= n; i-、j ++ ) 19 ans.push_back(a [i])、ans.push_back(a [j]); 20 } 21 for(int i = 0 ; i <ans.size(); i ++ ) 22 cout << ans [i] << " " ; 23 puts("" ); 24 } 25 int main(){ 26 int t; 27 cin >> t; 28 while(t-- ){ 29 work(); 30 } 31 }
#题意
長さnのシーケンスを指定すると、x番目の秒の任意のサブシーケンスに2 x-1を追加できます。シーケンスを下降しないようにするのに少なくとも何秒かかるか尋ねる
1≤t≤10 4
1≤n≤10 5
-10 9 ≤ I ≤10 9
# 説明
2 x-1を追加するたびに、バイナリシステムにビットを追加し、各位置と以前の最大値との差の最大値を見つけると見なすことができます。
バイナリの他のビットは最後の1秒の前に追加できるため、バイナリの最上位ビットを見つけてから+1が最小秒数です。
1 #include <bits / stdc ++。h> 2 名前空間std を使用 。 3 const int N = 1e5 + 10 ; 4 int a [N]; 5 void work(){ 6 int n; 7 cin >> n; 8 int mx = INT_MIN; 9 int mxv = 0 ; 10 for(int i = 1 ; i <= n; i ++ ){ 11 cin >> a [i]; 12 であれば([I] < MX) 13 mxv = max(mxv、abs(a [i]-mx )); 14 mx = max(a [i]、mx); 15 } 16 if(mxv == 0 ){ 17 puts(" 0 "); 戻る; 18 } 19 int ans = 0 ; 20 for(int i = 0 ; i <= 30 ; i ++ ){ 21 if(mxv >> i&1 ){ 22 ans = i; 23 } 24 } 25 cout << ans + 1 << endl; 26 } 27 28 int main(){ 29 int t; 30 cin >> t; 31 while(t-- ){ 32 work(); 33 } 34 }
#タイトル
#問題解決
#タイトル
#問題解決