首页 > 其他分享 >AtCoder Beginner Contest 374 (A-E)

AtCoder Beginner Contest 374 (A-E)

时间:2024-10-16 11:35:42浏览次数:1  
标签:Showball AtCoder return Beginner int long i64 using 374

AtCoder Beginner Contest 374 (A-E)

比赛链接

A - Takahashi san 2

#include<bits/stdc++.h>

using namespace std;

using i64=long long;

void Showball(){
     string s;
     cin>>s;
     int n=s.size();
     cout<<(s.substr(n-3)=="san"?"Yes\n":"No\n"); 
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t=1;
    //cin>>t;

    while(t--){
      Showball();
    }

    return 0;
}

B - Unvarnished Report

#include<bits/stdc++.h>

using namespace std;

using i64=long long;

void Showball(){
     string s,t;
     cin>>s>>t;
     if(s==t) return cout<<"0",void();
     int n=min(s.size(),t.size());
     for(int i=0;i<n;i++){
        if(s[i]!=t[i]) return cout<<i+1,void();
     } 
     cout<<n+1;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t=1;
    //cin>>t;

    while(t--){
      Showball();
    }

    return 0;
}

C - Separated Lunch

\(2\le n \le 20\) ,二进制暴力枚举即可。

#include<bits/stdc++.h>

using namespace std;

using i64=long long;

void Showball(){
     int n;
     cin>>n;
     vector<int> a(n);
     int sum=0;
     for(int i=0;i<n;i++){
        cin>>a[i];
        sum+=a[i];
     }
     int ans=sum;
     for(int i=0;i<(1<<n);i++){
        int res=0;
        for(int j=0;j<n;j++){
            if(i>>j&1){
                res+=a[j];
            }
        }
        ans=min(ans,max(res,sum-res));
     }
     cout<<ans;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t=1;
    //cin>>t;

    while(t--){
      Showball();
    }

    return 0;
}

D - Laser Marking 几何

思路

全排列枚举线段的顺序,二进制枚举左右端点即可。

#include<bits/stdc++.h>

using namespace std;

using i64=long long;

struct Point{
    int x,y;
};

double dis(Point a,Point b){
    return hypot(a.x-b.x,a.y-b.y);
}

void Showball(){
    int n,s,t;
    cin>>n>>s>>t;
    vector<array<Point,2>> a(n);
    for(int i=0;i<n;i++){
        cin>>a[i][0].x>>a[i][0].y>>a[i][1].x>>a[i][1].y;
    }
    vector<int> p(n);
    iota(p.begin(),p.end(),0);

    double ans=1e9;
    do{ 
        for(int i=0;i<(1<<n);i++){
            Point pre={0,0};
            double res=0.0;
            for(int j=0;j<n;j++){
                int u=i>>j&1;
                res+=dis(a[p[j]][0],a[p[j]][1])/(t*1.0);
                res+=dis(a[p[j]][u],pre)/(s*1.0);
                pre=a[p[j]][!u];
            }
            ans=min(ans,res);
        }
    }while(next_permutation(p.begin(),p.end()));

    cout<<fixed<<setprecision(9)<<ans<<"\n";
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t=1;
    //cin>>t;

    while(t--){
      Showball();
    }

    return 0;
}

E - Sensor Optimization Dilemma 2 二分答案

思路

考虑二分,发现 \(A_i\) 和 \(B_i\) 的最大值都为100, 有一个显然的性质,机器 \(S_i\) 不会买超过 \(B_i\) 个或者机器 \(T_i\) 不会买超过 \(A_i\) 个,因为如果超过了,那么他们产生的产品数量一定大于等于 \(A_i*B_i\),那么就可以作为一个整体,然后用更便宜的替换它即可。因此,我们直接枚举选的少的机器数量,求出另一种机器数量进行 \(check\) 即可。

#include<bits/stdc++.h>

using namespace std;

using i64=long long;

void Showball(){
     int n,x;
     cin>>n>>x;
     vector<array<i64,4>> v(n);
     for(int i=0;i<n;i++){
        for(int j=0;j<4;j++){
            cin>>v[i][j];
        }
     }

     auto check=[&](i64 w){
        i64 sum=0;
        for(int i=0;i<n;i++){
            i64 minn=1e18;
            auto [a,p,b,q]=v[i];
            for(int j=0;j<b;j++){   
                minn=min(minn,j*p+max(0LL,w-j*a+b-1)/b*q);
            }
            for(int j=0;j<a;j++){
                minn=min(minn,j*q+max(0LL,w-j*b+a-1)/a*p);
            }
            sum+=minn;
        }
        return sum<=x;
     };
     int l=0,r=1e9;
     while(l<r){
        i64 mid=l+r+1>>1;
        if(check(mid)) l=mid;
        else r=mid-1;
     }
     cout<<l<<"\n";
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t=1;
    //cin>>t;

    while(t--){
      Showball();
    }

    return 0;
}

标签:Showball,AtCoder,return,Beginner,int,long,i64,using,374
From: https://www.cnblogs.com/showball/p/18469494

相关文章

  • AtCoder Beginner Contest 375
    A-Seats#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineintlonglongusingvi=vector<int>;usingpii=pair<int,int>;i32main(){ios::sync_with_stdio(false),cin.tie(null......
  • Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)
    PanasonicProgrammingContest2024(AtCoderBeginnerContest375)\(A\)Seats\(AC\)基础字符串。点击查看代码intmain(){intn,ans=0,i;strings;cin>>n>>s;for(i=0;i<n;i++){ans+=(s[i]=='#'&&s[i......
  • AtCoder Beginner Contest 375
    省流版A.枚举所有子串判断即可B.模拟计算记录累加即可C.根据旋转的周期性对每个点旋转次数取模后暴力旋转即可D.枚举\(k\),考虑\(i,j\)的对数,写成数学表达式后维护个数和位置和即可E.背包问题,以前两个数组和为状态,考虑每个数移动到何处转移即可F.逆向,删边变加边,维护......
  • KEYENCE Programming Contest 2024(AtCoder Beginner Contest 374)E题
    六年级蒟蒻来题解了!!!题目大意:给定你一个n,表示有n个生产线,每一个生产线都有两种机器,第i个生产线第一件产品每天可以造Ai件零件但是得付出Pi元的代价,第二件产品每天可以生产Bi件物品但是得付出Qi元的代价,然后给你x元的预算问你所有流水线中的最小值的最大值是多少?思路:首先我们......
  • AtCoder Beginner Contest 373 (A-F)
    AtCoderBeginnerContest373(A-F)比赛链接A-September#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){intans=0;for(inti=1;i<=12;i++){strings;cin>>s;ans+=((int)s.si......
  • abc374E Sensor Optimization Dilemma 2
    abc374E传感器优化困境2#include<bitsstdc++.h>#definelllonglong#defineN105usingnamespacestd;//最小值最大,二分?//猜测最小值,每一个过程都要大于最小值,如果可行,就放大intn;llans,X;structNode{ lla,b,p,q;}c[105];intchk(llw){//猜测的是产品个数(加......
  • 【做题笔记】Atcoder 之 dp 专题训练
    ABCDEFGHI概率dp。设\(dp_{i,j}\)表示前\(i\)个硬币中有\(j\)个正面的概率。转移显然:\(dp_{i,j}=dp_{i-1,j-1}\timesp_i+dp_{i-1,j}\times(1-p_i)\)当\(j=0\)时,前\(i\)个硬币中没有正面。所以只能由反面的概率转移过来,转移为:\(dp_{i,j}=dp_{i-1,j}\time......
  • AT_abc374_c [ABC374C] Separated Lunch 题解
    题目传送门右侧可以传送到原题位置。题目大意题目描述由于KEYENCE总部的员工越来越多,他们决定将总部各部门分成两组,错开午休时间。KEYENCE总部有NNN个部门,第......
  • AtCoder Beginner Contest 374(D-E)
    A-C:惯例是宝宝题,会打暴力就能过哈D:其实也是暴力dfs,有一个double打错成int(我是猪鼻),卡了我很久#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e3+10,eps=1e-7;intn,s,t;boolvis[10];doublesum=1e8;structNode{ doublex,y,x1,y1;}a[maxn];doub......
  • キーエンスプログラミングコンテスト2024(AtCoder Beginner Contest 374)
    A.Takahashisan2判断一个字符串是否以san结尾usingnamespacereader;intmain(){strings;cin>>s;if(s[s.length()-1]=='n'ands[s.length()-2]=='a'ands[s.length()-3]=='s'){cout<<"Yes";......