20170915NOIP练习赛(滑稽)

摘要:
接下来的n行,每行都有两个非负整数ai和bi,表示力值的组合。输出总共n行。每行中的“是”或“否”表示是否可以实现。22418 YESNO共有10个测试点,其中x测试点满足n˂=,ai,bi˂=。众所周知,数字末尾的零越多,它就越高。所以小R想要最大化数字末尾的0数。x) {ans=1;continue;}forx/=2;forx/=5;forforrw;}forrw;printf;}T3:餐厅里的小R最近在玩一个模拟在餐厅工作的游戏。其中,有一个小R非常喜欢的折板小游戏。33524262对于20%的数据,n˂=10;对于50%的数据,n˂=1000;对于100%的数据,n˂=100000,ri,xi˂=。

T1:游戏(game)

【问题描述】

R和小H在玩某个双人联机小游戏,一开始两人所操控的角色各有1点力量值,而在游戏中,每通过一关都会掉落一些力量强化道具。奇怪的是,明明是双人小游戏,每关却都会掉落3个相同的力量强化道具,于是两人决定每关每人先拿一个,剩下一个猜拳决定给谁。一个力量强化道具能使一个角色的力量值变为原来的若干整数倍,同一关卡掉落的道具倍率都相同,而不同的关卡可能不同。小R从攻略上找到了一些会产生特殊效果的力量值组合,他想知道哪些组合是按他们的道具分配方式有可能在通过某关时达成的。

【输入格式】

第一行一个正整数n,表示力量值组合的个数。

接下来n行,每行两个非负整数ai,bi,表示一个力量值组合。

【输出格式】

输出共n行,每行一个”YES”或”NO”表示是否能够达成。

【样例输入】

2

2 4

1 8

【样例输出】

YES

NO

【数据范围】

本题共10个测试点,其中第x个测试点满足n<=ai,bi<=。

solution:

注意输出不要输错了。

#include<cstdio>
#include<cmath>
int main()
{
    freopen("game.in","r",stdin);
    freopen("game.out","w",stdout);
    int n,a,b,c;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d%d",&a,&b);
        if(!a&&!b){puts("YES");continue;}
        if(!a||!b){puts("NO");continue;}
        c=int(pow(1LL*a*b,1./3)+0.5);
        puts(1LL*c*c*c==1LL*a*b&&a%c==0&&b%c==0?"YES":"NO");
    }
    fclose(stdin);fclose(stdout);return 0;
}

T2:数字(number)

【问题描述】

R被某人要求做一个报告,报告中要用到一些数据,可惜小R没有,只好自己瞎编一个,于是他随便滚了下键盘,出来一个奇怪的数字。因为明眼人都看的出这个数字是乱打的,所以小R打算强化一下这个数字的可信度,首先他把这一大长串数字分成了n个,然后他决定选出其中k个,把它们乘起来得到最后的数字。众所周知,一个数字末尾的0越多越高大上,所以小R想要最大化得到的数字末尾0的数量。按照套路,请你解决一下。

【输入格式】

第一行两个正整数nk

接下来n行,每行一个非负整数ai,表示给出的数字。

【输出格式】

输出一个整数,表示答案。

【样例输入】

3 2

20

50

80

【样例输出】

3

【数据范围】

对于20%的数据,n<=15ai<=10

对于30%的数据,n<=25

对于50%的数据,n<=50ai<=100

对于70%的数据,n<=100ai<=

对于100%的数据,n<=200ai<=

 

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MN 200
#define K 25
int f[MN+5][MN*K+5];
inline void rw(int&a,int b){if(b>a)a=b;}
int main()
{
    freopen("number.in","r",stdin);
    freopen("number.out","w",stdout);
    int n,k,s2,s5,l,i,j,ans=0;long long x;
    scanf("%d%d",&n,&k);
    memset(f,200,sizeof(f));f[0][0]=0;
    for(l=1;l<=n;++l)
    {
        scanf("%I64d",&x);if(!x){ans=1;continue;}
        for(s2=0;x%2==0;++s2)x/=2;
        for(s5=0;x%5==0;++s5)x/=5;
        for(i=min(k,l);i--;)for(j=0;j<=i*K;++j)rw(f[i+1][j+s5],f[i][j]+s2);
    }
    for(l=0;l<=k*K;++l)rw(ans,min(l,f[k][l]));
    printf("%d",ans);
}

T3:餐厅(restaurant)

【问题描述】

R最近在玩一款模拟餐厅打工的游戏,其中有一个叠盘子的小游戏小R很喜欢。这个小游戏是这样的:有一个放盘子的机器会在一条直线上运动,机器里装着n个盘子,其中第i个盘子半径为ri,并且如果要放下该盘子,盘子的中心必须放在直线上xi的位置上,小R可以决定放下哪些盘子和放下这些盘子的顺序,盘子可以放在空位上,或者叠在一个上面没有其他盘子的盘子上,但要求被叠的盘子必须包含要叠上去的盘子。小R想要让叠出的盘子尽量高,请你计算出最高的一叠最多能叠几个盘子 。

【输入格式】

第一行一个正整数n,表示盘子数。

接下来n行,每行两个正整数rixi

【输出格式】

输出一个整数,表示答案。

【样例输入】

3

3 5

2 4

2 6 

【样例输出】

2

【数据范围】

对于20%的数据,n<=10

对于50%的数据,n<=1,000

对于100%的数据,n<=100,000ri,xi<=

 

#include<cstdio>
#include<algorithm>
using namespace std;
#define MN 100000
#define N 131072
struct P{int l,r;}p[MN+5];
bool cmp(const P&a,const P&b){return a.r==b.r?a.l>b.l:a.r<b.r;}
int t[N*2+5],c[MN+5],cn;
void renew(int k,int x){for(k+=N;k;k>>=1)t[k]=max(t[k],x);}
int query(int l,int r)
{
    int res=0;
    for(l+=N-1,r+=N+1;l^r^1;l>>=1,r>>=1)
    {
        if(~l&1)res=max(res,t[l+1]);
        if( r&1)res=max(res,t[r-1]);
    }
    return res;
}
int main()
{
    freopen("restaurant.in","r",stdin);
    freopen("restaurant.out","w",stdout);
    int n,i;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d%d",&p[i].r,&p[i].l),
        c[i]=p[i].l-=p[i].r,p[i].r=p[i].l+2*p[i].r;
    sort(c+1,c+n+1);cn=unique(c+1,c+n+1)-c-1;
    sort(p+1,p+n+1,cmp);
    for(i=1;i<=n;++i)
        p[i].l=lower_bound(c+1,c+cn+1,p[i].l)-c,
        renew(p[i].l,query(p[i].l,cn)+1);
    printf("%d",t[1]);
    fclose(stdin);fclose(stdout);return 0;
}

免责声明:文章转载自《20170915NOIP练习赛(滑稽)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇20170925“切题如切菜杯”水题模拟赛 第二弹20170913NOIP模拟赛(数学联赛ヾ(◍°∇°◍)ノ゙)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

thinkPHP框架中执行原生SQL语句的方法

这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友可以参考下 本文实例讲述了thinkPHP框架中执行原生SQL语句的方法。分享给大家供大家参考,具体如下:...

NetBeans 时事通讯(刊号 # 54 May 01, 2009 )

刊号 # 54 - May 01, 2009 项目新闻 新的NetBeans模块和源代码可以得到了! NetBeans插件门户现在存放了新的由Tim Boudreau贡献的模块的集合。签出它们。它们的源代码也能够在NetBeans的代码仓库得到。 赢取$200的Zembly博客大赛吧! Zembly是一个用来构建Facebook,...

python一些组件的安装

python一些组件的安装 - 7少 - ITeye技术网站 python一些组件的安装 博客分类:linux paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器。安装所需软件包:http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycryp...

CentOS 5设置NTP服务器

CentOS 5设置NTP服务器 | 涂虫小记 CentOS 5设置NTP服务器 Submitted by admin on Fri, 05/02/2008 - 11:03Linux 参考文献:Setup NTP Server 其实非常简单,因为在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。这一点与Solaris不同...

Win Server2003安装VS 2005sp1出现的常见两个错误及解决办法

关于 Visual Studio 2005 SP1 安装的 2755 错误 今天是为 Visual Studio 2005 Team Suite 安装SP1,这回可是全新的系统、全新的 VS2005,没有任何添加剂!可是,经过了漫长的等待后还是出现了 2755 的错误。使用 google 搜索之后,我决定将遇到的问题记录下来,供自己参考,也希望能给遇到同...

NetBeans 时事通讯(刊号 # 44 Feb 10, 2009)

刊号 # 44 - Feb 10, 2009 项目新闻 NetBeans 6.5 新的本地化版本插件现已可以获得! NetBeans 本地化队很高兴地发布了 NetBeans 6.5 的一个新的包括日语和简体中文的多语言自动升级中心插件. 本地化了的插件包括: UML, Maven, BlueJ Project Support, J...