発生している問題・エラーメッセージ
paizaの問題ですが大規模データでタイムオーバーとなります。
どこが原因か教えていただきたいです。
paizaの規約により問題文はお見せすることはできません。
よろしくお願いします。
またimport sysを使ったのですが、基本データでは使わない時よりも処理速度が0.01secほど遅くなっていました。 何故ですか?
ソース:Pythonの知っておくと良い細かい処理速度の違い8個
該当のソースコード
python
1#import sys 2#input = sys.stdin.readline 3""" 4入力例 510 3 62 6 76 8 83 4 9 10出力例 115 12""" 13#xは使わなくても解けたので使いませんでした 14x,y = map(int,input().split()) 15li = [] 16 17for i in range(y): 18 a,b = map(int,input().split()) 19 liSec = [i for i in range(a,b+1)] 20 liThi = list(set(li)-set(liSec)) 21 if len(liThi) == abs(len(li)-len(liSec)): 22 li = liThi 23 else: 24 li = list(set(li + liSec)) 25print(len(li))
##追記
問題文をアレンジしてみました。
本当の問題文とは大きく異なりますが、よろしくお願いします。
###問題
L個の"0"が入った配列Aがあります。 A = ["0","0","0","0",,,,,,]
a_i番目からb_i番目を指定すると、そのインデックスにある"0"は"1"へと変化します。
A[a_i]からA[b_i]が全て"1"の場合は、全て"0"へとなります。
またA[a_i]からA[b_i]が全て"1"の場合でない場合は"0"からは"1"、"1"はそのままとなる.
N回操作を行った時,配列Aに入ってる"1"の個数を求めよ
####入力例
L N
a_1 b_1
a_2 b_2
...
a_N b_N
制約
1 ≦ L ≦ 1,000,000,000 , 0 ≦ N ≦ 100,000
1 ≦ a_i ≦ b_i ≦ L (1 ≦ i ≦ N)
####例
10 3
2 6
6 8
3 4
の時
A = ["0","0","0","0","0","0","0","0","0","0"]
2番目から6番目の時
A = ["0","1","1","1","1","1","0","0","0","0"]
6から8の時
A = ["0","1","1","1","1","1","1","1","0","0"]
3から4の時
A = ["0","1","1","0","0","1","1","1","0","0"]
よって"1"の個数は5である。
###私の考え
Lの数が膨大になるため配列内にN個の"0"を生成するやり方ではなく、
新しい配列「li」 にインデックス番号を追加し、説明するのは難しいが
配列「li」にある要素全ては問題でいう”1”の時のインデックス番号が入っているため、
最後に配列「li」の要素数を出力すればいいという考え方です
10 3
2 6
6 8
3 4
の時
li = []
2番目から6番目の時
li = ["2","3","4","5","6"]
6から8の時
li = ["2","3","4","5","6","7","8"]
3から4の時
li = ["2","5","6","7","8"]
よって"1"の個数は5である。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/21 11:52
2020/01/21 12:01