最近无聊,在tyvj上做了几道模拟的…

太无聊了,就上tyvj做了几道模拟题,虽然简单,但还是把代码保存在这里


犁田机器人

背景 Background

USACO OCT 09 2ND

描述 Description

Farmer John為了让自己从无穷无尽的犁田工作中解放出来,於是买了个新机器人帮助他犁田。这个机器人可以完成犁田的任务,可惜有一个小小的缺点:这个犁田机器人一次只能犁一个边的长度是整数的长方形的田地。

因為FJ的田地有树和其他障碍物,所以FJ设定机器人去犁很多不同的长方形。这些长方形允许重叠。他给机器人下了P个指令,每个指令包含一个要犁长方形的地。这片田地由长方形的左下角和右上角坐标决定。他很好奇最后到底有多少个方格的地被犁过了。

一般来说,田地被分割為很多小方格。这些方格的边和x轴或y轴平行。田地的宽度為X个方格,高度為Y个方格 (1 <= <= 240; <= <= 240). FJ执行了(1 <= <= 200)个指令,每个指令包含4个整数:Xll, Yll, Xur, Yur (1 <= Xll <=Xur; Xll <= Xur <=X; <= Yll <= Yur; Yll <= Yur <= Y), 分别是要犁的长方形的左下角坐标和右上角坐标。机器人会犁所有的横坐标在Xll..Xur并且纵坐标Yll..Yur范围内的所有方格的地。可能这个长方形会比你想像的多一行一列(就是说从第Xll列到第Xur列一共有Xur Xll 1列而不是Xur Xll列)。

考虑一个6方格宽4方格高的田地。FJ进行了2个操作(如下),田地就被成"*""#"了。虽然一般被犁过的地看起来都是一样的。但是标成"#"可以更清晰地看出最近一次被犁的长方形。

     ......             **....             #####.
    ......  (1,1)(2,4) **....  (1,3)(5,4) #####.
    ......             **....             **....
    ......             **....             **....

一共14个方格的地被犁过了。

输入格式 InputFormat

第一行三个由空格隔开的整数: X, Y, I

第二行到第I+1行:第i+1行有四个整数Xll, Yll, Xur, Yur,表示第i个指令。

输出格式 OutputFormat

第一行一个单独的整数表示被犁过的方格数。

样例输入 SampleInput [复制数据]

 

2

4

4

样例输出 SampleOutput [复制数据]

14

 

#include 

int p[1200][1200];

int main()

{

    int i,j,t,X,Y,I,x1,x2,y1,y2;

    scanf("%d%d%d",&X,&Y,&I);

    for(i=1;i<=I;i++)

    {

        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);

        for(j=x1;j<=x2;j++)

        for(t=y1;t<=y2;t++)

        {

            p[j][t]=1;

        }

    }

    int sum=0;

    for(i=1;i<=X;i++)

    for(j=1;j<=Y;j++)

    if(p[i][j]==1)

    sum++;

    printf("%d\n",sum);

}






 

不高兴的津津

描述 Description

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入格式 InputFormat

输入包括七行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出格式 OutputFormat

输出包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

样例输入 SampleInput [复制数据]

3

2

2

3

4

4

6

样例输出 SampleOutput [复制数据]

3

#include 

int main()

{

    int i,a,b,t=0,k;

    for(i=1;i<=7;i++)

    {

        scanf("%d%d",&a,&b);

        if(a+b>8&&t==0)

        {

            t++;

            k=i;

 

        }

    }

    printf("%d\n",k);

}








 

数字统计

背景 Background

NOIP2010普及组复赛第一题

描述 Description

请统计某个给定范围[L, R]的所有整数中,数字出现的次数。
比如给定范围[2, 22],数字在数中出现了次,在数12 中出现次,在数20 中出
次,在数21 中出现次,在数22 中出现次,所以数字在该范围内一共出现了6
次。

输入格式 InputFormat

输入共行,为两个正整数R,之间用一个空格隔开。

输出格式 OutputFormat

输出共行,表示数字出现的次数。

【输入样例1】

22

【输入样例2】

100

输出样例1:

6

输出样例2:

20

数据范围和注释 Hint

【数据范围】
≤ ≤ R≤ 10000

#include 

int sum=0;

void is(int dat)

{

    int qian,bai,shi,ge;

    qian=dat/1000;

    bai=(dat-qian*1000)/100;

    shi=(dat-qian*1000-bai*100)/10;

    ge=dat;

    if(qian==2)

    sum++;

    if(bai==2)

    sum++;

    if(shi==2)

    sum++;

    if(ge==2)

    sum++;

}

int main()

{

    int i,L,R;

    scanf("%d%d",&L,&R);

    for(i=L;i<=R;i++)

    is(i);

    printf("%d\n",sum);

}






 

笨小猴

背景 Background

NOIP2008复赛提高组第一题

 

描述 Description

笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

输入格式 InputFormat

输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100

输出格式 OutputFormat

输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0

输入样例1

error

 

输入样例2

olympic

输出样例1

Lucky Word

2

 

输出样例2

No Answer

0

#include

#include

#include

int prime(int x)

{

    int t,b;

    b=sqrt(x);

    if(x==1)

        return 0;

    for(t=2;t<=b;t++)

        if(x%t==0)

            return 0;

    return 1;

}

int main()

{

    char p[1200];

    int i,j,n,f[27]={0},q[27]={0},maxn=0,minn=0x7fffffff;

    gets(p);

    n=strlen(p);

    for(i=0;i<=n-1;i++)

        f[p[i]-'a'+1]++; //出现次数

    for(i=1;i<=26;i++)

    {

        if(maxn

        maxn=f[i];

        if(minn>f[i]&&f[i]!=0)

        minn=f[i];

    }

    if(prime(maxn-minn)==1&&maxn!=minn)

    printf("Lucky Word\n%d\n",maxn-minn);

    else printf("No Answer\n0\n");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值