2017年10月17日 NOIp模拟赛
第一道题是模拟。
大致的思路是判断所有错误的情况,比如两个运算符连用、括号不匹配。正确的情况很多,但是错误的类型就那么几种,依次判断一下。
在输入的时候可以有一个技巧,对于数字来说,一个数字和连续的多个数字是一样的,所以在前一个字符是数字时,如果下一个读入的也是数字,可以跳过去不读入。空格一样的道理。这样在判断的时候,不论是数字、空格、括号还是运算符都只占一个字符。判断的时候会很简单。
在考试的时候大部分时间浪费在字符串的读入上。
对于有空格的字符串,读入的时候用“getline”。
#include <bits/stdc++.h>
using namespace std;
string S;
int main()
{
getline(cin, S);
}
第二题图算法。
大概的思路是类似于BFS和排序的算法。
主要的难度在于字符串的匹配,如果时间充足的时候可以写KMP算法,但也可以使用map.
#include<bits/stdc++.h>
using namespace std;
map <string, int> F;
第三题是DP。
考试时只写了三十分暴力。
大致思路是快速逆元,快速组合数,容斥DP。
时间不够所以没写。
2017年10月18日