首页 > 其他分享 >Day11 备战CCF-CSP练习

Day11 备战CCF-CSP练习

时间:2024-10-21 23:31:43浏览次数:1  
标签:return fabs idx int ++ Day11 CCF CSP mp

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;
}

标签:return,fabs,idx,int,++,Day11,CCF,CSP,mp
From: https://www.cnblogs.com/mathblog/p/18491635

相关文章

  • CSP2024 前集训:csp-s模拟12
    前言咕了好久才写,当时又发烧了所以没有交。虽然有两道签,但一道时计算几何一道放了T4都没打,T1赛时猜到结论和先看T4的都赢麻了,T1赛时\(π\)只会背倒第九位精度炸了暴力都不对。剩下的题当天太难受了都没改,改的两道都是specialjudge哎?T1小h的几何九点圆圆心的证......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛10
    前言不想说啥了最简单的一题是紫,去死吧只改了T1、T2,T2原题翻译和赛时题面描述都很唐,赛后断断续续加了好多hack。T1岛屿设\(f_{a,b}\)表示\(a\)条两端同色链,\(b\)条两端异色链时连通块数量的期望。红红蓝蓝相连得到红蓝\(\tof_{a-1,b+1}\)。红红红蓝相连得到红红......
  • csp2024 复习计划
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊先复习板子,再复习Trick和题目。1.数据结构平衡树笛卡尔树线段树、树状数组的各种Trick哈希的方法、题目2.杂算法CDQ分治、整体二分、点分治、点分树KMP可以做道大搜索练练手3.图论最小生成树、最短路建模相关......
  • 2024-10-21 学习人工智能的Day11
    1.基础1.1概念NumPy的全称是“NumericPython”,它是Python的第三方扩展包,主要用来计算、处理一维或多维数组在数组算术计算方面,NumPy提供了大量的数学函数NumPy的底层主要用C语言编写,因此它能够高速地执行数值计算NumPy还提供了多种数据结构,这些数据结构能够非......
  • 信息学奥赛复赛复习18-CSP-J2023-01小苹果-向上取整、向下取整、模拟算法
    PDF文档公众号回复关键字:202410211P9748[CSP-J2023]小苹果[题目描述]小Y的桌子上放着n个苹果从左到右排成一列,编号为从1到n。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第1个苹果开始、每隔2个苹果拿走1个苹果。随......
  • CSP 模拟 52
    B最短路先建出最短路DAG,保证最短路径唯一,所以建出来的DAG是一棵树。考虑一个点的答案可以由谁来更新,假设当前点为点\(u\),它的dfs序控制范围是\(l,r\)。首先,它可以由子树外除了父亲的节点来更新,形如ans[u]=dis[v]+w,它也可以由子树内的节点更新,路径形如1->zc->v->u,要求中......
  • Day10 备战CCF-CSP练习
    Day10题目描述十滴水是一个非常经典的小游戏。小\(C\)正在玩一个一维版本的十滴水游戏。我们通过一个例子描述游戏的基本规则。游戏在一个$1×c$的网格上进行,格子用整数$x(1≤x≤c)$编号,编号从左往右依次递增。网格内\(m\)个格子里有\(1∼4\)滴水,其余格子里没有......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛08
    前言先痛骂没良心出题人,T1\(n\sqrtn\)多大你刚好给多大,一点不多给,T2才是签到题,因为放了T2位置打了暴力就去想T3了,我是唐氏,谁让你T1、T2swap的?T3实则三道题。但是还是感觉T1更简单啊,\(5e4\)搁哪儿摆着呢一眼\(O(n\sqrtn)\),甚至空间也是这么多,太明显了。挂分挂......
  • 对于 CF,AT,CSP-S,NOIP,我想说
    尽管我是div2一题水平,但是......
  • CSP-S前总复习
    里面大概有一两个星期吧,挑一些有价值的写。[ABC369F]GatherCoins来补的题目。先考虑不输出方案的写法。排序过后可以用一个DP实现。注意到DP的转移方程只和max有关,所以可以用数据结构优化。排序过后保证横坐标不降,所以只需要对纵坐标开一个树状数组,维护最大值,能做到......