Timus #1650. Billionaires

题目:有n个富豪(数据包含:姓名,开始时的所在地,拥有财富),某地财富即为在此的所有富豪财富相加。在接下来的m天,会有k个土豪在某一天晚上离开所在地,在第二天早上到达所在地。求每天拥有财富最多的城市,按照字母表顺序输出某城市财富最多的天数。ps:若某一天有两个及以上的城市财富相同则该天不算在这几个城市的天数中,若最终有城市天数为0则不输出此城市。

解析:该题目逻辑很简单,建立Person和City结构体,Person储存姓名,所在地,财富;City储存城市名,拥有财富。循环查找/插入/删除/更新City和Person中的数据,并找到City中财富最大的城市。

代码分析:你必须建立map或set容器或写自己的Tree结构来完成此题,否则必会超时。比如,如果你用顺序的方式遍历City中最大的城市/城市名必定会超时。
1. 我的解决方法是用map<string, City*>cityptr;用指针快速修改和查找。
2. 更加快捷的方式是map<string, pair<City*, long long>>Person;
3. 傻一点的方法是建立map<string, int>index;这种方法缺点是每次都要更新index。

Python 牛顿法求解多元非线性方程组

代码使用方式可见代码中示例代码。需安装numpy和sympy库。

计算数学课程 参考 Python代码

求积分以及方程的解需要自己修改f(x)函数里面的返回值。求非线性方程的解需要安装sympy包。

牛顿法解一元非线性方程

牛顿法解二元非线性方程

5种积分方法

绝对误差与相对误差

最小二乘法一元多项式拟合

Python 求积分的几种方法

不同的方法最大区别在于公式的不同/矩形区域的不同,依据公式而定,需要什么代码你可以自己进行更改,很简单。
本文代码为不严格代码,最严格的代码为先判断连续性。当你需要对大量函数积分(懒得写函数连续性检测的时候)可以使用本文代码用try…except…不严格替代。
看不懂公式的可以去 CSDN 查看图片。

  1. Simpson积分法:
    \(\int _ { a } ^ { b } f ( x ) d x \approx \frac { ( b – a ) ( f ( a ) + f ( b ) + 4 f ( \frac { a + b } { 2 } ) ) } { 6 }\)
  1. 右矩形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { n } f ( a + \frac { b – a } { n } i )\)
  1. 左矩形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { n } f ( a + \frac { b – a } { n } (i – 1) )\)
  1. 中矩形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { n } f ( a + \frac { (b – a)} { 2 n }(2i – 1 ) )\)
  1. 梯形积分公式
    \(\int _ { a } ^ { b } f ( x ) d x = \lim _ { n \rightarrow \infty } \sum _ { i = 1 } ^ { n } \frac { b – a } { 2n } (f ( a + \frac { b – a } { n }( i – 1) ) + f ( a + \frac { b – a } { n } i ))\)

Timus #1628. White Streaks

题目:有m*n的矩形,每个方块默认为白色,现给k个方块图上黑色,问有多少连续的num*1或1*num的长方形。如果一个1*1的方块周围没有白色方块,那么这个方块也包含在答案里面。

解析:行列遍历。对行和列分别进行查找,对行和列查找过程中单独成一个方块的坐标分别记录在两个集合中,最终只需要在结果上加上两个集合的交集中元素的个数。

浙ICP备2021019730-1    浙公网安备 33010902002953号
Copyright © 2024 PanCake