UVALive 6449 IQ Test --高斯消元?
题意:给你一串数字,问这串数字符合f[n] = a*f[n-1],f[n] = a*f[n-1]+b*f[n-2],f[n] = a*f[n-1]+b*f[n-2]+c*f[n-3]这几个方程中的哪个,然后要你给出第n+1项,如果符合多个方程,项数小的优先(第一个方程优先)。
解法:这题我先处理看是否满足f[n] = a*f[n-1]的形式,如果不满足,则用高斯消元借出两项和三项的情况的a,b,c,比如第二个方程,f[3] = a*f[2]+b*f[1],f[4] = a*f[3]+b*f[2],两个方程两个未知量,用高斯消元解出a,b,这里可能不是整数,我将他们加了个0.5取下整,居然对了。后来看那场比赛没一个人是用的高斯消元,所以不知道这样是否正确,有看出来端倪的欢迎评论告诉我。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 4 int f[];
typedef double Matrix[N][N];
int x,y,z; void gauss_elimination(Matrix A,int n)
{
int i,j,k,r;
for(i=;i<n;i++)
{
//选一行r并与i行交换
r = i;
for(j=i+;j<n;j++)
if(fabs(A[j][i]) > fabs(A[r][i]))
r = j;
if(r != i)
{
for(j=;j<=n;j++)
swap(A[r][j],A[i][j]);
}
//与第i+1~n行进行消元
for(k=i+;k<n;k++)
{
double f = A[k][i]/A[i][i]; //为了让A[k][i] = 0,第i行乘以的倍数
for(j=i;j<=n;j++)
A[k][j] -= f*A[i][j];
}
}
//回代
for(i=n-;i>=;i--)
{
for(j=i+;j<n;j++)
A[i][n] -= A[j][n]*A[i][j];
A[i][n] /= A[i][i];
}
x = (int)floor(A[][n]+0.5);
y = (int)floor(A[][n]+0.5);
if(n == )
z = (int)floor(A[][n]+0.5);
} int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(f,,sizeof(f));
for(i=;i<=n;i++)
scanf("%d",&f[i]);
int ans = Mod;
int a1,a2,a3;
int flag;
if((f[] == && f[] == ) || f[]%f[] == )
{
if(f[] == && f[] == )
a1 = ;
else
a1 = f[]/f[];
flag = ;
for(i=;i<=n;i++)
{
if(f[i] != a1*f[i-])
flag = ;
}
if(flag)
ans = a1*f[n];
}
if(ans != Mod)
{
printf("%d\n",ans);
continue;
}
Matrix A;
A[][] = A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
gauss_elimination(A,);
flag = ;
for(i=;i<=n;i++)
{
if(f[i] != x*f[i-]+y*f[i-])
flag = ;
}
if(flag)
ans = x*f[n]+y*f[n-];
if(ans != Mod)
{
printf("%d\n",ans);
continue;
}
A[][] = A[][] = A[][] = f[];
A[][] = A[][] = f[];
A[][] = f[];
A[][] = A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
A[][] = f[];
gauss_elimination(A,);
//printf("%d %d %d\n",x,y,z);
ans = x*f[n]+y*f[n-]+z*f[n-];
if(ans != Mod)
printf("%d\n",ans);
}
return ;
}
UVALive 6449 IQ Test --高斯消元?的更多相关文章
- First Knight UVALive - 4297(优化高斯消元解概率dp)
题意: 一个矩形区域被分成 m*n 个单元编号为 (1, 1)至 (m, n),左上为 (1, 1),右下为(m, n).给出P(k)i,j,其中 1 ≤ i ≤ m,1 ≤ j ≤ n,1 ≤ k ...
- UVALive 7138 The Matrix Revolutions(Matrix-Tree + 高斯消元)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...
- UVALive 7455 Linear Ecosystem (高斯消元)
Linear Ecosystem 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/B Description http://7xj ...
- UVALive - 6185 Find the Outlier暴力填表+高斯消元+卡eps
https://cn.vjudge.net/problem/UVALive-6185 我真的是服了orz eps 1e5,1e6过不了 开1e2 1e1都能过 题意:给你一个d阶多项式f的f(0),f ...
- UVALive - 3490 Generator (AC自动机+高斯消元dp)
初始有一个空串s,从前n个大写字母中不断随机取出一个字母添加到s的结尾,出现模式串t时停止,求停止时s的长度期望. 这道题解法不唯一,比较无脑的方法是对模式串t建一个单串AC自动机,设u为自动机上的一 ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
- 【BZOJ-3270】博物馆 高斯消元 + 概率期望
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 292 Solved: 158[Submit][Status][Discuss] ...
- *POJ 1222 高斯消元
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9612 Accepted: 62 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
随机推荐
- js generator数据类型
1. 概述 generator 是ES6引入的新的数据类型, 看上去像一个函数,除了使用return返回, yield可以返回多次. generator 由function* 定义, (注意*号), ...
- Linux下的crontab命令使用特别须注意的地方
1.如果命令中涉及到了年月日(如:date +%C%y%m%d),其中%必须进行转义,如下: date +\%C\%y\%m\%d 2.使用到的命令必须使用完整的路径: * * * /home/yxf ...
- [性能] Bean拷贝工具类性能比较
Bean拷贝工具类性能比较 引言 几年前做过一个项目,接入新的api接口.为了和api实现解耦,决定将api返回的实体类在本地也建一个.这样做有两个好处 可以在api变更字段的时候保持应用稳定性 可以 ...
- 1、Flat UI Getting started(文档翻译)
下载链接:http://www.bootcss.com/p/flat-ui/ 一.什么是Flat UI? Flat UI 是一种漂亮的Boostrap主题.我们重新设计了它的很多组件,使得其看起来扁平 ...
- JS框架的一些小总结
闭包结构 为了防止和别的库的冲突,用闭包把整个框架安全地保护好. 我们待会的代码都写在里面.这里创建一个全局变量"window.O",就是在window对象里加个O,它等价于 &q ...
- Oracle之自动收集统计信息
一.Oracle 11g 在Oracle的11g版本中提供了统计数据自动收集的功能.在部署安装11g Oracle软件过程中,其中有一个步骤便是提示是否启动这个功能(默认是启用这个功能). 在这里介绍 ...
- Create a “% Complete” Progress Bar with JS Link in SharePoint 2013
Create a “% Complete” Progress Bar with JS Link in SharePoint 2013 SharePoint 2013 has a lot new fea ...
- Creating External Lists From Code
You can create an external list based on an entity (external content type) defined in SharePoint Bus ...
- 桥牌笔记:Show up Squeeze显露挤牌法
南主打4S,注意一个叫牌过程,西家叫过加倍,东家应叫过2D. 西连打红桃K.A,然后再打红桃J让东家将吃.东家上手后,回小方块.此时庄家已经失了3墩了,如何完成这个4S? 庄家必须拿到所有剩下的牌墩. ...
- Effective Java 阅读笔记——方法
38:检查参数的有效性 每当编写方法或者构造器的时候,应该考虑它的参数有哪些限制,在方法的开头处对参数进行检查,并且把这些限制写入文档. 注意: 对于公有方法,应该使用@throws标签在文档中说明违 ...