<9/10>集训周记

写写这两天的比赛吧,周六的一场,先是出了一道C题,题意是在N个城市间旅行,补充以及消耗椰子的问题,问椰子数是否能够支撑整个旅行。输入的是城市数、每天消耗的椰子数、每个城市能够补充的椰子树以及每两个城市间所需的天数。比较简单,代码如下:
#include<iostream>
#include<cstring>
#include<set>
using namespace std;
int main()
{
   long long int t,n,a[1100],i,j,m,k,ans,f,ff;
   cin>>t;
   while(t--)
   {
      memset(a,0,sizeof(a));
      ff=0;
      cin>>n>>m;
      for(i=0;i<n;i++)
         cin>>a[i];
      ans=a[0];
      for(i=1;i<n;i++)
      {
        cin>>f;
        if(ans>=f*m)//每两个城市间所需的椰子数
        {
            ans-=f*m;
            ans+=a[i];
        }
        else
        {
            ff=1;
        }
      }
        if(ff==1)
        cout<<"No"<<endl;
        else
        cout<<"Yes"<<endl;
    }
     return 0;
}
然后,然后,然后,一整个下午都在死磕那一道找规律的题…E题,题意是ti为1到I的合数,输入n,求大于等于n的第一个是完全平方数的ti,输出i。
由输出i而非输出ti,以及ti的范围很大,我们可以猜到这个题应该和ti没有关系,我们只需要找到每个完全平方数出现的位置,然后输出位置即可。
假设第i个完全平方数出现的位置是a[i],根据已给的测试数据,a[1]=1,a[2]=8,a[3]=49,a[4]=288,打表得到a[5]=1681,a[6]=9800,所以当奇数项时,a[i]是完全平方数,当偶数项时,a[i]是2乘一个完全平方数,然后找到了佩尔数列,上图…
然后这道题就解决了…后来很多队是直接打表打出范围内的数然后直接放数组用的…
然后今天的比赛…坐等题解…最后一个小时在怼1012题,题意是:n个数对,可以任意次数的将第一对放至最后一对的后面,然后在第一行数之和不小于第二行数之和时,求最大的总值。
用了最古老的办法写出来,样例能走过,直觉上一定会TLE…所以TLE的代码如下…
#include<iostream>
#include<algorithm>
using namespace std;
int n,maxn,kk;
int a[1000005],b[1000005];
int main()
{
    while(~scanf("%d",&n))
    {
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        a[n+i]=a[i];
    }
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&b[i]);
        b[n+i]=b[i];
    }
    int tr,m;
    maxn=kk=-1;
    for(tr=0;tr<n;tr++)
    {
        int c,d;
        c=d=0;
        int i;
        for(i=tr+1;i<=n+tr;i++)
        {
          c+=a[i];
          d+=b[i];
          if(c<d)
          {
              m=c;
              break;
          }
          if(i==n+tr)
            m=c;
        }
        if(maxn<m){kk=tr;maxn=m;}
    }
    printf("%d\n",kk);
    }
    return 0;
}
所以…等题解出来吧…
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值