https://ac.nowcoder.com/acm/contest/3005/C
問題の意味
所定の長さn列の数A1、A2、...、AN 、最大の998244353モジュロ残りのk個の連続サブセグメントの製品の長さを求めます。
問題の解決策
足をエミュレート。
コード
#include <ビット/ STDC ++ H>
使用して 名前空間STDを、
const int型のmod = 998244353 ;
長い 長い ARR [ 200005 ]。
長い 長い INV(長い 長い、長い 長いB)
{
長い 長い ANS = 1 。
一方、(b)は、
{
もし、(B&1)ANS = ANS *%のMOD。
B / = 2 。=(* A)%のMOD。
}
リターン ANS。
}
INT )(主
{
長い 長い ANS = - 1、TEMP = 1、CNT = 0 、I、N、K。
scanf関数(" %LLD%LLD "、&N&K)。
以下のための(iは= 0、I <N; I ++)のscanf(" %のLLD "、およびARR [I])。
以下のために(私は= 0 ; I <kは、iが++ )
{
場合(ARR [I] == 0)CNT ++ 。
他の温度= TEMP * ARR [I]%のMOD。
}
のための(iは= 0 ; I <NK; I ++ )
{
場合ANS =(CNT!)MAX(ANS、温度);
場合(ARR [I] == 0)cnt-- 。
他 TEMP = TEMP * INV(ARR [i]は、mod- 2)%のMOD。
もし(ARR [I + K] == 0)CNT ++ 。
他の温度= TEMP *編曲:[I + K]%のMOD。
}
のprintf(" %のLLD " 、ANS)。
システム(「一時停止」)。
リターン 0 ;
}