大学ACM学习笔记
2024-09-03 19:15:54
高斯消元###
该来的总会来的系列
int gauss()
{
for(int i=1;i<=n;i++)//按照列来枚举,当前之前i-1列全消完了
{
int k=i;
for(int j=i+1;j<=n;j++)if(fabs(a[j][i])>fabs(a[k][i]))k=j;//找一个系数绝对值最大的放在当前行,方便消元
if(fabs(del=a[k][i])<eps)return 0;
for(int j=i;j<=n+1;j++)swap(&a[i][j],&a[k][j]);
for(int j=i;j<=n+1;j++)a[i][j]/=del;//把第i行的同时除系数
for(int j=1;j<=n;j++)
if(j!=i)
{
del=a[j][i];
for(int k=i;k<=n+1;k++)a[j][k]-=a[i][k]*del;
}
}
return 1;
}
在大学,背诵代码不是那么重要了,重要的还是积累,这个高斯消元就是标准的把一个n*n方阵消成上三角形,然后这个程序比较优秀的是一遍消下面一遍消上面,所以一下子就变成了对角线上全为1的矩阵了,十分方便。
求n个点曼哈顿距离极值###
先假设为三维的,就是求 $ max { |a_i-a_j| + |b_i-b_j| + |c_i-c_j| } \(
我们有绝对值不等式得\) |a|+|b| \geq |a+b| $
$ |a_i-a_j| + |b_i-b_j| + |c_i-c_j| = (\pm a_i \pm b_i \pm c_i )-( \pm a_j \pm b_j \pm c_j ) $
其中必须保证符号一致
所以我们就2^3次枚举 $ a_i,b_i,c_i $ 这个三元组的符号 ,然后每一次计算出最大值和最小值就可以了,代码如下
int calc()
{
int ans=0,Min,Max;
int i,j,k;
for(i=0;i<8;i++)
{
Min=oo,Max=-oo;
for(j=0;j<n;j++)
{
double sum=0;
for(k=0;k<3;k++)
{
int t=i&1<<k;
if(t)sum+=p[j][k];
else sum-=p[j][k];
}
Max=MAX(Max,sum);Min=MIN(Min,sum);
}
ans=MAX(ans,Max-Min);
}
return ans;
}
最新文章
- Unity 最佳实践
- 关于mouse_event和sendinput无效的原因
- Mybatis出现:无效的列类型: 1111 错误
- Python3下map函数的显示问题
- duilib入门之贴图描述、类html文本描述、动态换肤、Dll插件、资源打包
- LightOJ 1214 Large Division 水题
- .net缓存应用与分析
- 在有main函数的前提下 eclipse找不到主类
- 金融量化分析【day110】:IPython介绍及简单操作
- js判断当前内容是否为空
- Android 布局巧用之include、merge、ViewStub
- 深入理解JVM(3)——垃圾收集策略详解
- BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)
- lua_call/lua_pcall/xpcall
- Java基础六(自定义类、ArrayList集合)
- PHP 对象转数组 Object转array
- 使用SOCKET获取网页的内容
- 最受欢迎编程语言又是谁?C语言居首,大数据赢了
- CSS background 之设置图片为背景技巧
- HDU 3605 Escape(状态压缩+最大流)
热门文章
- [转]为何选择 Flink
- Dijkstra.NET 库体验报告
- VUE组件 之 高德地图地址选择
- 520表白酷炫html
- LeetCode刷题--两数相加(中等)
- [洛谷P1279][题解]字串距离
- 关于String path = request.getContextPath(); String basePath = request.getScheme()+";://";+request.getServerName()+";:";+request.getServerPort()+path+";/";;
- enter键的使用
- HTML51-清除浮动overflow、网易注册界面基本结构搭建
- DDL--DML