独力リンクに https://www.luogu.com.cn/problem/P2786
あなたの手を練習するマップテンプレートとしてこの質問を取るqwq
書式#include <cstdioを> する#include <CStringの> の#include <アルゴリズム> 書式#include <キュー> の#include <cmath> の#include <マップ> 書式#include <iostreamの> 使用して 名前空間はstdを、 INTはREAD(){ int型 ANS = 0、F = 1、C = GETCHAR()。 一方、(C < ' 0 ' || C> ' 9 '){ もし、(C == ' - ')、F = - 1。C = GETCHAR()。 ' 0 ' && C <= ' 9 '){ANS = ANS * 10 +(C- ' 0 ')。C = GETCHAR();} 戻り ANS * F。 } INT N、MOD、ANS。 char型のC; 文字列sの。 マップ < 文字列、int型 > Q; int型の PD(char型のC){ 場合(C == ' ' || C == ' ' || C == ' ' || C == ' !'|| C == " ?")の戻り 0 ; リターン 1 ; } int型)(主{ N)(読み取り=。MOD = リード()。 以下のために(INT iが= 1 ; <I = N; I ++)CIN >> S、q.insert(対< 文字列、整数 > (S、READ()))。 S = "" ; 一方、((C = GETCHAR())!= EOF){ 場合(PD(C))、S + = C。 他 ANS =(ANS + Q [S])%MOD、S = "" ; } のprintf("%D \ n " 、ANS); 戻り 0 ; }