8月10日概要

CYJianキャンディ解決レポート


次のように内容は次のとおりです。

彼は現在、各バルクキャンディーする$ R [I] -1- [I] + 1 $キャンディの小片、Lのそれぞれの甘い菓子片[I]、L [I] +、$ $ Nバルクキャンディーを有します1、L [i]は+2 ...... R [I]。

彼は現在、必要に応じて小菓子組成物のキャンディー彼のプラッタに各大キャンディから、お菓子の甘い選出されたセットは、x [1]、X [2であることができる ] ..... X [n]は、 提供します

お菓子の盛り合わせの幸福指数の定義

今お聞きしたいCYJian、すべてのプログラムの幸福指数は、彼がプラッタを選択し、どのくらい?(結果出力回答モジュロ1E9 + 7)

正の整数nの最初のラインの入力、バルクキャンディーの数

Lの次のn行[i]は、R [i]は、回答の数の出力。

サンプル入力1:3112311サンプル出力1時13分

2サンプル入力:3252425出力サンプル2:282


PS:  表現

ANS = 1 以下のためにint型 i = 1 ; iは++; iが= N < 
    ANS * =(HX [I] + 1)。

 数学の問題?

2時間式HHHHのクラスで教師を押してください

簡単に言えば、同じカテゴリに同じ最大数(すなわち、H)であります

そして、問題の意味ではない行に1を除くカテゴリー1、含まれている必要があります(ので、自分の+1最大のをマイナス1)

例:

二つの大きなお菓子がある場合は、お菓子や小さなは1,2,3です

それでは、すべてのポイントが質問の唯一の5種類を満たすために意図されている9つのカテゴリーの合計で、接続されている場合

より良い、カウント不遵守を減算することにより計算してすべての場合において、

図(マークされた赤は問題の意味に沿ったものです):

すなわち、(擬似)の操作:SUM([1,3]) - SUM([2,3])。

次いで、異なる状況のそれぞれの最大値を合計することができ%のMOD


重要!

答えは非常に大きいかもしれないので、疲れを取るために、要求の対象であるので(タイトルは1000000007%必要と先生は言ったが、我々は、高精度を書きませんでし質問人々の外にあります

一般%のmodは問題ではない(MOD + ANS%MOD)片側に加算および減算、乗算の過程で、話します

しかし、業務の変化に加えて、部門の変化が間違った答えにつながるので、執筆の過程で問題に特別な注意を払うだろう場合


コード:

1の#include <ビット/ STDC ++ H>
 2  の#define MOD十億七
 3  の#define freopenは(X){freopenは(#X ".IN"、 "R"、STDIN); freopenは(#X ".out"を、「W 」、STDOUT);}
 4  使って 名前空間STDを、
5  INT N。
6  長い 長いMAXL、MAXR、ANS。
7  長い  L [ 1005 ]、R [ 1005 ]。// 不开LONGLONG见ZS 
8  長い 長い解く(長い 長い A1、長い A2){
 9      長い 長い RET =1 ; // 乗算は疲れているので、それは1に初期化される
10      のためにint型 I = 1 ; I <= N; Iは++){ // N-大キャンディ
。11          ロング ロング RR =分(R&LT [I]、A1) ; // 即ちH、最大値を見つける
12は         ロング ロング SUM =(RR-L [I] + 1)%* MOD(L [I] + RR)/ 2 ;%MOD // 余分部及び%に加え注
 13          // ここで和= X [1] + X [2] + ...となるx [n]の( 最初の項目2で割った項目数によって最後の項目に加えて)
14          SUM =(((RR-L [I] + 1)%* MOD(A2 + 1。 )%MOD-SUM)+ MOD%MOD)%MOD;
 15          // ここ合計=選択された程度乗法お菓子の甘い
16         RET =(RET *合計)%MOD。
17      }
 18      リターンRET。
19  }
 20  INT メイン(){
 21      freopenは(A)。
22      のscanf(" %d個"、&N)
23      のためにint型 i = 1 ; iが<= N; iが++ ){
 24          のscanf(" %D%dの"、&​​L [I]、およびR [I])。
25          MAXL = MAX(MAXL、L [i])と、MAXR = MAX(MAXR、R [I])。// 找出R、L中的最大值
26      }
 27      のためにINT= MAXL I; Iは<= MAXR; I ++ ){
 28          ロング ロング TMP =((解決(I、I)-solve(I- 1、I))+%MOD MOD)MODの%; // 異なる状況のために操作 
 29          // ([1,3])の和に相当する、(解決の実施形態では(I、I)を解く iは、I-1) 実施の形態では、和に相当する([2,3])
30          のANS =(ANS TMP +)%MOD;
 31である     }
 32      のprintf(" %のLLD " 、ANS);
 33である     リターン 0 ;
 34れます }

要約:コードを見ては、実際には非常に簡単です

しかし8を考えることができない自分自身に重点を置いて、このような強力な数学の問題のためにとにかく、私は期待していませんでした

実際には、物事は、クラスHHHHの中の先生の分析を超えている私はメロンを持っていない雨

おすすめ

転載: www.cnblogs.com/Yz-jw/p/11332993.html