haungyuze114514
2024-10-28 19:47:08
5:30 出校打车,绿车看成了蓝车,那车一直在我面前按喇叭。
5:50 到家了。才发现准考证忘学校里了,啊
6:15 打印完准考证后出家门了,6:30 到了火车站,看到了 cyc,cmk 和 ht。
8点左右 到九江力,去酒店看了会书就睡了。
7:20 出酒店,发现好多来考试的。
8:10 进考场,有小学生问能不能带零食,监考老师没绷住,后来竟然说可以。
8:30 下载文件,网络出了问题,延期半小时。
9:00 开考。
比去年简单,发现没有什么好优化的,就直接写了。
#include <bits/stdc++.h>
using namespace std;
int n,numn=52,m;
char a,b;
char a1[10]={0,'D','C','H','S'},b1[20]={0,'A','1','2','3','4','5','6','7','8','9','T','J','Q','K'};
struct p{
char a,b;
bool c=true;
}p[60];
int main(){
freopen("poker.in","r",stdin);
freopen("poker.out","w",stdout);
for(int i=1;i<=4;i++){
for(int j=1;j<=13;j++){
m++;
p[m].a=a1[i];
p[m].b=b1[j];
}
}
cin>>n;
for(int z=1;z<=n;z++){
cin>>a>>b;
if(a=='D'){
for(int i=1;i<=13;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
if(a=='C'){
for(int i=14;i<=26;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
if(a=='H'){
for(int i=27;i<=39;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
if(a=='S'){
for(int i=40;i<=52;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
}
cout<<numn<<endl;
return 0;
}
测试样例,发现最后一个样例错了,才发现
#include <bits/stdc++.h>
using namespace std;
int n,numn=52,m;//numn指剩余卡牌数
char a,b;
char a1[10]={0,'D','C','H','S'},b1[20]={0,'A','2','3','4','5','6','7','8','9','T','J','Q','K'};//做预处理用的数组
struct p{//存放所有卡牌的属性
char a,b;
bool c=true;
}p[60];
int main(){
freopen("poker.in","r",stdin);
freopen("poker.out","w",stdout);
for(int i=1;i<=4;i++){//预处理
for(int j=1;j<=13;j++){
m++;
p[m].a=a1[i];
p[m].b=b1[j];
}
}
cin>>n;
for(int z=1;z<=n;z++){
cin>>a>>b;
//下面挨个比较花,然后在比较数值,标记该卡片,减少剩余卡牌数量
if(a=='D'){
for(int i=1;i<=13;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
if(a=='C'){
for(int i=14;i<=26;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
if(a=='H'){
for(int i=27;i<=39;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
if(a=='S'){
for(int i=40;i<=52;i++){
if(b==p[i].b&&p[i].c){
p[i].c=false;
numn--;
}
}
}
}
cout<<numn<<endl;//输出剩余卡牌数量
return 0;
}
测试样例发现没问题,就切下一道题了。
第一眼看了样例,以为是BFS,看完才发现就是小模拟。
首先对于每组数据,先看
#include<bits/stdc++.h>
using namespace std;
char a[1005][1005];
int t,n,m,k,x01,y01,d,x10,y10,num=1;
int main(){
freopen("explore.in","r",stdin);
freopen("explore.out","w",stdout);
cin>>t;
for(int z=1;z<=t;z++){
memset(a,0,sizeof(a));//清空数组
num=1;//1算上起点的一个位置
cin>>n>>m>>k>>x01>>y01>>d;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];
for(int i=1;i<=k;i++){
if(d==0){//判断不同方向走向的位置
x10=x01;
y10=y01+1;
}
if(d==1){
x10=x01+1;
y10=y01;
}
if(d==2){
x10=x01;
y10=y01-1;
}
if(d==3){
x10=x01-1;
y10=y01;
}
if(a[x10][y10]=='.'||a[x10][y10]=='w'){//判断将走向的位置是否可以行走
if(a[x10][y10]=='.'){//没走过
num++;
a[x01][y01]='w';//标记走过的位置
x01=x10;
y01=y10;
}
if(a[x10][y10]=='w'){//走过
x01=x10;
y01=y10;
}
}
else d=(d+1)%4;
}
cout<<num<<endl;
}
return 0;
}
测试发现最后两个样例没有全过,发现代码没啥问题就切下一道题了,到最后还是没想出错哪了。 最后测洛谷发现只拿了50分。
只想骗分,随便写了一点。
#include <bits/stdc++.h>
using namespace std;
int a[100005],n;
int main(){
freopen("sticks.in","r",stdin);
freopen("sticks.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
cout<<"-1"<<endl;
}
return 0;
}
洛谷测试发现竟然爆零了。
看了一眼,根本不会写,直接放弃了。
考试结束。
1:30 坐车,回家。