<9/10>集训周记
2017-09-10 20:13
176 查看
写写这两天的比赛吧,周六的一场,先是出了一道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;
}
所以…等题解出来吧…
#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;
}
所以…等题解出来吧…
相关文章推荐
- <10/1>集训周记
- <9/14>集训周记
- Router Configuration<10>
- <10> go test单元测试
- SQL 必知必会·笔记<10>联结表
- <9/24>集训周记
- <10>——Regular Expression Matching
- Android 内存抖动 性能分析 <10>
- <7/31>集训日记
- Dojo 事件<10>
- 关于Html5中<input type="number" name="points" min="1" max="10" />只能输入整数的问题
- Let us learn C in Code <10> flowchart
- 数据库<10>索引
- 【笔记】2013-10<—>2013-11
- Android知识点<10>Android View - RomoteViews , SurfaceView,RecycleView,ListView
- <8/4>集训日记
- <8/24>集训日记
- <2014 05 10> Android平台开发攻略
- <福州集训之旅Day5> | 数论 |
- <8/2>集训日记