摘要:
C题: 这个题的数据开到了10^18,很明显不能暴力。正确的做法是从1到n进行二分查找,对于每一个查找的值进行暴力模拟。之前只是单纯的写过二分算法,但并没有在实际做题中应用过。 代码如下: #include<iostream> #include<algorithm> #include<map> #i 阅读全文
摘要:
A chord 先用一个字符串数组存储音符表,注意 每次输入都需要排序,在通过枚举得到音符的数字编号和后续处理。 代码如下: #include <cstdio> #include <iostream> #include <cmath> using namespace std; int main() 阅读全文
摘要:
7-5 整除光棍 思路:模拟竖式除法的过程,先找出第一个>=x的光棍数,然后输出该数除以x的商,同时在余数的后面加上1,也就是余数=余数*10+1,重复该过程,直到余数=0为止。 代码如下: #include<bits/stdc++.h> using namespace std; #define l 阅读全文
摘要:
7-1 阅览室 思路:对于每一天的借书,用一个map存储书号和时间,当还书时,首先在map中寻找,如果找到了,则说明此书可以被还,用此时的时间-map中存储的时间就是这本书被借走的时间。同时,如果书被归还,要在map中删除该书,以便下一个人借。 启示:比赛的时候WA是因为读错了题,错以为一本书每天只 阅读全文
摘要:
7-9 点赞狂魔 之前比赛的时候之所以WA是因为忽略了n==0和n==1的情况。这提醒我要注意观察题目所给变量的取值范围,注意临界值。 结构体排序,再按照要求格式化输出即可。 代码如下: #include<bits/stdc++.h> using namespace std; struct per 阅读全文
摘要:
7-6 连续因子: 思路:先判断输入的n是不是素数,如果是那么连续因子便只有n本身,此时只需输出1和n即可;如果n不是素数,那么通过递归来判断最大的连续因子数,并将此时的连续因子存在set里,最后输出mmax和set即可。 WA了一次是因为没有考虑n是素数的情况,另外有的题解说必须要开long lo 阅读全文
摘要:
C题: 落了一个条件,啊啊啊,就WA了! 思路:模拟,计算出加油站前的距离sum1和加油站后的距离sum2,然后模拟每一趟路程,如果此时的油量能够支撑到达下一趟的加油站,就不用加油,否则就需要加油,其中最后一趟需要特判(只需要和这一趟比较即可)。 另外看题解的时候学会了位运算的意义:a<<b: a* 阅读全文
摘要:
7-9 小字辈: 开始使用并查集暴力做的,结果超时。 正确思路: 用嵌套的vector存储每个人的下一辈有谁,之后记录祖宗,再dfs。 之前学STL的时候没学vector,之前学习的dfs也差不多忘了,通过这道题再复习了一下。 代码如下: #include<bits/stdc++.h> using 阅读全文
摘要:
5: 我能说这个代码调试了一天吗? 思路: getline函数输入,然后遍历字符串,记录6出现的次数,如果连续6的次数大于3,将第一个6换成9,然后删除剩下的6,之后更新6的次数、s的长度以及下标i,继续记录6的次数,如果连续6的次数大于9,则将第一个6换成2,第二个6换成7,删除剩余的6,更新数据 阅读全文
摘要:
这次比赛大的太爽了,只有两道题没有做出来。 F题 Three displays: 开始的时候看到n最大的取值是3000,便用了暴力循环,结果超时了,看完题解才想到用dp,之前也确实没有接触过dp; 思路:用dp[i][2]表示以i结尾的前i台显示器中满足题意且花费最少的两台的费用,dp[i][2]= 阅读全文