#include <ビット/ STDC ++ H> 名前空間STDを使用して、 CONST int型N = 1E3 + 100。 typedefの長い長いLL。 N INT、K。 [N] INT。 int型のB; int型CNT = 0; INTメイン(){ CIN >> N >> K。 {ため(; iがn <I ++は、I = 0 INT) CIN >> B。 [B] ++; } int型のCNT =(N + 1)/ 2。 int型の合計= 0; 以下のために(INT i = 1; iが<= kは、iは++){ IF(CNT> = [I] / 2)CNT-= [I] / 2、和+ = [I] / 2 * 2、[ I] = 2%。 他{ 一方([I]> = 2 && CNT> 0){ [I] - = 2。 cnt--; 和+ = 2; } } もし(CNT == 0)ブレーク。 } ため(INT i = 1; iは= Kを<; iは++){ IF(CNT == 0)破ります。 cnt--; 合計++; } } COUT <<和<< ENDL。 0を返します。 }
B スポーツマフィア
実行される操作の数が1であると仮定し、(b)は操作の数が2行われます
A + B = N
1 +( - 1)* / 2 - B = K
方程式を解きます
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 CONST int型N = 1E3 + 100。 typedefの長い長いLL。 LL N、K。 INTメイン(){ CIN >> N >> K。 LL X =( - 3 + SQRT((N + K)×8 + 9))/ 2。 COUT << N - X << ENDL。 0を返します。 }
DP [I] [j]は、j番目の行がi番目の最大値から選択される表します
DP [I] [J] = MAX(DP [I-1] [J ^ 1]、DP [I-2] [J]、DP [I-2] [J ^ 1])。
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 CONST int型N = 1E5 + 100。 typedefの長い長いLL。 int型のn; LL [2] [N]。 LL DP [N] [2]。 メインINT(){ CIN >> N。 以下のために(INT i = 1; iが<= N; iは++){ CIN >> [0] [i]は、 } {式(I ++; iが<= N I = 1 INT)するための [I] [1] CIN >>。 } のLL MA = 0。 以下のために{(INT i = 1; iは++; iが= N <) のための(int型J = 0であり、j <2、J ++){ DP [I] [J] = MAX(DP [I]、[J]、DP [Iを-1] [(J + 1)%2] + [J] [I])。 DP [I] [J] = MAX(DP [I]、[J]、DP [I-2] [J] + [J] [I])。 DP [I] [J] = MAX(DP [I]、[J]、DP [I-2] [(J + 1)%2] + [J] [I])。 MA = MAX(DP [I]、[J]、MA)。 } } COUT << MA << ENDL。 0を返します。
iビットの各数をn回加算されます
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 CONST int型N = 1E5 + 100。 typedefの長い長いLL。 #defineモッズ998244353 int型のn; LL [N]。 LLのqpow(LLのX、int型のY){ LL RES = 1。 一方、(Y){ IF(Y&1)RES =の解像度* X%MOD。 X = X * X%MOD。 Y / 2 =。 } RESを返します。 } int型のmain(){ CIN >> N。 LL合計= 0; LLのRES = 0。 以下のために(INT i = 0; iがn <; iは++){ CIN >> [I]。 int型CNT = 0; 和= [I]。 (合計){一方 のRES =(RES +和%10 * N%MOD * qpow(10、CNT)%のMOD)%MOD。 CNT ++; RES =(RES +和%10 * N%MOD * qpow(10、CNT)%のMOD)%MOD。 CNT ++; 合計/ = 10ll。 } } COUT << RES << ENDL。 0を返します。 }