Day11 备战CCF-CSP练习

news/2024/10/21 23:46:22

Day 11

题目描述

题目很长,就不赘述了(主要是懒得写

题目解析

Gauss 消元
题目的提示很明显,将元素守恒作为建立等式的基础。只要满足每一行元素守恒,即\(x_1 + x_2 + ··· + x_n = 0\)即可

元素个数为\(m\),物质个数为\(n\),增广矩阵的大下为\(m * (n + 1)\),Gauss消元时间复杂度为\(O(m n^2)\) 数据量很小

要注意的是,这里有个特解,比如\(x_1 = x_2 = x_3 = ··· = x_n = 0\)一定是成立的,但是在题干描述中并不合法,所以在\(rankA = n\)时还是要求出具体的解,判断一下特解

C++代码

#include <bits/stdc++.h>using namespace std;
const int N = 110;
const double eps = 1e-10;int T;
int n;
map<string , int> mp;
int idx = 0;
double g[N][N];void process_str(int k , string x)
{int i = 0;while(i < x.size()){string s = "";while(i < x.size() && !isdigit(x[i])) s += x[i ++];int amount = 0;while(i < x.size() && isdigit(x[i])) amount = amount * 10 + x[i ++] - '0';if(!mp.count(s)) mp[s] = idx ++;g[mp[s]][k] = amount;}
}int gauss()
{int c, r;for (c = 0, r = 0; c < n; c ++ ){int t = r;for (int i = r; i < idx; i ++ )if (fabs(g[i][c]) > fabs(g[t][c]))t = i;if (fabs(g[t][c]) < eps) continue;for (int i = c; i <= n; i ++ ) swap(g[t][i], g[r][i]);for (int i = n; i >= c; i -- ) g[r][i] /= g[r][c];for (int i = r + 1; i < idx; i ++ )if (fabs(g[i][c]) > eps)for (int j = n; j >= c; j -- )g[i][j] -= g[r][j] * g[i][c];r ++ ;}if (r < n){for (int i = r; i < idx; i ++ )if (fabs(g[i][n]) > eps)return 0; // 无解return 1;}for (int i = idx - 1; i >= 0; i -- )for (int j = i + 1; j < n; j ++ )g[i][n] -= g[i][j] * g[j][n];bool f = true;for(int i = 0 ; i < idx ; i ++)f &= (g[i][n] < eps);if(f) return 0;return 1;
}void solve()
{memset(g , 0 , sizeof g);mp.clear();idx = 0;cin >> n;for(int i = 0 ; i < n ; i ++){string x;cin >> x;process_str(i , x);    }if(gauss()) cout << "Y\n";else cout << "N\n";
}int main()
{cin >> T;while(T --){solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74411.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

服务器端训练yolov5使用tensorboard+端口转发 实时查看训练成果

服务器端训练yolov5使用tensorboard+端口转发 实时查看训练成果 本文参照博客园的一位大佬(相当感谢!!!):本地浏览器查看云服务器训练模型的tensorboard界面 - 拾一贰叁 - 博客园 服务器端操作运行train.py开始训练 新开一个终端进入到yolov5目录 输入 tensorboard --l…

习题6.7代码

习题6.7代码 import numpy as np import pandas as pd import cvxpy as cp import networkx as nx import matplotlib.pyplot as plt df = pd.read_excel(F:\python数学建模与算法\源程序\《Python数学建模算法与应用》程序和数据\第6章 图论模型\data6.xlsx) D = df.values d…

在华为云服务器上测试GCC for OpenEuler的特性

步骤1:购买并配置华为云服务器 1.1 注册华为云账号访问华为云官网:打开浏览器,访问 华为云官网。 注册账号:点击页面右上角的“注册”按钮。 按照提示填写必要的信息(邮箱、密码、验证码等)完成注册。 可能需要验证邮箱,请按照邮件中的指示完成验证。1.2 登录华为云控制…

类欧几里得算法

前言注:该文章不定期更新。Tips: 建议阅读文章后自行推导,否则难以掌握。介绍 类欧几里得算法是用 \(O(\log n)\) 的时间复杂度求解形似于 \(f(a,b,c,n)=\sum\limits_{i=0}^n\lfloor\frac{ai+b}{c}\rfloor\) 的函数的值的一种算法。 由于其算法复杂度证明与扩展欧几里得算法类…

python第三章课后习题

ef X(n): # 差分方程的解 return 2 * (-1)**(n + 1) n_values = [0, 1, 2, 3, 4, 5] for n in n_values: print(f"X({n}) = {X(n)}") print("学号:3028")import networkx as nx G = nx.DiGraph() for i in range(1, 7): G.add_node(i) edges = [ (1, 2), …

【Flask】线上部署

1.基本流程1.本地开发项目 2.git将代码提交“仓库” 3.服务器获取代码 4.创建虚拟环境 + 激活 + 安装第3方模块 5.uwsgi -> 基于uwsgi启动Flask程序 9001 6.nginx + 配置 7.其他- 启动脚本- 关闭脚本2.第一步到第二步就不缀叙了,直接上代码仓库地址https://gitee.com/xiao-…

东山Pi柒号-主板简介

东山Pi柒号-开发板 最近淘到了一块性价比还不错的开发板,东山派柒号。出自韦东山店,使用芯片STM32MP157,正好学习一下。 板子文档链接: DongshanPI Board Documentation Center. 以下是摘自该网站的一些信息: 硬件功能描述核心板规格SOC主控: STM32MP157DAC (双核CorteX …