zoukankan      html  css  js  c++  java
  • topcoder 642

    A:直接拆开字符串写就好了。

    今天的题目比较容易一些:

    B:题目大意:

     求最少的翻转次数,每次翻转i是对应 y%i==0都会翻转。

    球所有翻转为off状态的最小次数;

    从最小idx开始,依次做就好了,因为它的状态是以后做不到的。

    C:题目大意:

    给出一个带权重的无向图。

    求最大的height使0-n-1中权重小于Height的话花费(边值-height)^2;

    先二分height;然后求出0->n-1中cost 最小的数是否大于给定的值。

    求得时候可以用spfa ,当然有dp写法

    #include<queue>
    #include <string>
    #include <vector>
    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define inf 203456789
    typedef long long ll;
    
    struct node
    {
        int v,w;
    };
    vector<node> mp[55];
    
    ll dp[55];
    int boo[55];
    int n;
    long long b;
    
    
    class TallShoes {
        public:
    
        void bfs(int limit)
        {
              queue<int> q;
              memset(boo,0,sizeof(boo));
              for (int i=0;i<n;i++)
              dp[i]=(ll) inf*inf;
              dp[0]=0;
              q.push(0);
    
              while (!q.empty())
              {
                int u=q.front();
                q.pop();
                boo[u]=0;
                for (int i=0;i<mp[u].size();i++)
                {
                    int v=mp[u][i].v;
                    ll  k=0;
                    if (mp[u][i].w<limit) k=(ll) (limit-mp[u][i].w)*(limit-mp[u][i].w);
    
                    if (dp[v]>dp[u]+k)
                    {
                        dp[v]=dp[u]+k;
                        if (!boo[v])
                        {
                        boo[v]=1;
                        q.push(v);
                        }
                    }
                }
    
            }
        }
    
        int pan(int  x)
        {
           bfs(x);
           if (dp[n-1]<=b) return 1;
           return 0;
        }
    
        int maxHeight(int N, vector <int> X, vector <int> Y, vector <int> height, long long B) {
        n=N;
        b=B;
        for (int i=0;i<X.size();i++){
             node edge;
             edge.v=Y[i];
             edge.w=height[i];
             mp[X[i]].push_back(edge);
             edge.v=X[i];
             mp[Y[i]].push_back(edge);
        }
    
        int  l=0,r=200000000;
    
        int  ans=-1;
        for (int _=1;_<=60;_++)
        {
            int mid=(l+r)/2;
            if (pan(mid)) {
                         l=mid;
                         ans=l;
            }
            else r=mid;
        }
        return ans;
        }
    };
    View Code

    这里初始值的设置要注意

    div 1 A:

    以为是求期望 ,比想象的简单点:

    我们是求>=s的期望值,

    先DP出求概率多少,再ans+=(I-S)*dp[i] I>=S;

    #include<queue>
    #include <string>
    #include <vector>
    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<cstdio>
    
    using namespace std;
    #define N 111111
    typedef long long ll;
    double dp[N*10];
    
    class WaitingForBus {
        public:
        double whenWillBusArrive(vector <int> time, vector <int> prob, int s) {
        dp[0]=1;
        for (int i=0;i<s;i++)
        {
                for (int j=0;j<time.size();j++)
                dp[i+time[j]]+=dp[i]*prob[j]/100;
           }
    
           double ans=0;
    
           for (int i=s;i<2*N;i++) //cout<<dp[i]<<" ";
           ans+=dp[i]*(i-s);
           return ans;
        }
    };
  • 相关阅读:
    Apache JMeter 入门教程
    nacos 配置中心 & 服务发现 使用
    Apache Flink能用来做什么?
    使用etcd watch做服务发现
    服务的注册与发现(Consul、zookeeper、etcd、eureka、Nacos)
    四层、七层负载均衡的区别
    Apollo核心概念之“Namespace”
    Charles的原理、作用
    GIN框架中间件 C.NEXT() C.ABORT() C.SET() C.GET 跨中间件取值 GIN中间件中使用GOROUTINE
    gin内置验证器使用
  • 原文地址:https://www.cnblogs.com/forgot93/p/4170384.html
Copyright © 2011-2022 走看看