1.9UPC寒假个人训练第一场

  • 问题 A: 数列
  • 问题 B: 烦恼
  • 问题 C: 停车计费
  • 问题 D: 小区评比
  • 问题 E: 贪婪的国王
  • 问题 F: 等边三角形
  • 问题 G: 甜蜜的烦恼
  • 问题 H: 冰壶比赛
  • 问题 I: 分数统计I
  • 问题 J: 平方数
  • 问题 K: 分数统计II

问题 A: 数列

题目描述
联欢会上,主持人先在黑板上写了四个数字,分别是:2,0,1,9,然后说:“这串数字从第五个数起,每一个数都是它前四数字之和的个位数字”。请你打印输出这个数列的前N项,并计算前N项的和。
输入
单个整数:表示项数N(1 ≤ N ≤ 100000)
输出
第一行:N个数字,表示所求数列的前N项。
第二行:单个数字,表示前N项数字的和
样例输入
10
样例输出
2 0 1 9 2 2 4 7 5 8
40

# include<bits/stdc++.h>
using namespace std;
int n,a[100005],ans,s;
int main(){cin>>n;a[1]=2;a[2]=0;a[3]=1;a[4]=9;if(n==1)  {cout<<2<<endl;cout<<2<<endl;}if(n==2) {cout<<2<<" "<<0<<endl;cout<<2<<endl;}if(n==3) {cout<<2<<" "<<0<<" "<<1<<endl;cout<<3<<endl; }if(n==4)  {cout<<2<<" "<<0<<" "<<1<<" "<<9<<endl;cout<<12<<endl;}if(n>=5){cout<<2<<" "<<0<<" "<<1<<" "<<9;ans=12;for(int i=5;i<=n;i++){a[i]=(a[i-1]+a[i-2]+a[i-3]+a[i-4])%10;ans+=a[i];cout<<" "<<a[i];}cout<<endl;cout<<ans<<endl;}  }

问题 B: 烦恼

题目描述
老师每天都要批改作文,他想知道这篇作文有多少字符,以及多少单词,请你帮助他。
输入
单独一行字符串:表示作文的内容,保证只出现大小写英文字母、数字或空格。
输出
第一行:单个整数,表示输入字符串中的可见字符的个数。英文字母和数字属于可见字符,空格和换行属于不可见字符。
第二行:单个整数,表示输入字符串中的单词个数。单词是指连续的,由可见字符组成的字符串。
样例输入
【样例1】
One apple a day
【样例2】
7 days a week
样例输出
【样例1】
12
4
【样例2】
10
4

# include<bits/stdc++.h>
using namespace std;
int ans,res;
string s;
int main(){getline(cin,s);for(int i=0;i<s.size();i++){if(s[i]!=' ') ans++;else         res++;}cout<<ans<<endl<<res+1<<endl;return 0;
}

问题 C: 停车计费

题目描述
某小区对外来车辆按照如下规则计费:
·半小时内(含半小时),免费;
·超过半小时到六小时(含六小时),每小时 2 元,不足一小时以一小时计算;
·超过六小时,每小时 5 元,不足一小时以一小时计算。
给定车辆的进入和离开时间(保证没有跨过一天的零点),请计算应收金额。
输入
第一行:一个字符串,表示车辆进入小区的时间。
第二行:一个字符串,表示车辆离开小区的时间。
输入采用“HH:MM:SS”的形式表示时间,其中“HH”表示小时,范围为 00 到 23,“MM”
表示分钟,范围为 00 到 59,“SS”描述秒数,范围为 00 到 59。时、分、秒均为两位数。
输出
第一行:表示车辆的停留时间,格式与输入保持相同。
第二行:单个整数,表示停车费用。
样例输入
【样例1】
10:00:00
14:00:00
【样例2】
12:34:56
20:36:22
【样例3】
23:29:59
23:59:59
样例输出
【样例1】
04:00:00
8
【样例2】
08:01:26
45
【样例3】
00:30:00
0

# include<bits/stdc++.h>
using namespace std;
int ans,res,hh1,hh2,mm1,mm2,ss1,ss2,h,m,s;
int main(){scanf("%d:%d:%d",&hh1,&mm1,&ss1);scanf("%d:%d:%d",&hh2,&mm2,&ss2);s=ss2-ss1;if(s<0)   s+=60,mm2--;m=mm2-mm1;if(m<0)   m+=60,hh2--;h=hh2-hh1;printf("%02d:%02d:%02d\n",h,m,s);ans=h*3600+m*60+s;if(ans<=1800)   cout<<0<<endl;else if(ans<=21600)  {if(ans%3600==0)  cout<<ans/3600*2<<endl;else            cout<<ans/3600*2+2<<endl;}else       {if(ans%3600==0)  cout<<ans/3600*5<<endl;else            cout<<ans/3600*5+5<<endl;}return 0;
}

问题 D: 小区评比

题目描述
某城市有 16 个小区,这些小区分别用大写的英文字母 A 到 P 编号。为创建文明城市,工作人员对一些小区进行了检查,并且评出了分数,评分结果可以用以下字符串表示:
分数1小区编号1分数2小区编号2分数3小区编号3⋯ ⋯ 分数n小区编号n#
这串字符串的格式说明如下:
·每个分数都是 1 到 100 之间的整数,也包括 1 和 100;
·每个小区编号都是大写英文字母 A 到 P 中的一个,保证没有重复的编号出现;
·最后一个结束字符为#,表示记录终止。
请你读入数据后统计并分析,输出分数最高和最低的小区编号。
输入
第一行:一个字符串,表示各个小区的分数分布。
输出
第一个字母:表示得分最高的小区编号,如果有多个小区并列最高,只输出字母顺序中最靠前的编号。
第二个字母:表示得分最低的小区编号,如果有多个小区并列最低,只输出字母顺序中最靠前的编号。
样例输入
85K98B87D80F92H78C96A#
样例输出
BC

# include<bits/stdc++.h>
using namespace std;
struct Node{int score;char id;
}a[100];
string s;
bool cmp(Node a,Node b){if(a.score == b.score )  return a.id <b.id ;else                    return a.score >b.score ;
}
int i,j;
int main(){cin>>s;while(s[i]!='#'){if(isdigit(s[i])) {while(isdigit(s[i]))a[j].score =a[j].score *10+s[i++]-'0';a[j++].id =s[i];}i++;}sort(a,a+j,cmp);for(i=j-1;i>=0;i--)if(a[i].score !=a[i-1].score ) break;cout<<a[0].id <<a[i].id <<endl;return 0;
}

问题 E: 贪婪的国王

题目描述
有个国王喜欢不断积累金币,有一天,他向国民宣布了新的征收办法:
·第一天,国民要向国王缴纳一枚金币;
·第二天和第三天,国民每天要向国王缴纳两枚金币;
·在之后的三天,也就是第四、第五、第六天,国民每天要向国王缴纳三枚金币;
·在之后连续四天,也就是第七、八、九、十天,每天缴纳四枚金币;
总结来说,当国民连续n天每天缴纳了n枚金币之后,国王要求在接下来的n + 1天里每天缴纳n + 1枚金币。
国王有个目标数量T,请问需要征收多少天金币,才能让国王的金币数量大于或等于T?
输入
单个整数:表示征收金币的目标数量T(1 ≤ T ≤ 100000000)。
输出
单个整数:表示达到目标数量的天数。
样例输入
【样例1】
14
【样例2】
29822
样例输出
【样例1】
6
【样例2】
1001

# include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,ans,res;
int main(){cin>>n;int i=1,j=1;while(1){ans+=j;res++;if(ans>=n) break;if(i==j)  i=1,j++;else     i++;}cout<<res<<endl;
}

问题 F: 等边三角形

题目描述
将一个等边三角形的三条边分别n等分,沿着三条边的方向做这些等分点的平行线,就得到了一个三角网格。例如n = 6时的网格如图所示:

这个网络中有很多三角形。请求出有多少不同的三角形,并且求出这些不同三角形的面积之和。
两个三角形如果大小不同,或方向不同,或位置不同,则视作两个不同的三角形。在求面积的时候,视网格中最小的三角形面积为1。
输入
单个整数:表示n(2 ≤ n ≤ 500)。
输出
第一行,单个整数:表示不同三角形的数量。
第二行,单个整数:表示不同三角形的面积总和。
样例输入
4
样例输出
27
87

#include<iostream>
#include<algorithm>using namespace std;
typedef long long ll;ll a[505],n,ans,res;ll quick(ll a,ll b){ll p=1;while(b){if(b&1)  p=p*a;a=a*a;b=b>>1;}return p;
}
int main(){cin>>n;for(int i=1;i<=n;i++)a[i]=quick(i,2);for(int i=1;i<=n;i++){   for(int j=1;j<=n-i+1;j++)ans+=j*a[i],res+=j;for(int k=1;k<=n-2*i+1;k++)ans+=k*a[i],res+=k;    }cout<<res<<endl<<ans<<endl;  return 0;
}

问题 G: 甜蜜的烦恼

题目描述
最近珍珍学会了使用电脑,她发现可以利用电脑解决很多事情,并且效率会快许多。比如,在一份名单中找某个人的姓名,在以前,她得依次逐个查找,速度慢又很容易看错。现在,她使用菜单命令:“编辑”-“查找”(或按Ctrl+F键),在弹出的查找对话框中,输入要查找的姓名,电脑就会找到要找的姓名或告诉你不存在你要找的姓名了。真是又快又准,太爽了!

今天珍珍在查找时,输入“张明”,电脑告诉她不存在,但她不经意间发现“张 明”是有的!原来,提供原始名单的人,为了格式漂亮在中间输入了一个空格,因此电脑找不到了。她想这容易解决,继续查找“李达”,没有?查找“李 达”(中间一个空格),还没有?原来某些姓名中间的空格数是有多个的!

珍珍想删除所有姓名中间的空格,但由于名单很多,一个一个删除太慢了,所以她找到了会编程解决问题的你,请你写一个程序,删除所有名单中间的空格。
输入
输入的第一行只有一个正整数n,表示名单中共有n个人的姓名。
第二行至第n+1行共n行,每行是一个人的姓名(由大小写英文字母以及字母之间的空格组成)。
输出
输出有n+1行,第一行只有一个正整数,表示总共删除的空格数。
第二行至第n+1行共n行,每行表示一个删除空格后的姓名(按照输入姓名的次序)。
样例输入
3
ZhangMing
Li Da
Wu Ya Fei
样例输出
5
ZhangMing
LiDa
WuYaFei

# include<bits/stdc++.h>
using namespace std;
int n,ans,res;
string s[10005];
int main(){cin>>n;getchar();for(int i=0;i<n;i++){getline(cin,s[i]);for(int j=0;j<s[i].size();j++)if(s[i][j]==' ') ans++;}cout<<ans<<endl;for(int i=0;i<n;i++){for(int j=0;j<s[i].size();j++)if(s[i][j]==' ') continue;else         cout<<s[i][j];cout<<endl;}
}

问题 H: 冰壶比赛

题目描述
在3月29日举行的女子冰壶世锦赛决赛中,王冰玉、柳荫、岳清爽和周妍组成的中国女子冰壶队以8比6击败了冬奥会和世锦赛双冠王瑞典队,夺得了中国冰壶历史上第一枚世锦赛金牌,创造了历史。美丽、实力兼具的中国冰壶姑娘们也赢得了超高的赞誉。
在冰壶比赛中,给出一个目标点P,以及一个规定的正整数r。每一局由甲乙两队轮流投冰壶各8次后,该局比赛结束。此时,哪一方的冰壶最终离目标点P更近,该方得分,另一方不得分。得分方每颗离目标点P距离小于或等于r、位置较另一队所有冰壶都更接近目标点P的冰壶都可以得1分。
比赛最多进行10局。双方之间的某局比赛结束后,落后一方可以弃权。此时,比赛不再进行下去。
已知每一局结束时,双方的每个冰壶离目标点P的距离,以及正整数r,请你写一个程序判断两队之间每一局比赛的得分,以及总得分。
输入
输入的第一行只有一个正整数r。
以下有若干行(不超过20行),除了最后一行外,每一行有8个正整数(互相之间以一个空格分隔)。
第2行的第j个数表示第1局比赛结束时,甲方的第j个冰壶距离目标点P的距离;
第3行的第j个数表示第1局比赛结束时,乙方的第j个冰壶距离目标点P的距离;
第4行的第j个数表示第2局比赛结束时,甲方的第j个冰壶距离目标点P的距离;
第5行的第j个数表示第2局比赛结束时,乙方的第j个冰壶距离目标点P的距离;
… …
第2k行的第j个数表示第k局比赛结束时,甲方的第j个冰壶距离目标点P的距离;
第2k+1行的第j个数表示第k局比赛结束时,乙方的第j个冰壶距离目标点P的距离;
如果有一方中途弃权,则最后一行(偶数行)只有一个整数-1,表示此时发生弃权情况。
输出
输出有若干行,每行有二个整数,中间以一个冒号分隔,表示每一局比赛甲乙双方的比分(甲得分在前)。
最后一行有二个整数,中间以一个冒号分隔,表示甲乙双方比赛的最终得分(甲得分在前)。
样例输入
8
5 20 18 19 3 15 13 3
20 2 17 12 5 18 10 11
20 3 4 1 2 11 9 2
1 15 19 9 8 14 11 10
15 2 10 1 19 14 3 18
15 17 21 19 24 32 19 26
-1
样例输出
0:1
0:0
3:0
3:1

# include<iostream>
# include<algorithm> using namespace std;
typedef long long ll;
ll a[11],b[11],n,x,l=-1,res1,res2,ans1,ans2;int main(){cin>>n;while(cin>>x){if(x==-1) break;l++; if(l<8) a[l]=x;else   b[l-8]=x; if(l==15){ l=-1; ans1=ans2=0; sort(a,a+8);sort(b,b+8);while(a[ans1]<b[0]&&a[ans1]<=n) ans1++;while(b[ans2]<a[0]&&b[ans2]<=n) ans2++;cout<<ans1<<":"<<ans2<<endl;res1+=ans1; res2+=ans2; }
}cout<<res1<<":"<<res2<<endl;return 0; }
/*****************

问题 I: 分数统计I

题目描述
学校为了控制作业量,实施“轻负担,高质量”的有效教学,对所有在校学生的作业量情况进行了调查。每个学生填写做作业所需要的时间。最后统计出所有学生做作业时间的平均值。
为了避免个别学生不客观填写的影响,规定学生的填写的数字应该为1至100间的正整数,如果某个学生填写了不在此范围内的整数,统计平均值时应该忽略这个学生。现在要求完成:
(1)统计出所有学生做作业时间的平均值;
(2)除去做作业时间前10%的学生和后10%的学生后(10%学生数按四舍五入计),统计做作业时间的平均值。
请你写个程序,完成以上任务。(提示:Pascal语言中, Round(x)为四舍五入函数,在C语言中可使用int(x+0.5))
输入
输入的第1行有1个正整数n。表示有n个人。
第2行至第n+1行共n行,每行只有1个整数,表示每个学生填写的做作业时间。
输出
输出有2行,每行只有1个数(保留2位小数)
第1行只有一个整数,表示所有合法填写学生做作业的平均时间;
第2行只有一个整数,表示除去10%最多时间和10%最少时间的学生后,所有合法填写学生做作业的平均时间;
样例输入
7
10
60
80
70
90
110
100
样例输出
68.33
75.00

# include<iostream>
# include<algorithm>using namespace std;int n,a[1005],x,t,m;
double sum;int main(){cin>>n;for(int i=0;i<n;i++){cin>>x;if(x>=1&&x<=100)  a[t++]=x,sum+=x;}printf("%.2lf\n",sum/t);sum=0;sort(a,a+t);m=(int)(n*0.1+0.5);for(int i=m;i<t-m;i++)sum+=a[i];printf("%.2lf",sum/(t-2*m));return 0;
}

问题 J: 平方数

题目描述
珍珍学习乘法时,发现4=22,9=33,…,而2不可能分解为二个相同整数的乘积,但可以分解为11+11。她想知道对任意的正整数n,把它分解为几个整数与自身相乘之和,有多少种方案呢?
输入
输入只有一行,该行只有一个正整数n。
输出
输出只有一行,该行只有一个正整数,表示总方案数。
样例输入
13
样例输出
6

#include<iostream>
#include<cmath>using namespace std;int n;
int a[805][805];int dfs(int x,int ans)
{if(ans==n)            return 1;if(ans>n||x>sqrt(n))  return 0;if(a[x][ans])       return a[x][ans];for(int i=x;i<=sqrt(n);i++)a[x][ans] += dfs(i,ans+i*i);return a[x][ans];
}
int main()
{cin>>n;cout<<dfs(1,0);return 0;
}

问题 K: 分数统计II

题目描述
学校为了控制作业量,实施“轻负担,高质量”的有效教学,对所有在校学生的作业量情况进行了调查。每个学生对每门课的日均作业时间进行评估。最后统计出每门课的日均作业时间的平均值,作为学校评价习题教学效果的一个重要参考。
为了避免个别学生不客观评估的影响,学生的评估值必须为1至100间的正整数,如果某个评估值为不在此范围内的整数,则忽略。现在要求完成:
(1)统计出每门课的日均作业时间的平均值;
(2)除去每门课中作业时间最多的和最少的10%的学生(四舍五入)后,统计平均值。
请你写个程序,完成以上任务。(提示:Pascal语言中, Round(x)为四舍五入函数,在C语言中可使用int(x+0.5))
输入
输入的第1行有2个正整数n,m(以一个空格分隔)。表示有n个人,m门课。
第2行至第n+1行,每行有m个正整数,表示学生对每门课日均作业时间的评估,每个整数之间以一个空格分隔。其中:第k+1行的第j个数表示第k个学生填写的第j门课的日均作业时间;
输出
输出有2行,每行有m个数(保留2位小数,每行的各个数之间以一个空格相互分隔),表示每门课日均作业时间的平均值。其中:
第1行的第j个数表示所有合法填写学生的第j门课的日均作业时间的平均值;
第2行的第j个数表示除去10%最多合法时间和10%最少合法时间的学生后,所有合法填写学生第j门课的日均作业时间的平均值;
样例输入
7 2
10 11
60 69
70 73
80 87
90 91
100 100
110 100
样例输出
68.33 75.86
75.00 84.00

# include<iostream>
# include<algorithm>
# include<vector>
# include<cstdio>
using namespace std;int n,m,a[50005][10],b[10][50005],k,len;
double sum1,sum2,c[10];int main(){scanf("%d%d",&n,&m);for(int i=0;i<n;i++)for(int j=0;j<m;j++)scanf("%d",&a[i][j]);for(int j=0;j<m;j++)for(int i=0;i<n;i++)b[j][i]=a[i][j];for(int i=0;i<m;i++){vector<int >q;sum1=sum2=0;for(int j=0;j<n;j++)if(b[i][j]>=1&&b[i][j]<=100)  q.push_back(b[i][j]),sum1+=b[i][j];len=q.size();printf("%.2lf ",sum1/len);k=(int)(0.1*n+0.5);sort(q.begin(),q.end());for(int i=k;i<len-k;i++)sum2+=q[i];c[i]=sum2/(len-2*k);}printf("\n");for(int i=0;i<m;i++)printf("%.2lf ",c[i]);return 0;
}

1.9UPC寒假个人训练第一场相关推荐

  1. 2017暑假训练第一场的一些题目

    2017暑假ACM训练第一场(石油大学主办) B题:模拟 3635: 拯救小鸡 时间限制: 1 Sec  内存限制:128 MB 提交: 71  解决: 34 [提交][状态][讨论版] 题目描述 鸡 ...

  2. UPC2020寒假训练第一场

    问题 A: 数列 时间限制: 1 Sec 内存限制: 128 MB 题目描述 联欢会上,主持人先在黑板上写了四个数字,分别是:2,0,1,9,然后说:"这串数字从第五个数起,每一个数都是它前 ...

  3. 2018寒假训练第一场——吃鸡跑毒篇

    题目描述 现在有一款很火的游戏playerunknown's battlegrounds,人称"吃鸡",在里面经常面临跑毒(从安全区外跑进安全区内)的问题,在安全区外,人们会处于中 ...

  4. (2017多校训练第一场)HDU - 6034 Balala Power! 贪心

    很容易就想到把每个字母的权重都算出来,然后把权重最大的赋值成25,次大的赋值成24......以此类推. 但是字符串长度最大为100000,也就是说一个字母的权重最大是26^100000次方左右,太大 ...

  5. 牛客网多校训练第一场 B - Symmetric Matrix(dp)

    链接: https://www.nowcoder.com/acm/contest/139/B 题意: 求满足以下条件的n*n矩阵A的数量模m: A(i,j) ∈ {0,1,2}, 1≤i,j≤n. A ...

  6. 大家一起做训练 第一场 A Next Test

    题目来源:CodeForce #27 A 题目的意思简而言之就是要你输出一个没有出现过的最小的正整数. 题意如此简单明了,做法也很明了. 直接读入所有的数,然后排个序,设置个变量从1开始,出现过+1, ...

  7. 1.24UPC寒假个人训练第12场

    1.24UPC寒假个人训练第12场(H L M还没补) 问题 A: 马拦过河卒 问题 B: 选数1 问题 C: 产生数 问题 D: 级数求和 问题 E: 幸运数字 问题 F: 对撞 问题 G: 差值求 ...

  8. 1.18upc寒假个人训练第9场

    1.18upc寒假个人训练第9场 问题 A: 6174问题 问题 B: 卖股票 问题 C: 小学生算术 问题 D: 素数II 问题 E: 统计字数 问题 F: 整数拆分 问题 G: 真假鉴定 问题 H ...

  9. 2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲

    2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲 题目链接 做法:模拟即可 #include <bits/stdc++.h> #define P pair<int,in ...

最新文章

  1. C++内联函数学习总结
  2. 使用windows资源管理器打开jar
  3. No Identifier specified for entity的解决办法
  4. git如何解决冲突(代码托管在coding)
  5. ruby 集合 分组_在Ruby中打印集合的元素
  6. shell打开wifi命令_远程执行命令的填坑记录
  7. rails3高端observer模式
  8. SSL 延迟与 Http、Https
  9. 元素周期表排列的规律_高中化高中化学元素周期表六大常考规律与特征学元素周期表六大常考规律与特征...
  10. 开源项目:RGB转BMP
  11. iOS 集成友盟分享图片链接为http时无法加载问题解决
  12. 2021-10-18 构建电影数据库MovieDB(数据库第一次实验)
  13. 青藏高原的气候类型及气候特征
  14. 从EXCEL导入CAD后如何设置表格文字大小?
  15. 图片马赛克去除工具_黑科技!利用 AI 技术,马赛克终于可以去掉了
  16. html代码表格服装尺寸,HTML - 表格单元尺寸
  17. Hololens2开发-3-打包编译安装Hololens应用
  18. keplergl,一款超炫的地理数据可视化神器!
  19. 计算机网络如何配置ospf动态路由,《计算机网络高级配置》第八讲OSPF动态路由协议...
  20. BP神经网络解决什么问题

热门文章

  1. android bitmap转图片_这是一份面向Android开发者的复习指南
  2. 好心情:长期心情不好就是抑郁症?
  3. 【java】Selenium爬虫控制谷歌浏览器
  4. [《命如草贱》偶感小记]2013-2-17
  5. 迅雷起死回生背后的男人,竟然是雷军
  6. Unity3D---精灵图片裁剪及简单UI搭建
  7. android模拟键盘自动输入,【求助】如何让接码平台的验证码自动输入到安卓模拟器的编辑框中...
  8. 记:在daemon.json中添加“live-restore“: false之后,docker无法启动
  9. 人的一生会遇上的四个人
  10. 架构师小跟班:教你从零开始申请和配置七牛云免费OSS对象存储(不能再详细了)...