A.

题意:字符串长度n,每次可向左向右跳k个格子。要求不能在障碍物处停留(‘#’),可以在空地处停留(‘ . ’)。给出字符串,从G开始,问能不能到达T。

分析:直接从G处开始向两边搜,如果能到T则输出YES,如果到达边界或到障碍物#停止搜索。、

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
char s[];
int main()
{
int n,k,po;
bool flag=;
scanf("%d%d",&n,&k);
for(int i=;i<n;i++)
{
cin>>s[i];
if(s[i]=='G')
po=i;
}
for(int i=po;i>=;i-=k)
{
if(s[i]=='T')
{
flag=;
break;
}
else if(s[i]=='#')
break;
}
for(int i=po;i<n;i+=k)
{
if(s[i]=='T')
{
flag=;
break;
}
else if(s[i]=='#')
break;
}
if(flag)
puts("YES\n");
else
puts("NO\n");
return ;
}

B.

题意:给出n个数,从中选择n1和n2个数(不重复选择),分别求n1个数和n2个数的平均数,要求这两个平均数和最大,求平均数之和。

分析:首先给n个数排序,根据题目要求肯定选择的是n个数中前n1+n2个最大的数,然后假如n1<n2,则先选择n1个最大的数相加(sum1)求平均数(sum1/n1),剩下的n2个数相加(sum2)求平均数(sum2/n2)。其结果最大。(原理即:用最少的数来平分最大的数,最后得到的平均数才是最大的,而题目中sum1+sum2的和是一定的)

即:求max(sum1/n1+sum2/n2)==max((sum1*n2+sum2*n1)/(n1*n2))==max(sum1*n2+sum2*n1),因为,大的数与大的数相乘,分母才会更大;又假设的n2>n1,所以sum1越大越好,分母的值才会越大,得到的结果才会越大。

得到结论后的代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int num[];
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
if(a>b)swap(a,b);
for(int i=;i<n;i++)
scanf("%d",num+i);
sort(num,num+n,cmp);
double s1=,s2=;
for(int i=;i<a+b;i++)
{
if(i<a)
s1+=num[i];
else
s2+=num[i];
} printf("%.8lf\n",s1/a+s2/b);
return ;
}

得到结论前的推导公式代码:/过程容易TLE...半天没看出来==max((sum1*(n2-n1)+(sum1+sum2)*n1)/(n1*n2))

如果(n2>n1),从n1+n2个数中取n1个最小的数之和,反之取n1个最大的数之和。

#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
int num[];
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,a,b;
long long s=;
scanf("%d%d%d",&n,&a,&b);
for(int i=;i<n;i++)
scanf("%d",num+i);
sort(num,num+n,cmp);
for(int i=;i<a+b;i++)
s+=num[i];
//cout<<s<<endl;
double ans=;
long long sum=;
if(b>a)
{
for(int i=;i<a;i++)
sum+=num[i];
}
else
{
for(int i=b;i<a+b;i++)
sum+=num[i];
}
ans=(1.0*(ll)s*(ll)a+(ll)sum*(ll)(b-a))/((ll)a*(ll)b);//过程爆int
printf("%.8lf\n",ans);
return ;
}

C.

题意:给出参赛人数N,问冠军最多能赢多少场比赛

分析:设f(n)为打n场比赛至少需要的人数,则题目即求:当f(n)==N时,n的最大值。根据分析可知f(n)是斐波那契数

具体分析(待补...

https://www.quora.com/What-is-the-best-way-to-solve-SPOJ-problem-code-TENNIS1

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define ll long long
ll f(ll n)
{
ll a=,b=;
ll cnt=;
while(b<=n)
{
a=a+b;
b=a+b;
cnt++;
}
if(a>n)
return cnt*-;
else
return cnt*-;
}
int main()
{
ll n;
while(cin>>n)
{
ll ans=f(n);
cout<<ans<<endl;
}
return ;
}

D.

题意:年收入是N,那么需要缴税额是N的最大因子。为了偷税可以把N拆成K个数,但是拆成的数不能为1,因为这样会被税务局发现。找出最小税额。

分析:如果N是素数,税费自然为1,那么把N拆成K个素数之和即可。K当然越小越好,那自然要求拆成的素数越大越好,假设哥德巴赫猜想成立,同时拆成的数不能为1,那么事实上K最大也就是3。

哥德巴赫猜想:任何大于2的偶数能够拆成两个素数相加得到。

素数:1

非素数且为偶数:2

非素数且为奇数:2(n-2为素数时)/ 3(n-2不为素数时)

很明显只能通过奇数==奇数+偶数得来,然而偶数中素数只有2,所以当偶数为2时,而n-2为素数,答案为2,否则偶数就至少由两个素数组成。而根据奇数的哥德巴赫猜想:任一大于5的整数都可写成三个质数之和。答案最大为3 。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long long
bool isprime(ll n)
{
bool f=;
for(int i=;i<=sqrt(n);i++)
{
if(n%i==)
f=;
}
return f;
}
int main()
{
ll n;
int ans;
bool flag;
cin>>n;
flag=isprime(n);
if(flag)
ans=;
else if(n%==)
ans=;
else if(n%!=&&isprime(n-))
ans=;
else
ans=;
cout<<ans<<endl;
return ;
}

cf#382div2的更多相关文章

  1. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  2. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  3. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  4. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

  7. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

  8. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  9. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

随机推荐

  1. Cellebrite UFED 5.1 发布,全面支持三星 S6 S6 Edge Note5 HUAWEI series

    世界级取证公司Cellebrite 昨天发布了最新的 UFED 5.1 系统更新,4PC全面支持三星S6,S6EDGE NOTE5 以及HUAWEI,LG系列恢复,锁屏密码XX!下面是部分截图 有需要 ...

  2. 【原创】在pc端集成地图功能(一)

    在pc端做人员调度功能,用到地图.看了一点高德地图API,由于手机端用的是百度地图,现在需要改用百度地图.下面把看的高德地图一点点成果记录下来: 1.在高德地图开放平台(http://lbs.amap ...

  3. 移动APP项目优化

    团队计划:设计一款给用户提供就医帮助的安卓APP. 项目计划:两个月内团队成员共同开发完成此款APP,此款APP提供预约挂号,名医名院咨询,就医导航等功能. 角色职责:负责交互设计.UI界面设计.1. ...

  4. 空格哥的第一篇Blog

    首先十分感谢博客园在这里给我的平台,我在这里学习到了很多东西,响应的,我也想要在这里记录下自己的心路历程!在学习的过程中,希望博客园一直陪伴我,小弟在这里不胜感激!这是小弟的第一篇博客,很多东西都不是 ...

  5. [原]ComFriendlyWaitMtaThreadProc

    c++代码(大体逻辑没问题,细节需要确认) DWORD __stdcall *ComFriendlyWaitMtaThreadProc(LPVOID lpThreadParameter) { CoIn ...

  6. 日志管理log4js的配置

    以前就是在app.js 直接用,今天把它抽出来了. log4js.json { "appenders": [ { "type":"console&qu ...

  7. mac终端命令大全介绍(转)

    OSX 的文件系统 OSX 采用的Unix文件系统,所有文件都挂在跟目录 / 下面,所以不在要有Windows 下的盘符概念. 你在桌面上看到的硬盘都挂在 /Volumes 下. 比如接上个叫做 US ...

  8. Command: sl (Steam Locomotive)

    You might be aware of command 'ls' the list command and use it frequently to view the contents of a ...

  9. ORACLE常用SQL优化hint语句

    在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...

  10. yum安装命令的使用方法

    yum安装常用软件的命令 #yum check-update #yum remove 软件包名 #yum install 软件包名 #yum update 软件包名 yum命令常见使用方法 yum - ...