A - Amusing Joke
(菜鸟思路,勿喷) 按道理来说吗,这道题应该是一道水题,就是比较两个字符串数组里的元素是否完全一样。但是我当时就一直很迷,从第一个数组开始遍历,如果在第二个数组中找到相同的元素,就删除,最终两个数组的元素都删除为0时,标明这两个字符串数组元素完全相等。 结果两个for,时间复杂度太大,中间也出了很多很多问题,硬是两个小时没写出来。 后来,我才发现,字符串数组也是可以用sort函数排序的,输入数据,排个序,再判断相等,直接得出结果,或者用map。 我看到这个题的解法,整个人直接傻了。果然还是自己的知识储备不够,今后需要多多补充基础知识。 代码如下
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string a, b, c;
cin >> a >> b >> c;
string d = a.append(b);
sort(d.begin(), d.end());
sort(c.begin(), c.end());
if (c == d)
cout << "YES\n";
else
cout << "NO\n";
return 0;
}
B-Hopscotch
这道题乍一看也不难,但是我同样也花了很久的时间,一是最开始没考虑到y<0的情况,后来还是一直wa。知道刚刚才发现是题目读错了,给我人整不会了。 代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
long long a, x, y, rema, num;
cin >> a >> x >> y;
rema = (y - a) % (2 * a);
num = (y - a) / (2 * a);
if (rema == 0 || y < 0)
{
cout << "-1\n";
}
else if (y < a && y > 0 && x * 2 < a && x * 2 > -a)
{
cout << "1\n";
}
else if (rema > 0 && rema < a && x * 2 < a && x * 2 > -a)
{
cout << num * 3 + 2 << endl;
}
else if (rema > a && rema < 2 * a && x > -a && x < 0)
{
cout << num * 3 + 3 << endl;
}
else if (rema > a && rema < 2 * a && x > 0 && x < a)
{
cout << num * 3 + 4 << endl;
}
else
{
cout << "-1\n";
}
return 0;
}
今日总结
关于cf呢,还是老生常谈的话,AB题不难,不考察任何算法,单纯推规律就好,但一定要读清楚题目,并且细心,才能更快a题。
话不多说,LMY加油!
|