質問編集履歴

2

自分の考えを追加しました

2020/01/21 11:49

投稿

akidon0000
akidon0000

スコア8

test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  #xは使わなくても解けたので使いませんでした
48
48
 
49
- x,y = map(int,input().split()) #1 ≦ x ≦ 1,000,000,000 , 0 ≦ y ≦ 100,000
49
+ x,y = map(int,input().split())
50
50
 
51
51
  li = []
52
52
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  for i in range(y):
56
56
 
57
- a,b = map(int,input().split()) #1 ≦ a_i ≦ b_i ≦ x (1 ≦ i ≦ y)
57
+ a,b = map(int,input().split())
58
58
 
59
59
  liSec = [i for i in range(a,b+1)]
60
60
 
@@ -84,9 +84,9 @@
84
84
 
85
85
  a_i番目からb_i番目を指定すると、そのインデックスにある"0"は"1"へと変化します。
86
86
 
87
- A[a_i]からA[a_i]が全て"1"の場合は、全て"0"へとなります。
87
+ A[a_i]からA[b_i]が全て"1"の場合は、全て"0"へとなります。
88
88
 
89
- またA[a_i]からA[a_i]が全て"1"の場合でない場合は"0"からは"1"、"1"はそのままとなるとき
89
+ またA[a_i]からA[b_i]が全て"1"の場合でない場合は"0"からは"1"、"1"はそのままとなる.
90
90
 
91
91
 
92
92
 
@@ -105,6 +105,14 @@
105
105
  ...
106
106
 
107
107
  a_N b_N
108
+
109
+
110
+
111
+ 制約
112
+
113
+ 1 ≦ L ≦ 1,000,000,000 , 0 ≦ N ≦ 100,000
114
+
115
+ 1 ≦ a_i ≦ b_i ≦ L (1 ≦ i ≦ N)
108
116
 
109
117
 
110
118
 
@@ -139,3 +147,45 @@
139
147
  A = ["0","1","1","0","0","1","1","1","0","0"]
140
148
 
141
149
  よって"1"の個数は5である。
150
+
151
+
152
+
153
+ ###私の考え
154
+
155
+ Lの数が膨大になるため配列内にN個の"0"を生成するやり方ではなく、
156
+
157
+ 新しい配列「li」 にインデックス番号を追加し、説明するのは難しいが
158
+
159
+ 配列「li」にある要素全ては問題でいう”1”の時のインデックス番号が入っているため、
160
+
161
+ 最後に配列「li」の要素数を出力すればいいという考え方です
162
+
163
+ 10 3
164
+
165
+ 2 6
166
+
167
+ 6 8
168
+
169
+ 3 4
170
+
171
+ の時
172
+
173
+
174
+
175
+ li = []
176
+
177
+
178
+
179
+ 2番目から6番目の時
180
+
181
+ li = ["2","3","4","5","6"]
182
+
183
+ 6から8の時
184
+
185
+ li = ["2","3","4","5","6","7","8"]
186
+
187
+ 3から4の時
188
+
189
+ li = ["2","5","6","7","8"]
190
+
191
+ よって"1"の個数は5である。

1

問題文をかなりアレンジして追記しました。

2020/01/21 11:49

投稿

akidon0000
akidon0000

スコア8

test CHANGED
File without changes
test CHANGED
@@ -71,3 +71,71 @@
71
71
  print(len(li))
72
72
 
73
73
  ```
74
+
75
+ ##追記
76
+
77
+ 問題文をアレンジしてみました。
78
+
79
+ 本当の問題文とは大きく異なりますが、よろしくお願いします。
80
+
81
+ ###問題
82
+
83
+ L個の"0"が入った配列Aがあります。 A = ["0","0","0","0",,,,,,]
84
+
85
+ a_i番目からb_i番目を指定すると、そのインデックスにある"0"は"1"へと変化します。
86
+
87
+ A[a_i]からA[a_i]が全て"1"の場合は、全て"0"へとなります。
88
+
89
+ またA[a_i]からA[a_i]が全て"1"の場合でない場合は"0"からは"1"、"1"はそのままとなるとき
90
+
91
+
92
+
93
+ N回操作を行った時,配列Aに入ってる"1"の個数を求めよ
94
+
95
+
96
+
97
+ ####入力例
98
+
99
+ L N
100
+
101
+ a_1 b_1
102
+
103
+ a_2 b_2
104
+
105
+ ...
106
+
107
+ a_N b_N
108
+
109
+
110
+
111
+ ####例
112
+
113
+ 10 3
114
+
115
+ 2 6
116
+
117
+ 6 8
118
+
119
+ 3 4
120
+
121
+ の時
122
+
123
+
124
+
125
+ A = ["0","0","0","0","0","0","0","0","0","0"]
126
+
127
+
128
+
129
+ 2番目から6番目の時
130
+
131
+ A = ["0","1","1","1","1","1","0","0","0","0"]
132
+
133
+ 6から8の時
134
+
135
+ A = ["0","1","1","1","1","1","1","1","0","0"]
136
+
137
+ 3から4の時
138
+
139
+ A = ["0","1","1","0","0","1","1","1","0","0"]
140
+
141
+ よって"1"の個数は5である。