小数点以下3桁(固定)で出力せよ (fixed)
こう書く。
long double answer; // 答えを求める // 出力 cout << fixed << setprecision(3); cout << answer << endl;
おまけ(具体例)
約数の個数の上限
- 参考 E8さん
- vの約数の個数をd(v)として、
* 10^6以下 K=720720 d(K)=240 * 10^9以下 K=735134400 d(K)=1344 * 10^12以下 K=963761198400 d(K)=6720 * 10^18以下 K=897612484786617600 d(K)=103680
E. Robot on the Board 1
問題
- https://codeforces.com/contest/1607/problem/E
- 問題概要
- ロボットがステージ上を命令どおりに動く。ステージから落ちたら死ぬ。できるだけ生き残るにはどの座標から始めればいいか?
- AC
解説
void solve(){ ll H,W;cin>>H>>W; string s;cin>>s; // 安全地帯 y方向 ll upper=1; ll lower=H; // 安全地帯 x方向 ll left=1; ll right=W; // ロボットの位置のmin, max ll y_min=0; ll y_max=0; ll x_min=0; ll x_max=0; // ロボットの位置 ll y=0; ll x=0; for(char c : s){ if(c=='L'){ x--; if(x<x_min){ left++; } } else if(c=='R'){ x++; if(x>x_max){ right--; } } else if(c=='D'){ y++; if(y>y_max){ lower--; } } else if(c=='U'){ y--; if(y<y_min){ upper++; } } if(left>right){ if(c=='R'){ p2(upper,left);return; }else{ p2(upper,right);return; } } if(upper>lower){ if(c=='U'){ p2(lower,left);return; }else{ p2(upper,left);return; } } chmin(y_min,y); chmax(y_max,y); chmin(x_min,x); chmax(x_max,x); } // 最後まで生き延びた場合 p2(upper,left);return; } int main(){ cin.tie(0); ios::sync_with_stdio(false); // input ll N; cin>>N; while(N--)solve(); return 0; }
行列のアフィン変換(平行移動・回転・X軸で反転(-1倍の拡大))
(自分の検索用の記事です)
アフィン変換とは?平行移動、拡大縮小、回転、スキューができる。2次元平面を考えているなら3x3の行列で表現。ベクトルは(x,y,1)
- 画像で理解するには https://imagingsolution.net/imaging/affine-transformation/
- アフィン変換は平行移動、拡大縮小、回転、スキューに分けてそれぞれ行列にして、順番に注意してマージする
使った問題
- ABC189 E - Rotate and Flip
言い換え
- x=pで反転とは、平行移動・-1倍・平行移動(戻し)に分解できるので、アフィン変換行列で表現できる
その他のキーワード
- 線対称