首页 > 其他分享 >AtCoder Beginner Contest 144

AtCoder Beginner Contest 144

时间:2023-04-02 18:55:16浏览次数:55  
标签:AtCoder 144 Beginner Contest int double ll maxn inf

AtCoder Beginner Contest 144

https://atcoder.jp/contests/abc144
补一下3.23做的。

D - Water Bottle

分类讨论,三角函数。

#include <bits/stdc++.h>
#define pi acos (-1)

using namespace std;

int main () {
    int a, b, x;
    cin >> a >> b >> x;
    cout << fixed << setprecision (7);
    if (2 * x < a * a * b)  cout << atan2 (b, 2.0 * x / (a * b)) * 180 / pi;
    else    cout << atan2 (2 * b - 2.0 * x / (1.0 * a * a), a) * 180 / pi;
}

E - Gluttony

非常简单的二分!

#include <bits/stdc++.h>
#define ll long long

using namespace std;
const int N = 2e5 + 5;
ll n, k, a[N], b[N];

bool check (ll x) {
    //改a能否在k次之内使得最大值<=x
    ll cnt = 0;
    for (int i = 1; i <= n; i++) {
        if (a[i] * b[i] <= x)   continue;
        cnt += (a[i] * b[i] - x + b[i] - 1) / b[i];
    }
    return cnt <= k;
}

int main () {
    cin >> n >> k;
    for (int i = 1; i <= n; i++)    cin >> a[i];
    for (int i = 1; i <= n; i++)    cin >> b[i];
    sort (a + 1, a + n + 1), sort (b + 1, b + n + 1, greater<>());
    // for (int i = 1; i <= n; i++)    cout << a[i] << ' ';cout << endl;
    // for (int i = 1; i <= n; i++)    cout << b[i] << ' ';cout << endl;
    ll l = 0, r = 0;
    for (int i = 1; i <= n; i++)    r = max (r, a[i] * b[i]);
    while (l < r) {
        ll mid = l + r >> 1;
        if (check (mid))    r = mid;
        else    l = mid + 1;
    }
    cout << r << endl;
}

//二分

F - Fork in the Road


枚举点 \(i\),每次删去其中 \(f_v\) 最大的出边 \(v\)

#include <bits/stdc++.h>

using namespace std;
typedef pair<int, int> pii;
const int N = 605, M = N * N, inf = 1e9;
int n, m;
double f[N], ans = inf; //f[i]:i到n的期望次数
vector<int> v[N];

double cal (int x) {
    for (int i = 1; i <= n; i++)    f[i] = 0.0;
    for (int i = n - 1; i >= 1; i--) {
        if (v[i].size () == 1 && x == i) { //注意删的是i的出边
            f[x] = inf; //所以如果i只有一条出边,删了就到不了
            continue;
        }
        f[i] = 1;
        int fm = v[i].size () - (x == i);
        double maxn = 0;
        for (auto j : v[i]) {
            double tt = f[j];
            maxn = max (maxn, tt);
            f[i] += tt / fm;
        }
        if (i == x) f[i] -= maxn / fm;
    }
    return f[1];
}

int main () {
    cin >> n >> m;
    while (m --) {
        int a, b;
        cin >> a >> b;
        v[a].push_back (b);
    }
    for (int i = 1; i <= n; i++)    ans = min (ans, cal (i)); //删掉i的出边v中fv最大的那个
    cout << fixed << setprecision (7) << ans << endl;
}

//枚举能删的

标签:AtCoder,144,Beginner,Contest,int,double,ll,maxn,inf
From: https://www.cnblogs.com/CTing/p/17281002.html

相关文章

  • AtCoder Beginner Contest 296 A-E
    AtCoderBeginnerContest296A-Alternately1voidsolve(){2intn=read();3strings;4cin>>s;5intans=1;6for(inti=0;i<s.size()-1;i++){7if(s[i]==s[i+1])ans=0;8}9puts(ans>0?"Yes&......
  • AtCoder Beginner Contest 296
    AtCoderBeginnerContest296赛时代码A-Alternately//Problem:A-Alternately//Contest:AtCoder-AtCoderBeginnerContest296//URL:https://atcoder.jp/contests/abc296/tasks/abc296_a//MemoryLimit:1024MB//TimeLimit:2000ms////PoweredbyCP......
  • day14| 94.二叉树的中序遍历;144.二叉树的前序遍历;145.二叉树的后序遍历
    94.二叉树的中序遍历 思路:1.找出重复的子问题这个重复的子问题是:先遍历左子树、再取根节点、最后遍历右子树2.确定终止条件当节点为空是,返回 代码如下:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,......
  • AtCoder Beginner Contest 153
    AtCoderBeginnerContest153https://atcoder.jp/contests/abc153这套比较简单。E-CrestedIbisvsMonster完全背包#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e3+5,M=1e4+5;lln,m,a[N],b[N],f[M*2],mx;int......
  • AtCoder Beginner Contest 296
    DM<=ab枚举。复杂度\(O(\sqrt{m})\)。C++Code#include"bits/stdc++.h"usingnamespacestd;usingi64=longlong;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);i64n,m;cin>>n>>m;if(m&......
  • AtCoder Beginner Contest 296 ABCD
    https://atcoder.jp/contests/abc296A-Alternately#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<LL,LL>PII;constLLMAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;constLLN=2e6+10,M=3023;constLLmod=100000007;cons......
  • AtCoder Beginner Contest 152
    AtCoderBeginnerContest152https://atcoder.jp/contests/abc152F我看了半天,编码方式那里还算是感觉比较玄乎,这题确实妙。D-Handstand2只需记录两端数字即可,不要想太复杂。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lln,sum,a[10][10];......
  • AtCoder Beginner Contest 295
    题解报告基本的一些理解和问题都在注释中A:ProbablyEnglish//水题#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<unordered_map>usingnamespacestd;constintmaxn=1e3+10;strings[......
  • AtCoder Beginner Contest 246
    AtCoderBeginnerContest246A(思维)A这个题大意是告诉你一个矩形的三个点,求第四个点,并且已知每条边都是平行于\(x\)轴或者是\(y\)轴的,那么我们可以确定,\(x\)坐标只有两......
  • Stanford CS 144, Lab 0: networking warmup 实验
    StanfordCS144,Lab0:networkingwarmupFinishStanfordCS144lab0andpassthetest.2023/03/29-01:45目录StanfordCS144,Lab0:networkingwarmup2Ne......