N = C(2 N)+ K(构造)(1337文字列を印刷する)教育Codeforcesラウンド70(DIVのために評価した。2)

トピックへのリンク:https://codeforc.es/contest/1202/problem/D

質問の意味:

あなたの数を与えるために、N(<= 1E9)、そのようのでストリング..... 137 713 713(のみ1,3,7-を含む)構成の異なるサブシーケンス1337の数は、N-ストリングから構成は、することができません長い(<= 1E5) 。

アイデア:

構成の問題のこのタイプは、私はしようとした最初の方法で固定されなければならない(図2a)C + C (2、B)+ C(C 2)+···= N 形、見つかりません。その後、まだ私は他の人のコードを読んで、

あるC(2、M)+ kは任意の二つのため、組成nの形でN *(N-1)(N-1)*(N -2) 数(差より大きくない2 * 31622)ので、ルート1E9がある31622

そう全長はより大きくない2 * 31622 +(最大長kである)31 622は、(最大長mである)正確に94868 <1E5。

そう答えは  133 + 7(K番目)+ 3333(二M-2)... 7

  1つ の#define IOSはios_base :: sync_with_stdio(0)。cin.tie(0)。
  2の#include <cstdioを> // のsprintf islowerはisupper 
  3の#include <cstdlib> // のmalloc出口STRCATのitoaはシステム( "CLS")
  4の#include <入出力ストリーム> // 
  5の#include <fstreamの>
   6の#include <ビット集合>
   7  // の#include <地図>
   8  // の#include <unordered_map>   https://codeforc.es/contest/1202/problem/D 
  9の#include <ベクトル>
 10の#include <積層>
 11の#include < 設定 >
する#include < 文字列・H> // はstrstr SUBSTR 
13の#include < ストリング >
 14の#include <TIME.H> // にsrand(((符号なし)時間(NULL)))。シードN =ランド()%10から0〜9。
15の#include <cmath>
 16の#include <両端キュー>
 17の#include <キュー> // PRIORITY_QUEUE <整数、ベクトル<整数>、大きな<整数>> Q。// 以下
18の#include <ベクトル> // emplace_back
 19  // の#include <math.h>の
 20  // の#include <WINDOWS.H> // (+ LEN)逆。// 〜!〜!
21の#include <アルゴリズム> // ソート+ユニーク:SZ =一意(B + 1、B + N + 1) - (B + 1)+ nth_element(第一、第n、最後、比較)
22  使用 名前空間 STDを、// next_permutation(A + 1、A + 1個の+ N)。// prev_permutation 
23  の#define(; <= C ++ A = B intを登録)するための(C、B)FO
 24  の#define(= bのintを登録するためのFR(C、B)。 > = C; - A)
 25  の#define MEM(A、B)のmemset(A、B、はsizeof(A))
 26回 の#define PRのprintf
 27  の#define SCのscanf
 28回 の#defineのLS RT << 1つの
 29  の#define RSのRT << 1 | 1
 30 ボイド swapp(INT&A、INTB)。
31  ダブル fabss(ダブルA)。
32  int型 MAXX(int型int型のB)。
33  INTミネソタ州(INT A、INT B)。
34  INT Del_bit_1(int型N);
35  INT lowbit(INT N)。
36の int型の ABS面(INT A)。
37  // CONST長い長いINF =(1LL << 60)。
38  constの ダブル E =2.718281828 ;
39  CONST  ダブル PI = ACOS( - 1.0 )。
40  のconst  int型 INF =(1 << 29 )。
41  CONST  ダブル ESP = 1E- 9 42  CONST  INT MOD =(INT)1E9 + 7 43  のconst  int型 N =(INT)1E6 + 10 44  
45  のint main()の
 46  {
 47      のint T。
48      SC(" %dの"& T);
 49      ながら(T-- 50      {
 51          のint nは、
 52          SC(" %のD "、&​​N); // C(2 N)+ K; 
53          int型のk = 0、M = 0 ;
 54          のためのint型 I = N; I> = 1 ; - I)
 55          {
 56              、K = N- I;
 57              int型 J =(INT)SQRT(2 * I);
 58              長い ロングTEMP = J×(J + 1 )。
59              であれば2 * I == TEMP)
 60              {
 61                  、M = J + 1 62                  ブレーク;
63              }
 64          }
 65          PR(" 133 " )。
66          FO(I、1 、K)
 67              PR(" 7 " )。
68          FO(I、1、M- 2 69              PR(3" );
 70          PR(" 7 );
 71          COUT << ENDL;
 72      }
 73      リターン 0 ;
 74  }
 75  
76  / * ********************* ************************************************** ************* * / 
77  
78  INT MAXX(INT A、INT B)
 79  {
 80      リターン A> B?A:B;
 81  }
 82  
83  空隙 swapp(INTと、INTB)
 84  {
 85      ^ = B ^ = A ^ = B。
86  }
 87  
88  int型 lowbit(int型N)
 89  {
 90      リターン N&( - N)。
91  }
 92  
93  INT Del_bit_1(int型N)
 94  {
 95      リターン N・(N- 1 )。
96  }
 97の 
98  int型の ABS面(INT A)
 99  {
 100      戻り A> 0?: - ;
101  }
 102  
103  ダブル fabss(ダブルA)
 104  {
 105      戻り A> 0: - ? 106  }
 107  
108  INTミネソタ州(INT A、INT B)
 109  {
 110      リターン <B?A:B;
111 }

 

おすすめ

転載: www.cnblogs.com/--HPY-7m/p/11333199.html