2021/04/08

概略

今日は新卒の子諸々と共にお昼に行った. 四川料理を調子に乗って中辛で頼んで痛い目を見た. しんどい.

(本当に中辛なのか? これ) f:id:kilattoeruru:20210408235334j:plain

新しいWebFrameworkが出ていた

GitHub - ntex-rs/ntex: framework for composable networking services

webframeworkのベンチマーク的にはactix-webを超えているらしいがはてさて. 一通りactix-webを使い倒してみたら触ってみようかなぁと思う. drogonも結局Hello worldしか出来ていないし, 圧倒的時間不足を感じる

今日の競プロ

ランダム

今日は atcoder.jp

サイトの埋め込みがなんかいい感じに出来ることにやっと気付いた. これで毎回タイトルを手打ちしなくて良い. エンジニア力に欠けていた.

ある数式がある値になるような変数の値を探す数値最適化問題.

一個答え分かれば良いので, にぶたんで出来る. 計算量が見積もれれば焼きなましとかでも解けるのだろうか. 雑に投げたニュートン法だと落ちた. (それはそう)

上限はa, bが最大100で, 相反する挙動をしていたとしてもt = 200までで必ずどこかで100になる瞬間があるので, 201からくらいにしておいてok.

 O(\log 10^{10})くらい

正答: Submission #21573927 - AtCoder Beginner Contest 026

#include <bits/stdc++.h>
using namespace std;
double a, b, c;

double calc(double t){
  return a * t + b * sin(c * t * M_PI) - 100.0;
}

int main(){
  cin >> a >> b >> c;

  double lp=0, up=201;
  double eps = 1e-8;
  while(abs(calc((lp + up)/2)) > eps) {
    double mid = (lp + up)/2;
    if(calc(mid) < 0) lp = mid;
    else up = mid;
  }
  cout << setprecision(15) << (lp + up) / 2 << endl;
}