说点闲话
今天的模考相比与\(\texttt {7.13}\)的模考还是要简单许多的,
我这个蒟蒻高兴到疯癫?!!!
这次没有爆零!
居然打了 \(170\) 分,全班第七!

这对于我这个蒟蒻可是天大的幸福!
最离谱的是,\(\texttt {T3}\) 是一道线段树的模板题,
但我却暴力卡常硬生生卡出了 \(80\) 分,全班第一?!
更离谱的是,除了 \(\texttt {T4}\),其他题目直接输样例就能骗 \(10\) 分?!
跟我一起唱:♫暴力出奇迹♪,♪骗分过样例♬……
啊哈哈哈哈哈?!!!
鸡汤来喽!
进入正题
照例放一下题面\(\texttt {PDF}\)
T1 谜
\(原题 \texttt {[USACO22JAN] Herdle B -} 洛谷\)
这道题可谓是我做过最简单的送分题,没有只因之一,做不出来的都是猪?好吧!(那你为什么没做出来)
当时我的想法是先用一个 char 二维数组 \(s1\) 记录答案矩阵,
在读入的时候顺便用一个 int 变量 \(a\) 记录每种字母的数量,
再定义两个 int 变量 \(c,d\),分别记录绿色和黄色,
然后循环读入一个 char 变量 \(s2\)(猜测矩阵中的 \(s2_{ij}\)),同时与 \(s1_{ij}\) 比较,此时有两种情况:
-
如果 \(s2\) 与 \(s1_{ij}\) 相同,
c ++; -
否则,计算
s2 - 'a'的结果并赋值给int\(n\),如果 \(a_n > 0\),
d ++,a[n] --。
#include<bits/stdc++.h>
using namespace std;
char s1[4][4],s2,a[26];
int c,d;
int main(){
//freopen("mystery.in","r",stdin);
//freopen("mystery.out","w",stdout);
//考场上复制下来的,不要介意
for(int i = 1;i <= 3;i ++){
for(int j = 1;j <= 3;j ++){
cin>>s1[i][j];
a[s1[i][j] - 'A'] ++;
}
}
for(int i = 1;i <= 3;i ++){
for(int j = 1;j <= 3;j ++){
cin>>s2;
if(s1[i][j] == s2)c ++,a[s2 - 'A'] --;
else if(a[s2 - 'A'] )d ++,a[s2 - 'A'] --;
}
}
cout<<c<<endl<<d;
return 0;
}
结果……
\(\color {red} {\texttt {WA 2 }}\color {green} {\texttt {AC 8}}\)
QAQ!错了 \(2\) 个点!
正解
先把答案矩阵和猜测矩阵一口气读到 \(s1,s2\) 里,