随笔分类 -  题解

摘要:这道题感觉没有必要用好几个数组甚至二维数组来做吧……把问题抽象一下,其实不需要显式地模拟棋盘的行列,而且可以让代码更加简洁。 实际上,要满足“每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子”的条件,只需要让序列任意两个位置上的数字之差不等于其距离之差。举个例子,假 阅读全文
posted @ 2019-08-28 11:24 TimDyh 阅读(138) 评论(0) 推荐(0)
摘要:这是一道贪心题,贪心的策略是将大臣们按左右手金币的乘积升序排列,具体证明过程可以参见洛谷大佬的题解,这里就不再赘述了。 因为本菜鸡之前没有接触过高精度运算,对C++的运算符重载也不太熟练,所以正好借此机会记录一下用到的高精度模版。模版框架参考于:https://blog.csdn.net/Wall_ 阅读全文
posted @ 2019-08-19 11:31 TimDyh 阅读(150) 评论(0) 推荐(0)
摘要:这道题用传统快排(如下所示)的结果就是最后三个点TLE: cpp void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } void quickSort(int a[], int left, int right) { if (left = 阅读全文
posted @ 2019-08-19 11:27 TimDyh 阅读(382) 评论(0) 推荐(0)
摘要:这道题的关键在于如何列出所有的选数组合,那么自然想到递归。我们将n个数存入数组num[]中,选数过程可以看作是从下标0~n-1中选择不重复的k个填满k个空位。函数dfs()中sum记录当前已选数的累加和,left记录当前剩余空位数,p指出当前空位可以从num[]中哪一位下标开始选。由于组合是无序的, 阅读全文
posted @ 2019-08-19 11:21 TimDyh 阅读(169) 评论(0) 推荐(0)