蒜头君学代数(二分)
来源:互联网 发布:qt5串口编程详解 编辑:程序博客网 时间:2024/05/16 23:38
题目链接:https://www.jisuanke.com/course/615/28897
题目思路:2 分 ∥A−B∥ 矩阵范数,即答案,那么对应的 B 矩阵的每个元素都可以确定在某个区间范围内,然后根据这些区间范围判断是否能构造出一个奇异矩阵。
坑点:为了避免精度问题采用循环的方法求解,一开始的check函数写的不对,采用四个循环的方法,求解出行列式的最大值和最小值,如果满足零点存在定理就满足题目所要求的条件
代码:
#include<bits/stdc++.h>using namespace std;const double inf = 1e9;double a,b,c,d;bool check(double mid){double mmin=inf,mmax=-inf; double a1[2]={a+mid,a-mid},b1[2]={b+mid,b-mid},c1[2]={c+mid,c-mid},d1[2]={d+mid,d-mid}; for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) for(int l=0;l<2;l++){ if(a1[i]*d1[l]-b1[j]*c1[k]>=mmax) mmax=a1[i]*d1[l]-b1[j]*c1[k]; if(a1[i]*d1[l]-b1[j]*c1[k]<=mmin) mmin=a1[i]*d1[l]-b1[j]*c1[k]; } if(mmax*mmin<=0) return true; else return false;}int main(){ scanf("%lf%lf%lf%lf",&a,&b,&c,&d); double l=0,r=inf,mid; double ans; for(int i=0;i<50;i++){ mid=(l+r)/2; if(check(mid)){ r=mid; ans=mid; } else{ l=mid; } } printf("%f\n",ans);}
阅读全文
0 0
- 蒜头君学代数(二分)
- 计蒜客 蒜头君学英语
- 蒜头君学英语--set()练习
- 蒜头学算术
- 计蒜客课程系列:蒜头学算术(DFS)
- 计蒜客课程算法—蒜头学算术(DFS)
- (深度优先搜索第二课) 蒜头学算数 - DFS
- 蒜头君的树
- 蒜头君吃桃子
- 蒜头君打老鼠
- 蒜头君的树
- 蒜头君的坐骑
- 蒜头君的兔子
- 蒜头君的排序
- 蒜头君救人
- 蒜头学算术,计蒜客算法学习记录
- 深度搜索之蒜头学算术
- 计蒜客 蒜头君开公司(全排列)
- Kafka+Spark Streaming+Redis实时计算整合实践
- hdu 6058 Kanade's sum
- ASP.NET MVC – 应用程序文件夹
- 网上商城购物系统(2)
- 前端面试题-20170802
- 蒜头君学代数(二分)
- H5链接打开APP并跳转到制定界面
- ireport设计导出模板,Jasperreport导出PDF、HTML、Excel
- LISTING 20.6 MultipleBounceBall.java
- string、stringbuffer、stringbuilder
- php 数组函数统计数组中,各个值出现的次数
- hadoop部署常见问题
- 【Codeforces】Codeforces Round #427 (Div. 2) D. Palindromic characteristics DP回文串
- ios 硬解码h264视频的坑