Problem A约数个数
题目描述
p^q 表示p的q次方,正整数M可以分解为M=(p1^ a1) * (p2^ a2) * (p3^ a3)……(pn^ an)的形式,其中p1,p2……pn为质数(大于1并且只能被1和自身整除的数叫做质数)。a1,a2……an为整数。例如18=(2^1) * (3^2) ,45=(3^2) * (5^1)。
给出n和一个质数g,以及正整数M分解后的形式,求M的所有约数中,有多少能被g整除。

输入
第一行 两个数 n和g。 0<n<=10 1<g<100。g为质数。
第二行 n个数 p1到pn 1<pi<100 pi为质数(1<=i<=n)。
第三行 n个数 a1到an 0<=ai<=20 ai为整数(1<=i<=n)。

保证对于任意的i,j(i != j) ,pi != pj

输出
一个数
表示M的所有约数中,有多少能被g整除。

样例输入
2 3
3 5
2 2
样例输出
6

提示
样例解释:
M=(3^ 2) * (5^2)=9*25=225
225能被3整除的约数有3 9 15 45 75 225 共6个。
分析:
一开始的想法是求M,然后判断其因子能否被g整除就可以了,但是很显然是不可行的,M会溢出。所以得从M的分解式子入手。首先看例子中两个3和两个5相乘,那他的因子就是这四个数的组合,而想让其因子能被g整除,且g,p都为质数那就必须再p中某一项为g。
看到这里便可以入手了,第一步要判断p中是否有g且这一项的a是否为0;

int flag=-1;
for(int i=0;i<n;i++)
{if(g==p[i]&&a[i]!=0){flag=i;break;}}
if(flag==-1)cout<<0;
else ······

第二步,如果p中某项为g,那如何对其他的质数进行组合?这便是高中的知识了(还是高中没学好啊qAq)还是看样例,p=3的这部分,由于要保证整体能被g整除,所以只能两种情况取1个或2个,p=5这部分有三种情况取0个,1个或2个。于是便找到了规律,满足p=g的这部分对应的有a种取法,其他的项都有a+1种取法。
(最后要注意计数器的类型要用long long,不然会溢出)

#include<bits/stdc++.h>
using namespace std;
int p[10],a[10];
int main()
{int n,g;cin>>n>>g;for(int i=0;i<n;i++){cin>>p[i];}for(int i=0;i<n;i++){cin>>a[i];}int flag=-1;int k;for(int i=0;i<n;i++){if(g==p[i]&&a[i]!=0){flag=i;break;}}long long t=1;if(flag==-1)cout<<0;else{for(int i=0;i<n;i++){if(i==flag)t*=a[i];  elset*=a[i]+1;    }cout<<t;}return 0;
}

Problem B:Alice and Bob
题目描述

Alice and Bob decide to play a game. At the beginning of the game they put n piles of sweets on the table.The number of each pile of sweets may be different. Alice and Bob take away sweets in turn,and always Alice takes sweets first in every games.Each time in their turn they can get only one whole pile of sweets.When there is no sweet left, the game is over. Finally, The man who have the largest number of sweets in hand will win.
Assume that Alice and Bob were very clever.

输入
The first line is an integer n, which means that there are n pile sweets.
1 <= n <= 100000
Next n integers, the i-th integer means the number of sweets in the i-th pile.
The number of sweets in each pile is less than 10000.

输出
If Alice wins, output “A”, and if Bob wins, output “B”.
Otherwise output “again”

样例输入
样例输入1:
3
1 6 7
样例输入2:
4
3 3 3 3
样例输出
样例输出1: A

样例输出2: again

分析:题干需要仔细的审读,重点有两个:1.每次都是Alice先拿 2.两个人都很聪明(每次都拿最多的,这个地方比较有意思)。看到这应该就知道了,先对这些糖果进行排序,然后再偶数给A,奇数给B就ok了。

#include<bits/stdc++.h>
using namespace std;
int pile[100010];
bool compare(int a,int b)
{return a>b;
}
int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>pile[i];}sort(pile,pile+n,compare);int A=0,B=0;for(int i=0;i<n;i++){if(i%2==0){A+=pile[i];}if(i%2==1) B+=pile[i];}if(A>B)cout<<'A';if(A<B)cout<<'B';if(A==B)cout<<"again";return 0;
}

但是。。有滴学c语言小伙伴发现好像冒泡会超时,快排又不会打,怎么办?紧张头痛。但从这个题入手,仔细思考会发现Bob永远赢不了,平的时候还是拿到的都一样的时候,所以好像可以不用排序也能做。
具体思路如下:如果数组中每一个数出现的次数都为偶数,则可以判断除为平局,否则就是A赢(Orz)。

Problem C:黑白黑
题目描述
黑白黑是一个很经典的游戏,规则也非常简单。三个人同时伸出一只手,手心为白,手背为黑,如果有两人为黑一人为白,或者两人为白一人为黑,则单独伸出手心或者手背的那个人就输了。
又是一个周末,小A小B小C他们仨个懒虫又睡到了中午,外卖送到楼下了也不想下楼拿,于是他们决定用这个游戏来选出一个输的人去拿外卖。

输入
三个整数
a b c
(0 <= a,b,c <= 1)
a表示小A
b表示小B
c表示小C
0表示伸出的手背
1表示伸出的手心

输出
如果有人输了则输出他的名字A/B/C(大写)
平局则输出"aha"(不含引号)

样例输入
样例输入1:
0 0 0
样例输入2:
1 1 0
样例输出
样例输出1:
aha
样例输出2:
C
相信这个小游戏大家也都玩过,所以原理就不多说了,而且情况比较少,直接可以进行情况的枚举。

#include<bits/stdc++.h>
using namespace std;
int main()
{int a,b,c;cin>>a>>b>>c;if((a==b&&b==c)){cout<<"aha";}else if(a==c&&c!=b){cout<<'B';}else if(a==b&&b!=c){cout<<'C';}else if(b==c&&c!=a){cout<<'A';}return 0;
}

Problem D:GPA
题目描述
期末考试成绩终于出来了,小杜怀着忐忑的心情查了一下自己的成绩,还好7门课程都没有挂科。
不过教务系统出故障了,唯独不显示小杜的平均绩点,但是小杜这种学渣又不会算,你能帮他计算一下吗?

输入
第一行输入7个整数 分别为这7门课程的成绩
第二行输入7个整数 分别为这7门课程的学分
0 <= 成绩 <= 100
1 <= 学分 <= 5
成绩与学分均为整数

输出
输出一行,即小杜的平均绩点,保留2位有效数字

样例输入
67 80 69 60 94 100 80
1 2 4 4 3 2 1

样例输出
2.29

对于样例的解释:
(1.51+2.52+1.54+1.04+4.03+4.02+2.5*1)/(1+2+4+4+3+2+1) = 2.2941176470588

提示
成绩 绩点
91-100 4.0
86-90 3.5
81-85 3.0
76-80 2.5
71-75 2.0
66-70 1.5
60-65 1.0
60以下 0
平均绩点:(课程学分1 * 绩点+课程学分2 * 绩点+~~~ +课程学分n * 绩点)/(课程学分1+课程学分2+ ~~~+课程学分n)
分析:先要将对应的分数段的成绩转化成为绩点,然后再利用公式,分子分母分别求和,最后再计算平均绩点,注意数据类型,和保留小数,以及中间的类型转化问题。

#include<bits/stdc++.h>
using namespace std;
int main()
{double cj[7],xf[7],jd[7];for(int i=0;i<7;i++)cin>>cj[i];for(int i=0;i<7;i++)cin>>xf[i];for(int i=0;i<7;i++){if(cj[i]>=91)jd[i]=4.0;else if(cj[i]>=86)jd[i]=3.5;else if(cj[i]>=81)jd[i]=3.0;else if(cj[i]>=76)jd[i]=2.5;else if(cj[i]>=71)jd[i]=2.0;else if(cj[i]>=66)jd[i]=1.5;else if(cj[i]>=60)jd[i]=1.0;else jd[i]=0; }double pjjd,fz=0,fm=0;for(int i=0;i<7;i++){fz+=xf[i]*jd[i];fm+=xf[i];}pjjd=fz/fm;printf("%.2lf",pjjd);return 0;
}

Problem E:are you ok?
题目描述
小朋是一家超市的老板,他经常会来超市检查,每次都会让仓库管理员列出仓库中剩余商品的数量。但是仓库管理员是个非常健忘的人,有时候商品都卖光了也不去进货,这会让老板非常生气,因为这样超市卖不出去东西就没办法赚钱了。小朋有句口头禅"are you ok?",如果发现所有商品的库存都为0的话,就会非常生气地喊出"are you ok?",大声地质询仓库管理员。
现在你就是仓库管理员,每次面对小朋的询问,你都会在电脑系统中对库存进行查询,然后列出剩余商品的清单。(如果所有商品库存都是0,那你就没办法交差了,你的老板会非常生气)。

输入
第一行一个整数n,表示有n种货物
(2 <= n <= 100)
往下一行有n个字符串s1,s2…si…sn 表示系统显示的第i种货物的名称(1<=i<=n)
(字符串长度不超过10)
往下一行有n个整数a1,a2…ai…an 表示系统显示的第i种货物的库存(1<=i<=n)
(每种货物库存数量 <= 1000)

输出
如果还有商品(哪怕只有一个),你也可以列出剩余商品的清单。
否则你就只能挨老板骂了。

样例输入
样例输入1:
4
a b c d
0 0 0 0

样例输入2:
5
apple egg milk desk light
0 1 2 0 1

样例输出
样例输出1: are you ok?

样例1的说明:
所有的商品都没库存, 你的老板会非常生气

样例输出2:
egg x 1
milk x 2
light x 1
(x前后有空格)
分析:利用结构体对商品和数量进行统计,先遍历一边,若全为零则输出are you ok?否则输出不为0的商品。

#include<bits/stdc++.h>
using namespace std;
struct liebiao
{char name[11];int num;
}lb[100];
int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>lb[i].name;}for(int i=0;i<n;i++){cin>>lb[i].num;}int flag=0;for(int i=0;i<n;i++){if(lb[i].num!=0){flag=1;}}if(flag==0){cout<<"are you ok?";}else{for(int i=0;i<n;i++){if(lb[i].num!=0){cout<<lb[i].name<<' '<<'x'<<' '<<lb[i].num<<endl;}}}return 0;
}

Problem F:折纸达人
题目描述
小明最近对折纸很感兴趣,他想知道一张正方形的纸在多次折叠以后沿纸的中线用剪刀将其剪开能得到多少张纸?

输入
第一行一个整数t,表示一共有t组数据(1 <= t <= 100)
每组输入数据包括三行
第一行为一个整数n,表示有n次操作(1 <= n <= 10^5)
第二行为n个大写字母(四种情况L,R,T,B L表示从左向右折 R表示从右向左折 T表示从上向下折 B表示从下向上折)
第三行为两个字母(四种情况 LR,RL,TB,BT LR表示从左向右剪 RL表示从右向左剪 TB表示从上往下剪 BT表示从下往上剪)

输出
输出一个整数表示能得到的纸的数目
答案可能过大 需要对1000000007 (1e9+7)取模

样例输入
2

2
BB
LR

1
R
LR

样例输出
5
2

提示
所有的“对折”与“剪”的操作均沿中线进行

对于样例中第二组数据的解释:
折叠



最终结果

分析:这个题难度并不大,和第一个题差不多,也是高中题目,比赛时试都没敢试,所以,还是要提高自身的心理能力。
这道题用纸这一下就可知道,对折方向与最后的剪法决定了最后的数量,左右剪只受上下对折次数的影响2^ n+1,上下剪只受左右对折次数的影响,同样是2^n+1,所以只需要分别统计上下和左右的对折次数即可,注意要在对着过程中摸一下,算一下,摸一下,摸一下·······。

 #include<bits/stdc++.h>
using namespace std;
const long long Mod=1000000007;
long long Pow(int a,int b)
{long long sum=1;for(int i=1;i<=b;i++){sum*=a;sum%=Mod;}return sum;
}
int main()
{int t;cin>>t;while(t--){int n;cin>>n;char a;int L=0,T=0;int sum=1;for(int i=1;i<=n;i++){cin>>a;if(a=='L'||a=='R'){L++;}if(a=='B'||a=='T'){T++;}}string b;cin>>b;if(b=="LR"||b=="RL"){sum+=Pow(2,T);}else{sum+=Pow(2,L);}cout<<sum<<endl;}return 0;
}

这里面为了让大家看出实际过程我把计数和最后的乘方计算分开了,乘方单独写了一个函数(因为要过程中取模),实际上在统计的时候就可以进行计算加取模了。
Problem G:数数
题目描述
小凯今年上一年级了,他只学会了0-9这十个数字,对于两位以上的数字,小凯自创了一套读法。
连续出现的x个y,小凯将其读作“xy”
比如:11 小凯读作"21" (连续2个1)
21 小凯读作"1211" (连续1个2 连续1个1)
99 小凯读作"29" (连续2个9)
310 小凯读作"131110"(连续1个3 连续1个1 连续1个0)
330111 小凯读作"231031"(连续2个3 连续1个0 连续3个1)
给定一个由数字组成的字符串n(2 <= |n| <= 100),请输出小凯对n的读法
|n|表示字符串n的长度
保证连续出现同一个数字的次数不会超过9次(因为小凯最多只能数到9)
比如:2223311111111118(非法,因为数字1连续出现了10次)

输入
由纯数字组成的一行字符串

输出
在小凯的自创规则下这一长串数的读法

样例输入 13145

样例输出 1113111415
分析:设置一个计数器(代码中用的flag)从字符串的第一位开始读,每次判断当前字符与下一字符是否相同,相同则flag++;
不同则可以输出flag++并将其重置为1。

#include<bits/stdc++.h>
using namespace std;
int main()
{char a[110];cin>>a;int n;n=strlen(a);int flag=1;for(int i=0;i<n;i++){if(a[i]==a[i+1])flag++;if(a[i+1]!=a[i]||i==n-1){cout<<flag<<a[i];flag=1;}}return 0;
}

Problem H:神奇老虎机
题目描述

不知道你有没有玩过老虎机,现在小明面前有一台神奇的老虎机,这台机器有n个滚轮,从左往右数第i个滚轮包含1到a_i的整数(包括1和a_i)。在按下按钮之后,所有的滚轮都会飞速旋转,最终停下来,每个滚轮将显示其中一个整数。这个过程是随机的。小明有一个有趣的想法,如果将滚轮显示的数字连接起来看做一长串字符串的话,将会有非常多的可能,在这所有的可能中字典序最小的字符串是哪个?(只能从左向右读)

对于字典序的说明:
两个字符串S和T,从前往后比较,如果存在一个位置,在该位置两个字符串的字符不同,则比较小的那个所在的字符串字典序更小。
例如: 123的字典序比14的小,因为在第二个位置上2小于4
12345的字典序比9的小
220的字典序比22的大,因为22是220的一个前缀

输入
一个整数t,表示有t组数据(1 <= t <= 100)
每组第一行为一个整数n表示老虎机有n个滚轮
(1 <= n <= 1000)
第二行为n个整数(a_1 a_2 … a_i … a_n )
表示第i个滚轮上的数字范围(1~a_i)
(1 <= a_i <= 100)

输出
每组输入对应一行输出,输出字典序最小时老虎机滚轮上显示的数字
两个数字之间用空格隔开

样例输入
2
4
6 6 6 6
2
2 2

样例输出
1 1 1 1
1 1

提示
老虎机上显示的数都不含前导0
比如:某一块滚轮包含[1,33],如果它显示"1"的话,显示的是"1"而不是"01"

对于样例2的解释:
所有情况分别为:“1 1”、“1 2”、“2 1”、“2 2”
其中"1 1"是字典序最小的,所以答案为"1 1"
分析:从题目中,按照要求多写几次就会发现,每个数只要满足是1,10,100就可以使其字典序最小,但要注意一个问题,不是每一位数字都取1是最小。
比如1 1 1是大于10 10 1的,所以只要判断是几位数就可以了,一位数1,两位数10,三位数100,当然最后一位是1;

#include<bits/stdc++.h>
using namespace std;
int main()
{int t,n;int a[1010];  int b;cin>>t;while(t--){cin>>n;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n-1;i++){int flag=0;int k=0;while(a[i]!=0){flag++;a[i]/=10;}if(flag==1)cout<<"1"<<' ';if(flag==2)cout<<"10"<<' ';if(flag==3)cout<<"100"<<' ';}cout<<'1';cout<<endl;}    return 0;
}

Problem I:五环
题目描述
提到五环,我想大家都非常熟悉。“啊五环~ 你比四环多一环 ~~~”
不好意思 跑题了。。。
奥运五环由蓝、黄、黑、绿、红五种颜色的圆环组成。
小迪认为五个圆环分别代表五大洲:
蓝色 = 欧洲
黄色 = 亚洲
黑色 = 非洲
绿色 = 大洋州
红色 = 美洲

对应英文为
Blue = Europe
Yellow = Asia
Black = Africa
Green = Oceania
Red = America

输入
输入一行字符串
字符串为五环的颜色或者五个大洲的名称

输出
如果输入的是颜色则输出对应的大洲
如果输入的是大洲则输出对应的颜色

样例输入
Blue

样例输出
Europe
分析:这个题可以用结构体对两个字符串进行绑定,也可以一对一直接用if来匹配。

#include<bits/stdc++.h>
using namespace std;
struct a
{char col[10];char name[10];
}wh[5];
int main()
{strcpy(wh[1].col,"Blue");strcpy(wh[1].name,"Europe");strcpy(wh[2].col,"Yellow");strcpy(wh[2].name,"Asia");strcpy(wh[3].col,"Green");strcpy(wh[3].name,"Oceania");strcpy(wh[4].col,"Red");strcpy(wh[4].name,"America");strcpy(wh[0].col,"Black");strcpy(wh[0].name,"Africa");char b[10];cin>>b;for(int i=0;i<=4;i++){if(strcmp(b,wh[i].col)==0){cout<<wh[i].name;break;}if(strcmp(b,wh[i].name)==0){cout<<wh[i].col;break;}}return 0;
}

Problem J:开挂的小洋
题目描述
最近小洋迷上了一款名叫打地鼠的游戏,但是小洋是个游戏白痴,这么简单的游戏也总是得不到几分,有一天他发现这款游戏可以在网络上买到外挂,这款外挂可以提前预知所有地鼠出现的时间,并且他可以开局得到两把锤子,之前小洋1s只能挥动一次锤子,现在他左右开弓可以同时打中最多两只地鼠。每只地鼠在第i秒出现,在第i+1秒的时候就会消失。也就是说在第i秒小洋只能打到这一秒出现的地鼠,(i-1)秒以及(i+1)秒出现的地鼠他都没办法打中。

输入
一个整数n,表示地鼠的数目
一个整数m,表示此次游戏时长
接下来n个整数a_1-a_n,表示地鼠会在第a_i秒出现
1 <= a_i <= m
1 <= n <= 1000;
1 <= m <= 100000;
每只地鼠最多停留一秒

输出
一个整数,表示小洋最高得分(每打中一只地鼠得一分)

样例输入
样例输入1:
4
9
1 1 4 7

样例输入2:
6
10
3 3 3 3 9 1

样例输出
样例输出1:
4

样例输出2:
4

提示
对于样例1的解释:
第1秒出现两只地鼠 左右开弓两只全打中得2分
第4秒出现一只地鼠 打中得1分
第7秒出现一只地鼠 打中得1分
最终得分4分

对于样例2的解释:
第1秒出现一只地鼠 打中得1分
第3秒出现四只地鼠 两把锤子最多打中两只 得2分
第9秒出现一只地鼠 打中得1分
共4分
分析:统计每一秒的地鼠数量,大于2的记为2(只有两个锤子)。
虽然这个题做出来了,但是时间复杂度太高,没一秒都判断从头到尾判断了一遍地鼠出现了几次。

#include<bits/stdc++.h>
using namespace std;
int main()
{int a[1000];int n,m;cin>>n>>m;for(int i=0;i<1000;i++){a[i]=-1;}for(int i=0;i<n;i++){cin>>a[i];}int flag=0;int sum=0;for(int time=0;time<=m;time++){flag=0;for(int k=0;k<n;k++){if(a[k]==time){flag++;sum++;}if(flag==2){break;}}}cout<<sum; return 0;
}

可以对地鼠的统计上进行了一些优化,我们可以把时间线看作是一条数组,把地鼠放入相应的数组位中,如果超过两个,则不再放入,这样就可以将时间复杂度控制在O(n)下了。

#include<bits/stdc++.h>
using namespace std;
int a[100010];
int main()
{int n,m;int sum=0; cin>>n>>m;int k;for(int i=1;i<=n;i++){cin>>k;if(a[k]<2){a[k]++;}}for(int i=0;i<=m;i++){sum+=a[i];}cout<<sum; return 0;
}

赛后和丁某同学进行了一波讨论,他把这个题想麻烦了,那我们不如就把这个麻烦的题当作拓展,进行一下延申。
在原题的基础上,由于小洋反应比较迟钝,如果在这一秒挥动了锤子,且锤子无法及时收回,因此在下一秒这只锤子将无法挥动。

样例输入1:
4
9
1 1 2 2
样例输出 1:
2样例输入 2:
6
9
2 2 3 3 4 4
样例输出 2:
4样例输入 3:
5
9
1 1 2 3 3
样例输出 4:
4

这是我的思路

有兴趣有想法的同学可以和我私聊讨论。
Problem K:数字匹配
题目描述
给出两个元素数量都为n的数组a和数组b。对于数组a中的每个元素,都必须找一个(而且最多一个)数组b中的元素进行匹配,数组b中的所有元素也都要被匹配到,也就是说一一匹配。匹配完成后,相互匹配的元素相乘,然后把所有的积相加。
例如:
数组a:1 5 3
数组 b:2 3 4
如果a中第一个元素跟b中第三个元素匹配,第二个元素跟b中第二个元素匹配,第三个元素跟b中第一个元素匹配,匹配完后相乘得到 14、53、32,求和得到结果14+53+32=25。
如果a中第一个元素跟b中第二个元素匹配,第二个元素跟b中第三个元素匹配,第三个元素跟b中第一个元素匹配,匹配完后相乘得到 13、54、32,求和得到结果13+54+32=29。

给出n和两个数组,分别计算求和的最大结果与最小结果。

输入
第一行 一个数n,表示两个数组元素的个数 1<=n<=1000。
第二行 n个数 表示数组a的各个元素ai,0<ai<=1000 ai为正整数,(1<=i<=n)。
第三行 n个数 表示数组b的各个元素bi,0<bi<=1000 bi为正整数,(1<=i<=n)。

输出
两个数 分别表示最大结果和最小结果。最大结果和最小结果可以相等。

样例输入
3
1 5 3
2 3 4

样例输出
31 23
分析:当时的第一反应就是先拍序然后对应正序乘积的和与对应逆序乘积的和就是最大值与最小值(怎么证明,,我也不会)但是随手写了几个例子,好像没错,于是就这样敲了一下,就ac了。
献上学林学姐的博客,有简单证明:https://blog.csdn.net/QLU_minoz/article/details/84558501

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;int a[1010],b[1010];for(int i=0;i<n;i++)cin>>a[i];for(int i=0;i<n;i++)cin>>b[i];sort(a,a+n);sort(b,b+n);int Min=0,Max=0;for(int i=0;i<n;i++){Max+=a[i]*b[i];Min+=a[i]*b[n-i-1];}cout<<Max<<' '<<Min;return 0;
}

Problem M: 签到题
恭喜你发现一道签到题,请输出“check in”来解决这道问题。

#include<bits/stdc++.h>
using namespace std;
int main()
{cout<<"check in";return 0;
}

以上是c++的题解,可能有些同学看不懂,暂时可以把cin>>理解为scanf
把cout<<理解为printf,至于头文件不用在意,只看内容就可以。
sort函数,如果学的是c语言可以从网上找一些排序的基础算法(选择排序,冒泡排序,快速排序)
其他部分题解会随后更新。
———————————————————————————————————

赛后心得:
1.知识技能方面:我觉得这次比赛中没有考到算法知识,只要是日常上课认真看书,完成老师的作业成绩都不会很差。
2.心态方面:可能是因为第一次参加比赛,心态不是很稳定,像a题目那样的高中数学题,完全不应该做不出来,但当时画了一页纸,也没有找到规律(Orz)还有很长的路要走。
3.对未来的想法:其实这次的比赛并不能看出任何东西,无论成绩好坏,因为可以看作是一次入学考试,与正真的竞赛是由非常大的差距的。前段时间在学习算法的时候有点操之过急,想要一口吃成胖子,却又想无头苍蝇一样乱撞,了解算法却又不会用,这和不会又有什么区别呢?
突然想起了今年学长们去参加acm青岛区域赛时的队名:筚路蓝缕,以启山林。工大是这样,我们又何尝不是这样,路是坎坷的,我们可以慢一点,但每一步都要有脚印;路是漫长的,我们可以久一点,但每一刻都不会想要放弃。

2018QLU-ACM新生赛部分题解及赛后心得相关推荐

  1. ACM新生赛部分题解

    2021级的ACM新生赛已经完结了,我就自己做出来的八道题整理一下题解,因为其他是真的不会. 链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 一.我们是冠军 7 日星期 777 的凌晨,7 ...

  2. 【补题日记】训练日记4:山东大学(SDU)acm新生赛

    前 牛客 题目还是偏简单的 我是零零碎碎用上课时间写的 所以当时可能处理细节不太到位吧 才提交了很多遍 但其实思路都比较简单 就是部分题有坑点吧 中 A 签到题(出题人说的) #include< ...

  3. 2022济南大学acm新生赛题解

    通过答题情况的难度系数: 签到:ABL 简单:DGKQ 中等:CMN 困难:EFHIJOPRST A-和 算出n个数的和判断正负性即可!!! 发现很多同学的代码错误:要么sum未赋初值,要么数组大小定 ...

  4. 第三届ACM/ICPC新生赛初赛题解

    A //注意感叹号为中文字符 #include<stdio.h> int main(){printf("I am a ACMer !\n");return 0; } B ...

  5. 第十二届西南石油大学程序设计新生赛官方题解

    整理的算法模板合集: ACM模板 目录 A.杰杰国王的平等节(easy)[签到] B.最佳复习效果(easy - mid)[二分查找] C.无限之路(mid - hard)[离散化+前缀和] D.Is ...

  6. 2019浙江ACM省赛部分题解-ABDEFGHIJK

    太菜了,心态炸了.QAQ A-Vertices in the Pocket() 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...

  7. 2019 广工ACM新生赛决赛 K题(立方差公式)

    题目 https://ac.nowcoder.com/acm/contest/3036/K 思路

  8. 哈尔滨理工大学软件与微电子学院程序设计竞赛(19级新生赛)——题解

    注:所有题目不要求多组输入 索引: A. 小乐乐学编程 B. 小乐乐算平均分 C. 小乐乐找最大数 D. 小乐乐是否被叫家长 E. 小乐乐转换成绩 F. 小乐乐算多少人被请家长 G. 小乐乐算最高分 ...

  9. 林湾村男子铁路技术职业学院2022年5月ACM校赛初赛题解

    传送门:SWJTUOJ A题 Bob每次最多走一格,最多走300步,而起始位置在0~300之间,所以最多也就走到600这样子,那么只需要记录最低600位就可以了. 每次乘的时候,时间复杂度为: 其中n ...

最新文章

  1. JavaMelody应用监控使用指南
  2. Docker教程-安装
  3. YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)
  4. javafx css_JavaFX缺少的功能调查:CSS
  5. python中的多线程-threading
  6. php狼和兔子算法,PHP基于递归算法解决兔子生兔子问题php技巧
  7. 【Cisco技术资料汇总】
  8. 二本类 计算机类 大学录取分数线,重庆邮电大学什么专业实力最强?为什么二本专业都超一本线录取?...
  9. find_first_of()和 find_last_of()
  10. linux服务器登录次数,Linux 服务器和Windows服务器 用户登录失败次数限制【互联网金融系统漏洞排查】...
  11. 贺利坚老师汇编课程33笔记:[bx+idata]对同长度字符串进行同步处理
  12. TARA-汽车安全概念
  13. php根据手机号码获取归属地,PHP通过API获取手机号码归属地
  14. 弘辽科技:拼多多懵懂商家不知道的直通车操作
  15. 一个开源vue网站博客,nuxt开源网站,前后端分离项目 1
  16. 纪念特洛伊英雄 Sinon - SAP UI5 Mock Server 使用步骤和工作原理介绍
  17. (二)什么是Reactor模式
  18. c语言51单片机外部中断,51单片机外部中断0实例详解
  19. JavaScript中的arguments,callee,caller,call,appy
  20. 勒索病毒之后 企业文件安全保护如何落到实处?

热门文章

  1. java web框架struts,JavaWeb框架_Struts2_(五)-----Struts2的标签库
  2. 前端 JavaScript -- 键盘按下松开事件
  3. 关于电商平台目前环境的思考
  4. python输入123输出321_python逆序输出,编程从键盘输入一个三位数,将它们逆序输出。如输入123,输出321.谢谢...
  5. 青岛科技大学计算机专硕复试科目,谈一下青岛科技大学出版专硕考研参考书目有哪些...
  6. 汽车配置名词解释(5):座椅及车身配置
  7. 注册建筑师考试难考吗?含金量高不高?
  8. 话里话外:坏脾气都是被逼出来的
  9. 单精度浮点数存储、双精度浮点数存储
  10. AHK取色宏解释(不断更新内容)