$$ \texttt{ Writer:世界最蒻Dilute}$$
$$\texttt{ #A 某脱碳甲醛的电磁炮题}$$
出题人 Dilute \texttt{ 出题人 Dilute}
出题人 Dilute
电流公式I = U R I=\frac{U}{R} I = R U 大家都知道(不知道的话在题面中也给出了)
所以直接输出就可以了(ps:C++中除法自动向下取整)
std by Dilute
1 2 3 4 5 6 7 8 9 10 11 #include <bits/stdc++.h> using namespace std ;int main () { int U, R; scanf ("%d %d" , &U, &R); int Ans = U / R; printf ("%d" , Ans); return 0 ; }
$$\texttt{ #B 黑子的瞬移范围}$$
出题人 SLYZ_0120 \texttt{ 出题人 SLYZ\_0120}
出题人 SLYZ_0120
跟上一题差不多,但是坑点有二:
std by SLYZ_0120
1 2 3 4 5 6 7 8 9 #include <bits/stdc++.h> using namespace std ;int d;double s;int main () { scanf ("%d" ,&d); printf ("%.3lf" ,d*d*3.1415926 /4 ); return 0 ; }
$$\texttt{ #C 末日的时候有空吗?在干什么?可以来AK吗?}$$
出题人 Dilute \texttt{ 出题人 Dilute}
出题人 Dilute
这可能是整场比赛代码最长的题?QwQ
由题目我们经过一番思考我们会想出来一个策略:先从较弱(即消耗法力值较小)的“兽”开始打,打倒无法再打下去为止
由此我们可以对表示w i w_i w i 的序列排序再从前往后做即可
std by Dilute
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <bits/stdc++.h> using namespace std ;int w[10010 ];int main () { int n, m; scanf ("%d %d" , &n, &m); for (int i = 1 ; i <= n; i++) scanf ("%d" , &w[i]); sort(w+1 , w+n+1 ); for (int i = 1 ; i <= n; i++){ m -= w[i]; if (m <= 0 ){ printf ("%d" , i - 1 ); return 0 ; } } printf ("%d" , n); }
我珂美如画!
$$\texttt{ #D 打怪升级}$$
出题人 SLYZ_0120 \texttt{ 出题人 SLYZ\_0120}
出题人 SLYZ_0120
我们直接按照题意,模拟桐人和亚丝娜打怪升级的过程
教大家一个指令 p o w ( a , b ) pow(a, b) p o w ( a , b ) 可以表示a b a^b a b 即a a a 的b b b 次方
std by SLYZ_0120
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <bits/stdc++.h> using namespace std ;int n;int ans = 0 ;int main () { scanf ("%d" ,&n); for (int i = 1 ;i<n;i++){ ans += pow (2 ,i-1 ); } ans *= 2 ; printf ("%d" ,ans); return 0 ; }
$$\texttt{ #E 结构体排序}$$
出题人 bh1234666 \texttt{ 出题人 bh1234666}
出题人 bh1234666
第一种思路
我们进行多次排序,首先以a a a 为关键字,排序完成之后对于a相等的几个进行第二次排序,最后输出即可
std by bh1234666
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <bits/stdc++.h> using namespace std ;struct paixu { int a,b; }a[100005 ]; int cmp1 (paixu x,paixu y) { return x.a<y.a; } int cmp2 (paixu x,paixu y) { return x.b<y.b; } int main () { int n,i; scanf ("%d" ,&n); for (i=0 ;i<n;i++) scanf ("%d%d" ,&a[i].a,&a[i].b); sort(a,a+n,cmp1); int flag=0 ; for (i=0 ;i<n;i++) if (a[i].a!=a[flag].a) { sort(a+flag,a+i,cmp2); flag=i; } sort(a+flag,a+i,cmp2); for (i=0 ;i<n;i++) printf ("%d %d\n" ,a[i].a,a[i].b); return 0 ; }
第二种思路
其实只用一次排序就行了QwQ(只要在Cmp加入a a a 相等的情况即可)
std by Dilute
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <bits/stdc++.h> using namespace std ;struct Node { int a; int b; }Num[100010 ]; bool Cmp (Node a, Node b) { if (a.a == b.a) return a.b < b.b; return a.a < b.a; } int main () { int n; scanf ("%d" , &n); for (int i = 1 ; i <= n; i++) scanf ("%d %d" , &Num[i].a, &Num[i].b); sort(Num + 1 , Num + n + 1 , Cmp); for (int i = 1 ; i <= n; i++) printf ("%d %d\n" , Num[i].a, Num[i].b); }
$$\texttt{ #F 诡异的字符}$$
出题人 bh1234666 \texttt{ 出题人 bh1234666}
出题人 bh1234666
这题非常不常规……(但是并不能改变这是道大水题的事实QwQ)
这题要求输出的字符串中有两个问题:
std by bh1234666
1 2 3 4 5 6 7 8 9 #include <cstdio> char a[]="!@#$%^&*()[]{};:' \\|,<.>/?`~-_=+`~" ;int main () { a[17 ]=34 ; puts (a); return 0 ; }
$$\texttt{ #G 身份证号}$$
出题人 bh1234666 \texttt{ 出题人 bh1234666}
出题人 bh1234666
不难得出字符串710位为年份,11 12位为月份,13~14位为日期,那么把前面六位读进垃圾桶,再读进四位,输出刚刚读进的四位,输出空格,读进两位,输出刚刚读进的两位,再空格,最后读进两位,输出两位就行了
std by bh1234666
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <cstdio> int main () { char x; scanf ("%*c%*c%*c%*c%*c%*c%c" ,&x); printf ("%c" ,x); scanf ("%c" ,&x); printf ("%c" ,x); scanf ("%c" ,&x); printf ("%c" ,x); scanf ("%c" ,&x); printf ("%c" ,x); printf (" " ); scanf ("%c" ,&x); printf ("%c" ,x); scanf ("%c" ,&x); printf ("%c" ,x); printf (" " ); scanf ("%c" ,&x); printf ("%c" ,x); scanf ("%c" ,&x); printf ("%c" ,x); return 0 ; }
本场比赛的出题人们
Dilute 卢景行
SLYZ_0120 杨茗
bh1234666 包涵
最后,我想说
哦景真老师你真是太帅了!
哦景真老师你真是太帅了!
哦景真老师你真是太帅了!
QwQ