ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

暑期多校

2022-07-18 18:34:08  阅读:145  来源: 互联网

标签:int fish 多校 long ss 1ll 暑期 dp


2022.7.18 牛客

A

队友写的

D

高中数学(

考虑弦长最大的时候,弧长最大。

于是画画图就会发现其实那个弦长最大的时候是$O$和$Q$共线

然后连一下$O$和$A$跟$B$,数学推导一下弦长,再通过弦长反推圆心角大小就好了。

记得别写反$arcsin$和$arccos$

#include <bits/stdc++.h>
using namespace std;
int T;
const double PI = 3.141592653589793;
int main(){
    cin>>T;
    while (T--){
        double R,x,y,d;
        scanf("%lf%lf%lf%lf",&R,&x,&y,&d);
        if(fabs(d-R) <=0.00001){
            printf("%.10lf\n",PI*R);
            continue;
        }
        double dis = sqrt(x*x+y*y);
        double t1=sqrt(R*R-(dis+d)*(dis+d));
        double t2=sqrt(R*R-(dis-d)*(dis-d));
        double Len=t2-t1;
        double Len1=sqrt(Len*Len+2.0*d*2.0*d);
        Len1=Len1/2.f;
        double Cos = Len1/R;
        double Angle = asin(Cos);
        double ans = 2.0 * Angle * R;
        printf("%.10lf\n",ans);
    }
    return 0;
}

G

签到

显然填一堆$9$是最优的

然后记得判断原串是不是$9999999x$的形式就行了(

#include <bits/stdc++.h>
using namespace std;
string ss;
int main(){
    cin>>ss;
    int Len=ss.length();
    if (Len == 1){
        cout<<ss;
        return 0;
    }
    bool flag=false;
    for (int i=0;i<Len-1;i++){
        if (ss[i]!='9') flag=true;
    }
    if (flag)
    for (int i=1;i<=Len-1;i++){
        printf("9");
    }else cout<<ss;
    return 0;
}

I

血压暴涨题(

发现打牌轮数是固定的

直接$dp$就好了

然后记得打麻将的时候每一轮手上是$13$张牌

写错这个调了好久

$dp[i][j]$表示当前是第$i$轮,$j$个对子

每次可以多拿一个对子,或者不变

但是因为是最优策略,所以多拿一个对子的话,那张单牌一定还有$3$张在牌山里。

然后没了(

#include <bits/stdc++.h>
using namespace std;
long long dp[170][10];
int T;
long long pai=136;
int Pai[5][15];
long long Ans[55]; 
string ss;
long long fish = 1e9+7;
long long Pow(int x,int y){
    long long ans=1;
    for (;y;y>>=1,x=1ll*x*1ll*x%fish)
        if (y&1) ans=1ll*ans*1ll*x%fish;
    return ans;
}
void Get(int x){
        memset(dp,0,sizeof(dp));
        pai = 136;
        pai = pai - 13;
        dp[0][x] = 1;
        for (int i=0 ; i<=pai ; i++)
            for (long long j=0;j<=6;j++){
                long long res = (13ll-2ll*j)*3ll;
                long long dan = pai-i;
                long long nw = 1ll*dp[i][j]*Pow(dan,fish-2)%fish;
                if (dan-res >= 0){
                    (dp[i+1][j+1] += 1ll*nw*res%fish)%=fish;
                    (dp[i+1][j] +=1ll*nw*(dan-res)%fish)%=fish;
                }
            }
        long long ans=0;
        for (int i=1;i<=pai-1;i++){
            ans = (ans + 1ll * dp[i][7] * i%fish)%fish;
        }
        Ans[x]=ans;
}
int cnt=0;
int main(){
    scanf("%d",&T);
    for (int i=0;i<=7;i++){
        Get(i);
    }
    while (T--){
        cnt++; 
        cin>>ss;
        memset(Pai,0,sizeof(Pai));
        int Len=ss.length();
        int x,hua,dui = 0;
        for (int i=0;i<Len;i++){
            if ('1' <= ss[i] && ss[i] <= '9'){
                x=ss[i]-'0';
                i++;
                if (ss[i] == 'm') hua = 1;
                if (ss[i] == 'p') hua = 2;
                if (ss[i] == 's') hua = 3;
                if (ss[i] == 'z') hua = 4;
                Pai[hua][x]++;
                if (Pai[hua][x] == 2){
                    dui++;
                }
            }
        }
        printf("Case #%d: %lld\n",cnt,Ans[dui]);
    }
    return 0;
}

 

标签:int,fish,多校,long,ss,1ll,暑期,dp
来源: https://www.cnblogs.com/si--nian/p/16491566.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有