JavaScript を使って削除確認ボタンを作りたいけど詰んでる

確認画面の「いいえ」を押下したら元のページに遷移するようにしたんだけど、削除処理が実行されてしまう...

以下、参考にしたサイト

Ruby on RailsJavaScript を呼ぶ方法

Stimulusというのを使うらしい。以下のサイトが参考になった。

引数を渡して JavaScript を呼ぶ方法もあった。

Stimulus v3.0.0で追加されそうな機能

JavaScriptについて

完全に初心者なので、いろいろググった

URLを開く方法

以下のサイトを参考にした。

JavaScriptでURLを遷移させる方法

確認画面の出し方

送信時に確認する

2022/2/20追記

解決しました。event.preventDefault() を利用すれば良かったようです。解決方法の記事を書きました。

GitHub pages が更新されない?

Git Hub pages 用のソースを push したのだが、Websサイトにソースが反映されない。
詳しく言うと、HTMLの更新は反映されているのだが、CSSの更新が反映されていない。GitHubのレポジトリには更新が反映されている。

時間が解決するだろうか?

追記:時間が解決する。この記事をアップロードしてからWebサイトを見に行ったら更新されていました。

GitHubを使ってみた

Git Hubにrailsソースコードと、自己紹介用のWebサイトをアップロードした。

自己紹介用のWebサイトの公開方法は GitHub PagesでWebページを公開する方法 | TechAcademyマガジン を参考にした。

画像の表示に違和感があるので直したい。

github.com

tomoand.github.io

履歴書を簡単に作れるアプリを開発したい

イデアの下書き。
就活の時にTeXで履歴書を作った。
ブラウザから渡したパラメータをサーバのTeXファイルに埋め込んで、出来上がったpdfをブラウザに返す。
キーワードはRubyでの外部プログラムの実行?

競プロへの取り組みの現状について

競プロ関連の記事の更新が長らく滞っています。コンテスト参加状況については、以下のリンクからご確認ください。

atcoder.jp問題ごとの提出コードは以下のリンクからご確認ください。

https://kenkoooo.com/atcoder/#/user/antomo?userPageTab=Submissions

現状、直近のコンテスト参加日が2021/12/11となっております。ネットワークスペシャリストの受験が終了次第、競プロに復帰していこうと考えております。

ネットワークスペシャリスト対策記録

午後対策

午後2対策

最近午後2の対策を始めた。これを読んでいる。良書だと思う。

午前対策はやってきたつもりだったので、基礎知識は十分だと思っていたが、実際はまだまだだったと実感した。
1問分勉強するのに3日かかりそう。8問分は勉強したいので、3/8まで午後2対策をやることになる。間に合うか?

AtCoder ABC 175 反省と D問題について

atcoder.jp

結果

A, B, C の3完だった。A と C は凡ミスで一度 WA になってしまった。残念。

D 問題の復習

問題文

記事最上部のリンク参照。

考え方

コマの移動の仕方を有向グラフに起こすと分かりやすいと思う。各マスの移動先は順列で与えられるため、グラフの頂点は出ていく辺と入ってくる辺を一本ずつ持つ。ゆえにグラフは1 つ以上のサイクルとなる。
例えばサンプル1の場合は次のような有向グラフとなる。

始点の選びかたと移動の回数を全探索して答えを求める。
まずは各サイクル上で適当な始点を選んだとき、1回ループまでの間に獲得する点数の最大値を計算する。ただし、K が選んだ始点の所属するループの長さより短い場合は、1K の間で最大の値を計算することになる。K がループの長さより大きい場合は一度サイクル上をループする間に獲得する点数の大きさに応じて、場合分けをする必要がある。

  • 一度ループする間に獲得する点数の合計が 0 以下場合

この場合はループすればするほど点数を損するため、先ほど計算した値が最大値となる。

  • 一度ループする間に獲得する点数の合計が 0 以上場合

この場合はループすればするほど点数を得することができる。よって、先ほど求めた値に、可能な限りループを繰り返すことによって得られるポイントを加えたものが最大値となる。

コード
#include<bits/stdc++.h>
using namespace std;
int main(){
  int n,k;cin>>n>>k;
  vector<int>p(n),c(n);
  for(int i=0;i<n;i++){
    cin>>p.at(i);
    p.at(i)--;
  }
  for(int i=0;i<n;i++){
    cin>>c.at(i);
  }
  vector<vector<int>>G(n,vector<int>());
  int64_t ans=-1e18;
  for(int i=0;i<n;i++){
    int x=i;
    int64_t sum=0;
    int64_t tmp=0;
    while(1){
      G.at(i).push_back(c.at(x));
      sum+=c.at(x);
      x=p.at(x);
      if(x==i)break;
    }
    for(int j=0;j<k;j++){
      int roop_size=G.at(i).size();
      if(j>roop_size-1)break;
      tmp+=G.at(i).at(j);
      if(sum>0){
        ans=max(ans,tmp+sum*((k-j-1)/roop_size));
      }
      else{ans=max(ans,tmp);}
    }
  }
  cout<<ans<<endl;
}