20170901(打酱油)
代码1
这题运用贪心的方法,N元钱能买多少个5瓶就买多少个,剩下能买多少个3瓶就买多少个。
1 | //freopen("D://input.txt","r",stdin); |
20170902(公共钥匙盒)
代码1
设计一个数据结构:
1 | struct Trans{ |
表示在什么时间做什么事,第一个表示取/还的时间,第二个表示钥匙编号,第三个表示0是取,1是还。根据输入将所有的trans保存在vector<Trans> transes 中,然后排序。vector<int> keys 保存每个位置的钥匙编号,-1表示为空位置。
1 | //freopen("D://input.txt","r",stdin); |
20170903(JSON查询)
代码1
将所有的输入的行都保存在一个没有换行符的字符串中string input。将查询分解为vector<string> query ,第0个表示0级查询的字符串,第1个表示1级查询的字符串。构建一个函数pair<int,string> Query(int beg, vector<string>& query, int k) 表示从beg位置的左括号开始查找当前层的query[k]字符,若找到了,则要么返回字符串类型,要么返回对象,要么继续向下递归查找,若没有找到,则返回没有找到。
1 | //freopen("D://input.txt","r",stdin); |
43行,51行,犯了点粗心错误。
20070904(通信网络)
代码1
对每个点a运行BFS算法,就知道a和谁可以互相知道。vector<set<int>> know 表示哪个点知道哪个点,know[1]里面的点就是1知道的点。
1 | //freopen("D://input.txt","r",stdin); |
60分。运行超时。
代码2
其实我只要将vector<set<int>> know 换成int know[][] 就好了。从k1开始遍历,所有能遍历到的k2,都有know[k1][k2]=1和know[k2][k1]=1。还有,要把邻接矩阵改为邻接表,这很重要,因为可以减少遍历每个点的邻接点的时间,以前是要遍历n次,但是现在只用遍历邻接点数量次。
1 | //freopen("D://input.txt","r",stdin); |