ICode9

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

2020.10.9--vj个人赛补题

2020-10-13 17:31:59  阅读:266  来源: 互联网

标签:log -- double vj int 补题 为底 log10 ll


B - A Tide of Riverscape

 题意:给出一组字符串,由‘0’,‘1’,‘ . ’组成,‘ . ’可以换成 0或1,判断第 i  个和第 i+p 个字符是否可以不相等,如果可以则输出满足条件的字符串

题解:先把所有的‘ . ’换成0或1,在判断 i 和i+p 以及i 和 i-p 是否一样,一样则把原来的‘ . ’换成相反的1 或0 ,最后判断是否有一组周期为p的点不同

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,p,i,j;
    cin>>n>>p;
    string s;
    cin>>s;
    int k=0;
    for(i=0;i<n;i++)
    {
        if(s[i]=='.')
        {
            s[i]='0';//将所有的点换成‘0’
            if(i+p<n&&s[i+p]=='0'||i-p>=0&&s[i-p]=='0')//判断两点是否一样
                s[i]='1';
        }
        if(i+p<n&&s[i]!=s[i+p])//判断是否有一组周期为p的点不同
        {
            k=1;
        }
    }
    if(k==1)
    {
        for(i=0;i<n;i++)
        {
            cout<<s[i];
        }
        cout<<endl;
    }
    else cout<<"No"<<endl;

}

E - High School: Become Human

题意:计算x^y与y^x的大小,如果两者相减误差非常小则等于输出“=”,如果x^y大于y^x则输出“>",如果小于则输出“<”;

题解:运用对数来比较,都化成以e为底的对数形式,xy  = e ln (x^y) =  e y(ln x) 

也可以使用其他形式的对数函数:

double log (double); 以e为底的对数
double log10 (double);c++中自然对数函数:log(N)  

以10为底:log10(N)

但没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2)

/*double log (double); 以e为底的对数
double log10 (double);c++中自然对数函数:log(N)
 以10为底:log10(N)
但没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2)*/
#include<bits/stdc++.h>
using namespace std;
const int esp=1e-9;//误差范围
int main()
{
    int x,y;
   scanf("%d%d",&x,&y);
   double a,b;//x^y: log(x^y)=y*log(x):以e为底的对数
   a=log(x)*y;
   b=log(y)*x;
   if(fabs(a-b)<=esp)cout<<"="<<endl;
   else if(a-b>0)cout<<">"<<endl;
   else cout<<"<"<<endl;

}

 F - Three displays

题意:

现在是2018年中期,玛丽亚·斯特帕诺夫娜(Maria Stepanovna)住在克拉斯诺卡芒斯克(Krasnokamensk, Zabaikalsky地区的一个小镇)郊外,她想租三个展板来突出一个重要问题。沿道路放置n个显示器,其中第i个显示器只能显示字体大小为si的文本。Maria Stepanovna想要租这样的三种显示器,带有 i<j<k 索引,如果你沿着道路沿着一个特定的方向移动,字体大小就会增加。也就是说,必须遵守 si<sj<sk 的条件。第i个显示器的租金是ci请确定Maria Stepanovna需要支付的最小费用。

第一行包含单个整数n(3≤n≤3000)-显示的数量。

第二行包含n个整数s1,s2,…,sn(1≤si≤109)-显示器上的字体大小,按它们沿道路排列的顺序排列。 

第三行包含n个整数c1,c2,…,cn(1≤ci≤108)-每个显示器的租金。

如果没有三个显示满足条件,则打印-1。否则打印一个整数-三个显示器的最低总租金成本指数 i<j<k,使 si<sj<sk。

题解:选取一个中间值进行比较,用min( , )依次选出第一个和最后一个符合条件的,最后选出总和最小的即可

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N = 3e3 + 100;
const int maxn = 0x3f3f3f3f;
ll dp[N];
ll c[N];
int main() {
    int n;
    cin>>n;
    ll i,a,b,z,j;
    for(i=0;i<n;i++)
    {
        scanf("%lld",&dp[i]);
    }
    for(i=0;i<n;i++)scanf("%lld",&c[i]);
    z=maxn;
    ll k;
    for(i=0;i<n;i++)
    {
        a=b=maxn;
        for(j=0;j<i;j++)
        {
            if(dp[i]>dp[j])a=min(a,c[j]);
        }
        for(k=i+1;k<n;k++)
        {
            if(dp[k]>dp[i])b=min(b,c[k]);
        }
        z=min(z,c[i]+a+b);
    }
    if(a==maxn)cout<<"-1"<<endl;
    else printf("%lld\n",z);
}

 

标签:log,--,double,vj,int,补题,为底,log10,ll
来源: https://www.cnblogs.com/mxw000120/p/13797721.html

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

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

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

ICode9版权所有