普及组模拟题1、4题题解与反思

来源:互联网 发布:淘宝3c证书编号怎么写 编辑:程序博客网 时间:2024/05/16 08:41

      这次考试还是觉得比较恶心的,哎,都是样例给我们深沉的爱啊……在每次考试都有两个水题,这次我只能解一下1、4水题,2、3题就……悲剧了。

第一题:

1.恐怖服装

  (halloween.pas/c/cpp)

【问题描述】

万圣节又到了!农场主—任燮境打算带他的奶牛去参加一个化装晚会,但是,任燮境只做了一套能容下两头总长不超过S(1 <= S <= 1,000,000)的牛的恐怖服装。任燮境养了N(2 <= N <= 20,000)头按1..N顺序编号的奶牛,编号为i的奶牛的长度为Li(1 <= Li <= 1,000,000)。如果两头奶牛的总长度不超过S,那么她们就能穿下这套服装。

任燮境想知道,如果他想选择两头不同的奶牛来穿这套衣服,一共有多少种满足

条件的方案。

 

【输入】

* 第1行: 2个用空格隔开的整数:N 和 S

    * 第2..N+1行: 第i+1为1个整数:Li

 

【输出】

* 第1行: 输出1个整数,表示陈亮宇可选择的所有方案数。注意奶牛顺序不同的两种
     方案是被视为相同的

 

【输入输出样例1】

halloweena.in

halloween.out

4 6

3

5

2

1

 

4

 

【输出说明:】

  4种选择分别为:奶牛1和奶牛3;奶牛1和奶牛4;奶牛2和奶牛4;奶牛3和
奶牛4。  

【时间限制】  

1s

这题乍一看比较可怕,还以为是什么动规啥的,但仔细一看,发现还是很水的:

思路:

1.读入数据。
2.进行排序(从大到小);
3.从第一个数开始,进行for(i=1;i<=n-1;i++)
                                         for(j=i+1;j<=n;j++)
                                           if(a[i]+a[j]<=s)x++;
即从第一个开始,循环判断:若a[i]+a[j]小于等于S,就累加;

4.输出累加数。


代码如下:
#include<bits/stdc++.h>using namespace std;int main(){int n,i,j,x,s=0,m,a[20010]={};cin>>n>>m;for(i=1;i<=n;i++)cin>>a[i];for(i=1;i<n;i++){x=m-a[i];for(j=i+1;j<=n;j++)  if(x>=a[j])s++;}cout<<s;return 0;}
请自行体味。
第四题:
  这题说实话没有任何技巧与算法,刘老师也承认是他为了水一下字符串才凑的……鄙视
    无技巧纯模拟

4.牛语

  (latin.pas/c/cpp)

【问题描述】

奶牛们听说猪发明了一种秘密语言,叫做"猪语",因为猪不想让主人陈亮宇知道他们在商量什么.奶牛们也感觉这样很不错,所以她们想发明他们自己的语言,牛语.。想把一个普通的英语单词转换成牛语很简单.如果一个单词的以一个元音字母('a','e','i','o','u)开头,那么只需在 这个单词的结尾加上"cow".例如,"udder"需要变成"uddercow"; 如果一个单词的第一个字母不是元音字母,那么只需把这个单词的第一个字母放到单词结尾,然后再在结尾加上"ow".例如 "farmer"需要变成"armerfow". 所以"the cowsescape at dawn"就会变成"hetow owscow escapecowatcow awndow." 奶牛们自信地以为这样就可以不让陈亮宇知道他们的"越狱"计划. 可惜奶牛们都不是语言学家,他们觉得这样的翻译太无聊了,所以这个任务就交给你了. 你需要将N (1 ≤ N ≤ 100)个英语单词翻译成牛语,单词长度在3到40之间.

 

【输入】

·        第1行: 一个整数N.

·     第2行到第N+1行: 每行一个单词保证每个单词都是小写字符组成

 

【输出】

·     第1行到第N行,每行一个相应的牛语单词.

 

【输入输出样例1】

latin.in

latin.out

5

udder

farmer

milk

aaa

zzz

uddercow

armerfow

ilkmow

aaacow

zzzow

 

实现:
1.输入;
2.循环判断:是否是元音开头(这里有很多要注意,如:字符从0开始等)
 是:结尾加cow,并输出;
 否:用字符函数将第一个字符截到末尾,并加ow,输出。
好了,献上代码;
#include<bits/stdc++.h>using namespace std;int main(){int n,i,j;string s,s1;cin>>n;for(i=1;i<=n;i++){cin>>s;if((s[0]=='a')||(s[0]=='e')||(s[0]=='i')||(s[0]=='o')||(s[0]=='u'))cout<<(s+"cow")<<endl; else{ s1=s.substr(0,1);s.erase(0,1);s=s+s1;s=s+"ow"; cout<<s<<endl; }}return 0;}
完……
原创粉丝点击