• Codeforces Round #105 (Div. 2) //缺E


    --------------

    A. Insomnia cure

    ---

    求1~n中能被klmn整除的数的个数。

    ---

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int k,l,m,n,d;
        cin>>k>>l>>m>>n>>d;
        int sum=0;
        for (int i=1;i<=d;i++){
            if (i%k==0||i%l==0||i%m==0||i%n==0){
                sum++;
            }
        }
        cout<<sum<<endl;
        return 0;
    }

    --------------

    B. Escape

    ---

    公主速度为Vp,龙速为Vd。

    公主先出发t秒,每次被龙追上后,答案+1,龙返回起点休息f秒。

    当公主和龙同时到达终点时不做处理。

    观察公式

    Vp*t+Vp*T1=Vd*T1

    Vp*t+Vp*T1*2+Vp*f+Vp*T2=Vd*T2

    ............

    龙从起点追上公主用时为 time=(公主当前所在位置)/(Vd-Vp)。

    相遇地点为 meet=time*Vd

    而公主在这个过程中(龙从起点出发到返回起点)移动了 time*2*Vp+f*Vp距离

    ---

    #include <iostream>
    using namespace std;
    const double eps=1e-8;
    int main() {
    	int vp,vd,t,f,c;
        cin>>vp>>vd>>t>>f>>c;
    	if (vp>=vd){
    		cout<<0<<"
    ";
    		return 0;
    	}
    	int ans=0;
    	double pos=t*vp;
    	while (pos+eps<c){
    		double time=pos/(double)(vd-vp);
    		double meet=time*vd;
    		if (meet+eps>=c) break;
                    ans++;
                    pos+=time*2.0*vp+f*vp;
    	}
    	cout<<ans<<endl;
    }


    --------------

    C. Terse princess

    ---

    构造一个长度为n的数列。

    有a个数比之前所有数都大。有b个数比之前所有数的和都大。

    注意到可以有重复数字。

    首先利用二进制的性质构造出 2^1,2^2,2^3....2^b

    再添加2^b+1,2^b+2...2^b+a

    最后补上1

    ---

    #include <iostream>
    #include <vector>
    using namespace std;
    
    vector<int>ans;
    
    int main()
    {
        int n,a,b;
        cin>>n>>a>>b;
        if (b==0&&a>0){
            if (a+b+1==n){
                cout<<-1<<endl;
                return 0;
            }
            ans.push_back(1);
            n--;
        }
        ans.push_back(1);
        for (int i=1;i<=b;i++){
            ans.push_back(1<<i);
        }
        for (int i=1;i<=a;i++){
            ans.push_back((1<<b)+i);
        }
        for (int i=a+b+2;i<=n;i++){
            ans.push_back(1);
        }
        for (int i=0;i<(int)ans.size();i++){
            cout<<ans[i]<<" ";
        }
        cout<<endl;
        return 0;
    }


    --------------

    D. Bag of mice

    ---

    Codeforces 148D - Bag of mice 概率dp

    ---

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    double f[1111][1111][2];//左白,右黑
    bool vis[1111][1111][2];
    
    
    double dfs(int w,int b,int turn)
    {
        if (vis[w][b][turn]) return f[w][b][turn];
        double ret=0;
        if (turn==0)
        {
            if (w>=1) ret+=1.0*w/(w+b);
            if (b>=1) ret+=1.0*b/(w+b)*dfs(w,b-1,1);
        }
        else if (turn==1)
        {
            if (w>=1&&b>=1) ret+=1.0*b/(w+b)*1.0*w/(w+b-1)*dfs(w-1,b-1,0);
            if (b>=2) ret+=1.0*b/(w+b)*1.0*(b-1)/(w+b-1)*dfs(w,b-2,0);
        }
        vis[w][b][turn]=true;
        f[w][b][turn]=ret;
        return ret;
    }
    
    int main()
    {
        int w,b;
        scanf("%d%d",&w,&b);
        memset(f,0,sizeof(f));
        memset(vis,0,sizeof(vis));
        printf("%0.9lf
    ",dfs(w,b,0));
        return 0;
    }


    --------------

  • 相关阅读:
    6. svg学习笔记-路径
    5. svg学习笔记-坐标系变换
    4. svg学习笔记-文档结构元素和样式的使用
    2. svg学习笔记-svg中的坐标系统和viewbox
    3. svg学习笔记-基本形状和画笔属性
    多项式:从门都没入到刚迈过门槛
    排列组合与二项式基础
    单调队列入门
    多项式:从什么都不知道到门都没入
    动态规划之四边形不等式优化
  • 原文地址:https://www.cnblogs.com/cyendra/p/3681583.html
Copyright © 2020-2023  润新知