Codeforces Round #271 (Div. 2)_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:56:43
原创
1375人浏览过

a题:因为数据量太小,所以直接暴力替换就好。。。。

div+css3阶梯分页样式
div+css3阶梯分页样式

div+css3阶梯分页样式

div+css3阶梯分页样式 84
查看详情 div+css3阶梯分页样式

立即学习前端免费学习笔记(深入)”;

#include <iostream>#include <algorithm>#include <string>#include <map>#include <vector>#include <string.h>using namespace std;typedef long long ll;int arr[100010];int cnt[100010];int col[100010];int n,a,b;char c;string s = "qwertyuiopasdfghjkl;zxcvbnm,./";int main(){    while(cin>>c)    {        string input;        cin>>input;        if(c=='L')        {            string output="";            for(int i=0;i<input.length();i++)            {                for(int j=0;j<s.length();j++)                {                    if(input[i]==s[j])                    {                        output+=s[j+1];                        break;                    }                }            }            cout<<output<<endl;        }        else        {            string output="";            for(int i=0;i<input.length();i++)            {                for(int j=0;j<s.length();j++)                {                    if(input[i]==s[j])                    {                        output+=s[j-1];                        break;                    }                }            }            cout<<output<<endl;        }    }    return 0;}
登录后复制

B题:数据只有100000,故可以直接用一个map记录每个点所在的区间标识。

立即学习前端免费学习笔记(深入)”;

立即学习前端免费学习笔记(深入)”;

#include <iostream>#include <algorithm>#include <string>#include <map>#include <vector>#include <string.h>using namespace std;typedef long long ll;int arr[100010];int cnt[100010];int col[100010];int n,a,b;char c;string s = "qwertyuiopasdfghjkl;zxcvbnm,./";int main(){    while(cin>>n)    {        int all = 0;        map<int,int> m;        for(int i=1;i<=n;i++)        {            cin>>arr[i];            for(int j=all+1;j<=all+arr[i];j++)                m[j]=i;            all+=arr[i];                    }        int k;        cin>>k;        for(int i=0;i<k;i++)        {            int q;            cin>>q;            cout<<m[q]<<endl;        }    }    return 0;}
登录后复制

C题:直接暴力枚举旋转的可能性,因为每个点最多转3次,最后判断是不是正方形就行。

立即学习前端免费学习笔记(深入)”;

立即学习前端免费学习笔记(深入)”;

#include <iostream>  #include <cstdio>  #include <algorithm>  #include <cstring>  const int inf=9999999;  using namespace std;  struct node  {      int x;      int y;  }p[5][5],home[5];  long long d[8];  long long dis(node a,node b)//距离的平方  {      return (long long)(a.x-b.x)*(a.x-b.x)+(long long)(a.y-b.y)*(a.y-b.y);  }  void solve()  {      int ans=inf;      for(int i=0;i<4;i++)      {          for(int j=0;j<4;j++)          {              for(int k=0;k<4;k++)              {                  for(int l=0;l<4;l++)                  {                      d[0]=dis(p[i][0],p[j][1]);//四边距离的平方                      d[1]=dis(p[j][1],p[k][2]);                      d[2]=dis(p[k][2],p[l][3]);                      d[3]=dis(p[l][3],p[i][0]);                      d[4]=dis(p[i][0],p[k][2]);//对角线的平方                      d[5]=dis(p[j][1],p[l][3]);                        sort(d,d+6);                      if(d[0]==0)                      continue;                      else if(d[0]==d[1]&&d[1]==d[2]&&d[2]==d[3]&&2*d[3]==d[4]&&d[4]==d[5])//判断是否为正方形                      {                          ans=min(ans,i+j+k+l);                      }                  }              }          }      }      if(ans!=inf)      printf("%d\n",ans);      else      printf("-1\n");  }  int main()  {      int t;      scanf("%d",&t);      while(t--)      {          for(int i=0;i<4;i++)          {              scanf("%d%d",&p[0][i].x,&p[0][i].y);              scanf("%d%d",&home[i].x,&home[i].y);              int x=p[0][i].x-home[i].x;              int y=p[0][i].y-home[i].y;                p[1][i].x=home[i].x-y;//逆时针旋转90度              p[1][i].y=home[i].y+x;                p[2][i].x=home[i].x-x;              p[2][i].y=home[i].y-y;                p[3][i].x=home[i].x+y;              p[3][i].y=home[i].y-x;          }          solve();      }      return 0;  }  
登录后复制

D题:用dp[i][0]表示第i位不是W,dp[i][1]表示第i位是W,这样转移方程就很容易出来了,具体见代码,记得dp[0]时的初始化

立即学习前端免费学习笔记(深入)”;

立即学习前端免费学习笔记(深入)”;

#include <iostream>#include <algorithm>#include <string>#include <map>#include <vector>#include <string.h>using namespace std;typedef long long ll;ll dp[100010][2];ll sum[100010];int cnt[100010];int col[100010];int n,a,b,t,k;const int mod = 1e9+7;char c;string s = "qwertyuiopasdfghjkl;zxcvbnm,./";int main(){    while(cin>>t>>k)    {        memset(dp,0,sizeof(dp));        dp[0][0]=1;        dp[0][1]=0;        for(int i=1;i<=100000;i++)        {            dp[i][0] = (dp[i][0]+dp[i-1][0]+dp[i-1][1])%mod;            if(i-k>=0)            {                dp[i][1] = (dp[i][1]+dp[i-k][0]+dp[i-k][1])%mod;            }        }        sum[0] = 0;        for(int i=1;i<=100000;i++)            sum[i] = (sum[i-1]+dp[i][0]+dp[i][1])%mod;        while(t--)        {            int a,b;            cin>>a>>b;            ll ans = sum[b]-sum[a-1];            if(ans<0)                ans+=mod;            cout<<ans<<endl;        }    }    return 0;}
登录后复制


立即学习前端免费学习笔记(深入)”;

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号