d_tail's blog

備忘や記録

【メモ】古いノートPCにManjaro Linuxを入れてみた【Let's note CF-SX1】

はじめに

新しいPCに乗り換えた後は全く触れていなかったノートPCに,Manjaro Linuxを入れてみました.
この記事はその際に参考にさせていただいたサイトなどのメモ書きとなっています.

入れてみようと思った動機としては,重くなったPCがあわよくば使えるようになればいいなという思いと,単純にUbuntu以外のLinuxを使ってみることに興味があったためです.

f:id:d_tail:20181108154149j:plain

PCのスペック

PC(Let's note CF-SX1)の公式ページは(おそらく)以下になります.
ノートパソコン CF-SX1GEPDR 商品概要 | パソコン | Panasonic
4GBのメモリが増設されているのでメモリは8GBになっています.
また,バッテリーがリコール対象になったこともあり,バッテリーは比較的新しいものに交換されています.

ISOファイルをUSBメモリに書き込む

まずManjaro LinuxのページからISOファイルをダウンロードし,USBに書き込みました.
今回ダウンロードしたのはCommunity EditionsのMateです.
Manjaro Community Editions | Manjaro Linux

その後,ダウンロードしたISOファイルを以下のサイトを参考にさせていただき,Rufusというソフトを使用してUSBメモリに書き込みました.
linuxfan.info
USBメモリの容量は2GBで足りました.

インストール

インストールは基本的に以下のサイトを参考にさせていただきました.
Manjaro Linuxを触ってみた – がとらぼ
基本的にこの記事に書かれている手順通りに行うことでインストールを完了させることができました.

また,Chromeをインストールする際にはこちらのサイトも参考にさせていただきました.

applecom.blog.jp

感想

以前のwindows7が入っていた状態よりかは大分軽くなりました.

ただ,設定や環境構築などがまだほとんどできていないので,快適に開発で使えるようになるかはまだわかりません.

これから色々と調べつつ環境構築をしてみたいと思います.

特にこのPCはタッチパッドが円形になっており,回転によるスクロールができないと少し不便なため,可能にしたいところです.

参考・関連サイト

【参加記録】AtCoder Beginner Contest 113

はじめに

AtCoder Beginner Contest 113に参加した記録です.

beta.atcoder.jp

A - Discount Fare

X + Y/2を出力すれば良い.
A問題でしたが,制約をちゃんと見ていなかったのは気をつけたいです.

X,Y = map(int,input().split())
print(X + int(Y/2))

B - Palace

T−H[i]*0.006を計算してAとの差の絶対値が最小になるiを求めれば良い.
計算結果をintでキャストしたものを提出してしまったため1WA.
焦りすぎたせいで提出までに少し時間がかかってしまったのも反省点.

N = int(input())
T,A = map(int,input().split())
H = [int(i) for i in input().split()]
 
res = - 1
res_val = 100000
for i in range(N):
    av_temp = T - H[i] * 0.006
    if res_val > abs(av_temp - A):
        res = i
        res_val = abs(av_temp - A)
 
print(res+1)

C - ID

入力のPとYの組み合わせに市の番号を追加したものをソートしたり,県ごとに何回市が存在したかをカウントしていくリストを作成したりして解きました.
解法はそこそこで思いつけましたが,Pythonはリスト関係の処理が遅いらしいため,どのように書くか迷って時間を潰してしまいました.(そもそもappendを多用してるのが悪そう)

N,M = map(int,input().split())
PY = []
tmp = []
cheker = []
res = []
for i in range(M):
    tmp = list(map(int,input().split()))
    tmp.append(i)
    PY.append(list(tmp))
    res.append('')
 
sorted_py = sorted(PY, key=lambda x: x[1])
checker = [0 for i in range(N)]
 
for i in range(M):
    index = sorted_py[i][0]-1
    checker[index] += 1
    res[sorted_py[i][2]] = str(sorted_py[i][0]).zfill(6) + str(checker[sorted_py[i][0]-1]).zfill(6)
 
for i in range(M):
    print(res[i])

D - Number of Amidakuji

手付かず.

コメント

C問題がなんとか解けて良かったです.
次回もC問題が解ければレートが緑になる可能性があるので頑張りたいところです.

【精進記録】AtCoder Beginner Contest 066 C - pushpush

問題

beta.atcoder.jp

解法

TLEしか出せなかったので解説を見てAC.

最初に追加した要素ほど数列の中央側になっていくので,要素のindexの偶奇に気をつけて数列の前と後ろに交互に要素を追加していけば良い.

解法自体は思いついたが単純にPythonのリストに対してappend()で後ろに追加,insert()で先頭に追加,という方法をしていたのがよくなかった.
特にinsertは計算量がO(n)なので遅いらしい.
参考:

qiita.com

解説を見たところ,C++の場合はdequeというライブラリを使うと簡単にできると記されていたので,Pythonにも存在するか調べたところ,collectionモジュールにdequeが含まれていたのでこれを利用しました.

insert()の代わりにdequeのappendleft()を使えば計算量がO(1)になるようです.

コード

from collections import deque
 
N = int(input())
A = [int(i) for i in input().split()]
 
B = deque(maxlen=2*10**5)
 
if N % 2 == 0:
    for i in range(N):
        if i % 2 == 0:
            B.append(A[i])
        else:
            B.appendleft(A[i])
else:
    for i in range(N):
        if i % 2 == 0:
            B.appendleft(A[i])
        else:
            B.append(A[i])
 
print(*B)

Submission #3525231 - AtCoder Beginner Contest 066

コメント

dequeの存在を知れたのが良かった.
標準ライブラリに含まれているデータ構造などは調べておいたほうが良さそう.
加えて,問題を解いて練習するのと同時にそろそろアルゴリズムとデータ構造についても少しづつ練習していく必要がありそう.

【精進記録】AtCoder Regular Contest 091 C - Flip,Flip, and Flip......

問題

beta.atcoder.jp

解法

解法を思いつくまでにそこそこ時間がかかった&コーナーケースで躓いたけどなんとか解説を見ずにAC.

N = 1かつM = 1 の場合は1,N = 1 かつM ≠ 1の場合は(M-2),M = 1かつN ≠ 1の場合は(N-2)となる.

この場合以外のN ≧ 2 かつM ≧ 2の場合,裏返す回数を数えると四隅が4回,四隅を除く辺部分が6回,それ以外のカードは9回裏返されることになるため,9回裏返されるカードの数を数えれば良い.
9回裏返される部分は外周以外のカードなので,(N-2)*(M-2)となる.

裏返す回数を図示してみることで解法に気づくことができた.

ただ,提出したコードでは無駄にN = 2またはM = 2の場合の条件も書いてしまった.

図示して検討したパターン

f:id:d_tail:20181103164338p:plain

コード

N,M = map(int,input().split())
 
if N == 2 or M == 2:
    print(0)
    exit()
 
if N == 1:
    if M == 1:
        print(1)
    else:
        print(M-2)
    exit()
 
if M == 1:
    print(N-2)
    exit()
 
print((N-2)*(M-2))

コメント

前回の問題でも思ったが,わからない場合はとにかく図示してみるのが有効そう.