• 洛谷 P5594 【XR-4】模拟赛


    洛谷 P5594 【XR-4】模拟赛

    思路

    这是一道真·水题,会模拟就好了

    (subtask1):

    (n = m = k = 1),很明显,这个部分分的答案就是(1),然后我们就顺利得到了(13)分的好成绩

    后面的分数……似乎没有什么必要有,反正我是直接写的满分。那么我们来说一下满分思路

    既然每个人在之后的(k)天中都有(m)天有空做模拟题,那我们就用一个结构体存第几天有空和第几套模拟题,如下

    struct node {
    	int x, num;
        //x表示输入的编号,即第几天有空,num表示这一天应该做哪一套模拟题
    }a[N][N];
    

    然后(n^2)输入之后我们就可以直接处理了,我们用一个(vis)数组,(vis[i][j])表示第(i)天第(j)套模拟题有没有用过,直接套两层循环,判断(a[i][j].x)这天(a[i][j].num)这套模拟题有没有用过,如果没有用过,就将(vis[a[i][j].x][a[i][j].num])设为访问过,让(ans[i]++),如果已经这天这套模拟题已经用过了就直接继续循环,时间复杂度(O(n^2)),空间复杂度(O(n^2)),然后这个题我们就做完了

    是不是很水??上代码(qwq)

    代码

    /*
    By:Loceaner
    */
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    using namespace std;
    
    inline int read() {
    	char c = getchar();
    	int x = 0, f = 1;
    	for( ; !isdigit(c); c = getchar()) if(c == '-') f = -1;
    	for( ; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + (c ^ 48);
    	return x * f;
    }
    
    const int N = 1e3 + 11;
    
    struct node {
    	int x, num;
    } a[N][N];
    
    int n, m, k, ans[N], vis[N][N];
    
    int main() {
    	n = read(), m = read(), k = read();
    	for(int i = 1; i <= n; i++)
    		for(int j = 1; j <= m; j++) {
    			a[i][j].x = read();
    			a[i][j].num = j;
    		}
    	for(int i = 1; i <= n; i++) 
    		for(int j = 1; j <= m; j++) 
    			if(!vis[a[i][j].x][a[i][j].num]) {
    				vis[a[i][j].x][a[i][j].num] = 1;
    				ans[a[i][j].x]++;
    			}
    	for(int i = 1; i <= k; i++) printf("%d ", ans[i]);
    	return 0;
    }
    
  • 相关阅读:
    echarts属性杂记
    vue工作问题小计
    vue 表单数据修改,导致页面列表数据被同步修改问题的解决。
    利用syslog记录日志的简单日志函数
    1 概述
    PowerDesigner 如何自定义Data Type
    Mybatisplus读取(GeoJson)和保存Postgis geography数据
    【Mybatis】model类通过注解忽略某属性
    如何利用PostGIS正确计算距离和面积
    Linux上编写监控jar包重启脚本
  • 原文地址:https://www.cnblogs.com/loceaner/p/11711323.html
Copyright © 2020-2023  润新知