暑假集训
说实话,这个暑假集训虽然只有短短一周,但是还是挺折磨人的。我为暑假集训整理了博客,这里是几道签到题,相对简单。
Problem 1 丢失的扑克牌(poke.cpp/c/pas)
【题目描述】
终于到假期了,小明和好朋友小花准备玩把扑克牌消遣一下。他们约定,把扑克
牌中的大小鬼去除,然后找出其中两种不同花色的扑克牌。每人从选择的牌堆里
摸出一张牌,大者胜。记录谁胜的次数多,谁就赢。可玩到最后,他俩发现扑克
牌居然少了一张。请编写程序替他们找找到底缺了哪张扑克牌。
【输入格式】
输入一行,包括 25 个用空格分隔的数字(A 表示为 1,J、Q、K 表示为 11、
12、13)。
【输出格式】
输出数字 x,表示缺少的扑克牌数字。
【样例输入】
9 1 13 2 6 10 7 8 3 11 4 1 5 9 10 2 4 3 12 13 11 5 8 6 7
【样例输出】
12
【提示】
1.只有一种花色
2.不考虑大、小鬼
3.总扑克数只有 26 张
思路
这道题,懂的都懂,没有任何技术含量(但我差点文件名弄错了)
代码
#include<bits/stdc++.h>
using namespace std;
int n;
int p[15];
int main(){freopen("poke.in","r",stdin);freopen("poke.out","w",stdout);//千万别能错了freopen或文件名QAQfor(int i=1;i<=25;i++){cin>>n;p[n]++;}for(int i=1;i<=13;i++){if(p[i]==1){cout<<i;}}return 0;
}
Problem 2 单词分类(word.cpp/c/pas)
【问题描述】
chffy为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,
他决定对单词进行分类。
两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等。
例如“AABAC” ,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类。
现在chffy有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100 。你要
告诉chffy 这些单词会被分成几类。
【输入格式】
输入文件的第一行为单词个数N ,以下N 行每行为一个单词。
【输出格式】
输出文件仅包含一个数,表示这N 个单词分成的类数。
【样例输入】
3
AABAC
CBAAA
AAABB
【样例输出】
2
【数据范围】
对于70%的数据满足N ≤ 100 。
对于 100%的数据满足 N ≤ 10000 。
思路
当时想出来了一个复杂的尸路,于是WA了一大半。
这道题可以这样,先给每个单词排序,然后再给文章排序(都是按照字母序),然后遍历一遍文章就能很快求有几类了。
要我说,这个chffy人真好,就是有点费脑子。
代码
#include <bits/stdc++.h>
using namespace std;
string s[10005];
int n,ans=1;//ans=1,因为在后面的遍历中考虑不到第一种,如果你非要初始化为0,当然可以改变后面的程序。
int main(){freopen("word.in","r",stdin);freopen("word.out","w",stdout);//我后面有一个程序,因为文件名chess写成了chees丢了100分,我当时都要智熄了,大家千万不要像我一样写错了!QAQ cin>>n;for(int i=1;i<=n;i++){cin>>s[i];sort(s[i].begin(),s[i].end());//C++对于字符串的排序默认按照字典序 }sort(s+1,s+1+n);for(int i=2;i<=n;i++){if(s[i]!=s[i-1]) ans++;//由于字符串S严格按照字典序排序,所以只要当前项不等于前一项,就能说明这是新的一种单词 }cout<<ans;return 0;
}
//给你们将个笑话,这道题我输入样例时输入错了,就让我一直以为我做错了