当前位置: 首页 > news >正文

孝感网站制作免费做网站的平台

孝感网站制作,免费做网站的平台,杭州公司的网站建设公司,西安最新新闻今日头条暴力枚举每一位是否进位,然后就可以高斯消元解出方程了。然而复杂度是O(2nn3),相当不靠谱。 考虑优化。注意到某一位进位情况的变化只会影响到方程的常数项,于是可以在最开始做一次高斯消元算出每个未知数与每个常数项的关系。这样就变成了O(…

  暴力枚举每一位是否进位,然后就可以高斯消元解出方程了。然而复杂度是O(2nn3),相当不靠谱。

  考虑优化。注意到某一位进位情况的变化只会影响到方程的常数项,于是可以在最开始做一次高斯消元算出每个未知数与每个常数项的关系。这样就变成了O(2nn2),虽然仍然不靠谱不过经常可以早早break,就能过了。

  似乎有一些挺麻烦的地方怎么都调不对,后来就变成了面向代码编程也不知道改了什么最后几乎全一样了才过。事实上还是有bug的,比如2 AB BA AA这样的数据会re掉,原因是方程看似解不出来但是有所有数不同的限制,应该还要特判一下然而懒得写了。
  当然这本来是个剪枝题。

#include<iostream> 
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
#define N 30
int n,m,a[N],b[N],c[N],f[N][N],d[N][N],u[N];
bool flag[N];
int gcd(int n,int m){return m==0?n:gcd(m,n%m);}
void gauss()
{for (int i=1;i<=n;i++) d[i][i-1]=-1,d[i][i]=n;for (int i=1;i<=n;i++)f[i][c[i]]--,f[i][a[i]]++,f[i][b[i]]++;for (int i=1,t=1;i<=n&&t<=n;i++,t++){int mx=i;for (int j=i+1;j<=n;j++)if (abs(f[j][t])>abs(f[mx][t])) mx=j;if (mx!=i) swap(f[i],f[mx]),swap(d[i],d[mx]);if (!f[i][t]) {i--;continue;}for (int j=1;j<=n;j++)if (i!=j&&f[j][t]){int x=f[j][t]/gcd(f[j][t],f[i][t]),y=f[i][t]/gcd(f[j][t],f[i][t]);for (int k=1;k<=n;k++)f[j][k]=f[j][k]*y-f[i][k]*x,d[j][k]=d[j][k]*y-d[i][k]*x;}}
}
void print()
{int a[N]={0};for (int i=1;i<=n;i++){for (int j=1;j<=n;j++)a[i]+=d[i][j]*u[j];a[i]/=f[i][i];}for (int i=1;i<=n;i++) cout<<a[i]<<' ';exit(0);
}
void check()
{memset(flag,0,sizeof(flag));for (int i=1;i<=n;i++){int x=0;for (int j=1;j<=n;j++) x+=d[i][j]*u[j];if (x%f[i][i]) return;x/=f[i][i];if (x<0||x>=n||flag[x]) return;flag[x]=1;}print();
}
void dfs(int k)
{if (k==n) check();else u[k]++,dfs(k+1),u[k]--,dfs(k+1);
}
int main()
{
#ifndef ONLINE_JUDGEfreopen("calc.in","r",stdin);freopen("calc.out","w",stdout);const char LL[]="%I64d\n";
#elseconst char LL[]="%lld\n";
#endifn=read();char ch=getchar();while (ch<'A'||ch>'Z') ch=getchar();for (int i=1;i<=n;i++) m=max(m,a[i]=ch-'A'+1),ch=getchar();while (ch<'A'||ch>'Z') ch=getchar();for (int i=1;i<=n;i++) m=max(m,b[i]=ch-'A'+1),ch=getchar();while (ch<'A'||ch>'Z') ch=getchar();for (int i=1;i<=n;i++) m=max(m,c[i]=ch-'A'+1),ch=getchar();reverse(a+1,a+n+1),reverse(b+1,b+n+1),reverse(c+1,c+n+1);gauss();dfs(1);return 0;
}

 

转载于:https://www.cnblogs.com/Gloid/p/9794227.html

http://www.lbrq.cn/news/2722717.html

相关文章:

  • 网站首页引导页模版口碑营销
  • 龙岗网站建设需要考量些什么深圳网络推广网络
  • 企业建站公司怎么创业淘宝权重查询入口
  • 网站 建设 价格表郑州网站关键词排名
  • 湖北中英双语网站建设安装百度到桌面
  • 如何做网站迁移网站分析报告范文
  • 淘宝详情页设计优化关键词推广
  • 简述企业建网站的步骤什么平台推广效果最好
  • 做再生资源的网站有哪些怎么查找关键词排名
  • 毕业设计网站建设软件项目大数据培训课程
  • app制作免费trinseo公司
  • 做企业网站需要准备什么网站推广的常用方法有哪些
  • 做网站被骗首付款怎么报案seo技术培训
  • 重庆网站优化排名推广推广手段
  • 怎么查网站的外链数量网络营销案例分享
  • 有什么可以做兼职的网站吗百度秒收录技术
  • 网站建设有哪些方法百度快照怎么做
  • 网站图片速度百度图片识别搜索
  • 该网站使用的安全设置市场营销考试题目及答案2022
  • 厦门加盟网站建设网站搭建免费
  • 嘉峪关做网站熊猫关键词挖掘工具
  • 汕头市政府门户网站官网网站怎么接广告
  • wordpress生成站点地图百度外推排名
  • html5做网页赣州seo培训
  • 网站禁止被采集西安seo搜推宝
  • 徐州企业做网站免费建立个人网站官网
  • seo短视频网页入口引流方案深圳外包seo
  • 做poster网站百度账户登录
  • 如何用dreamweaver做网站现在百度推广有用吗
  • 如何安装wordpress博客东莞seo网站排名优化
  • 办公效率提升指南:完成重复任务自动化
  • 【新手入门】Android基础知识(一):系统架构
  • Android 欧盟网络安全EN18031 要求对应的基本表格填写
  • 【机器学习深度学习】客观评估训练程度
  • Mac Mysql 卸载
  • Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)