首页 > 其他分享 >【真题研究】春季测试 2023

【真题研究】春季测试 2023

时间:2024-10-04 20:49:10浏览次数:6  
标签:ch cout 真题 int rint 复杂度 春季 2023 define

T1.涂色游戏(paint)

可以按照题意模拟,每一次暴力对于每一行列染色,时间复杂度 \(O(qn)\)。可得60pts。

因为颜色可以覆盖,某一格的颜色往往取决于最后一次被染到的颜色。

于是我们采用打标记的方式。每一次染色(行或列)就在当前行列打标记,记操作时间戳 \(t\)。

最后输出答案时枚举每一格,比较当前行列的时间戳 \(t\),\(t\) 更大的标记对应的颜色就是覆盖的颜色。

时间复杂度 \(O(q+nm)\),100pts。

点击查看代码
#include<bits/stdc++.h>
#define int long long 
#define rint register int 
#define For(i,l,r) for(rint i=l;i<=r;++i)
#define FOR(i,r,l) for(rint i=r;i>=l;--i)
using namespace std;

inline int read() {
  rint x=0,f=1;char ch=getchar();
  while(ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
  while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
  return x*f;
} 

const int N = 1e6 + 5;

struct Node {
  int id, c;
} Ansh[N], Ansl[N];

int n, m, T, q;

void init() {
  For(i,1,n) {
    For(j,1,m) {
      Ansh[i] = (Node) {0, 0};
      Ansl[j] = (Node) {0, 0};
    } 
  } 
}

signed main() {
  T = read();
  while(T--) {
    n = read(), m = read(), q = read();
    init();
    For(l,1,q) {
      int op = read(), x = read(), c = read();
      if(op == 0) {
        Ansh[x] = (Node) {l, c};
      } else {
        Ansl[x] = (Node) {l, c};
      }
    }
    For(i,1,n) {
      For(j,1,m) {
        if(j != m) {
          if(Ansh[i].id > Ansl[j].id) {
            cout << Ansh[i].c << ' ';
          } else {
            cout << Ansl[j].c << ' ';
          }
        }
        else {
          if(Ansh[i].id > Ansl[j].id) {
            cout << Ansh[i].c;
          } else {
            cout << Ansl[j].c;
          } 
        }
      }
      cout << endl;
    }
  }
  return 0;
}

T2.幂次(power)

  • \(k=1\)

答案显然就是 \(n\)。

  • \(k\geq 3\)

注意到,若 \(x\) 质因数分解后满足 \(p_1p_2p_3...p_m\) 的形式,则将答案在 \(x\) 时记下不会记重。

枚举底数 \(a\),时间复杂度显然在 \(O(n^{\frac{1}{3}})\) 阶内。然后暴力枚举指数 \(b\),并打标记防止记重(标记数组用 map 存)。统计记录下个数。

这样时间复杂度 \(O(n^{\frac{1}{3}}\log n)\),可以接受。45pts。

  • \(k=2\)

相当于在 \(k\ge 3\) 的基础上多加了一堆完全平方数。

已知所有 \(\le n\) 的完全平方数的数量为 \(\left\lfloor \sqrt n \right\rfloor\)。但是直接加上会记重,原因是那些 \(k \ge 3\) 中的方案里也有完全平方数,比如 \(4^3=8^2=64\)。于是你只要记下那些 \(k \ge 3\) 中的方案的完全平方数的个数,容斥掉就可以了。

总时间复杂度还是 \(O(n^{\frac{1}{3}}\log n)\)。100pts。

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define rint register int 
#define For(i,l,r) for(rint i=l;i<=r;++i)
#define FOR(i,r,l) for(rint i=r;i>=l;--i)

using namespace std;

int n, k, ans, und;

map<int, bool> vis;

int qpow(int a, int b) {
  int res = 1;
  for (; b; b >>= 1, a = a * a) {
    if(b & 1) res = res * a;
  }
  return res;
}

signed main() {
  cin >> n >> k;
  if(k == 1) cout << n << '\n';
  else if(k >= 2){
    for (int i = 2; i * i * i <= n; ++i) {
      for (int j = i * i, kk = 2; ; ) {
        if(j > n/i) break;
        j *= i, kk++;
        if(kk < k) continue;
        if(vis[j]) continue;
        vis[j] = 1;
        ans++;
        if((int)sqrtl(j)*sqrtl(j) == j) und++;
      }
    }
    if(k >= 3) cout << ans+1 << '\n';
    else cout << (int)sqrtl(n) + ans - und << '\n';
  }  
  return 0;
}

标签:ch,cout,真题,int,rint,复杂度,春季,2023,define
From: https://www.cnblogs.com/Daniel-yao/p/18447240

相关文章

  • [CSP-J 2023] 小苹果(apple)-----------用数组
    1#include<iostream>2usingnamespacestd;3intmain(){4intn,m;5cin>>n>>m;6intg=n,t=0,li,s[n+1],b;7for(inti=1;i<=n;i++){8s[i]=i;9}10while(g){11t+=1,b=0,li=0,g-=(g+......
  • 【极客大挑战2023】- Re -点击就送的逆向题 WriteUp
    这道题给了一个.s文件解决方案有两个:1.利用gcc编译成可执行文件,然后反编译生成伪代码2.直接分析汇编(我不会。。。)1.利用gcc编译成可执行文件linux执行gcc-o1.s1IDA打开,分析并编写,注意一定要在字符串末尾加上\0结束符!!!点击查看代码#include<stdio.h>intmain(void){......
  • 2023ICPC 沈阳
    赛时5题xixike仍然是平衡树大神。gxd仍然是计数大神。而我签了三个到下班。c题签到,略J:结论题E:bfs的一个dp,第一次写写了比较久K:xixike平衡树过的。赛后补题的时候我先是写了一个双log动态开点权值线段树,然后别人教我线段树二分到了单log。但是直接离散化不动态开点的......
  • 【极客大挑战2023】RE方向 WriteUp
    1.砍树下载题目得到一个apk文件,jadx打开,查看Android.Manifest.xml查看MainActivity发现使用了一个I0o0I处理了输入和Syclover,猜测应该是对text处理后与Syclover对比,当result赋值为1就成功了。故查看I0o0I发现I0o0I再so文件中,故查看libezreeeee.so文件IDA打开,查找I0o0I生......
  • 华为OD机试真题---整数对最小和
    题目描述给定两个整数数组array1和array2,数组元素按升序排列。假设从array1和array2中分别取出一个元素可构成一对元素。现在需要取出K个元素对(即从两个数组中各取一个元素组成一个对,共取K个这样的对),并对取出的所有元素求和,计算和的最小值。注意:两对元素如果对应于array1和......
  • 华为OD机试真题---第k个排列
    针对华为OD机试真题中的“第k个排列”问题,以下是对题目的详细解析及解答方法:题目描述给定参数n,从1到n会有n个整数:1,2,3,…,n。这n个数字共有n!种排列。按大小顺序升序列出所有排列的情况,并一一标记。给定n和k,返回第k个排列。输入与输出输入:第一行为n,给定n的范围是......
  • P9752 [CSP-S 2023] 密码锁&&P8814 [CSP-J 2022] 解密
    GutenTag!Schön,dichzusehen!今天也是很懒惰的一天呢!所以今天三合一!题目:[CSP-S2023]密码锁题目描述小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从$0$到$9$的数字。每个拨圈都是从$0$到$9$的循环,即$9$拨动一个位置后可以变成$0$或$8$,因为校园里......
  • 2023-12-15 博士挑战--达成 113823
    目录现状改进未来现状这个世界最神奇的,莫过于永远都有意外,第二步以和平的地方式提前达成了。1.意外一:迫于各种压力(我的态度、项目进度、其他学者进展、外界评价),导师已于上周开始给师姐改论文并尽快投出去。这结局是最好的,只是有点过早。2.意外二:没想到师妹论文写得太不勤快了,......
  • 2023-12-15 博士挑战--落幕 123744
    目录总纲现状反思未来总纲宇宙万物、世间一切自有因果。自助者天助,然若不自助,神明亦爱莫能助。人的好坏定义并非从言行举止来衡量,而是有无执着。现状老师不再执着于己见--要求他的所有学生都成为有声望的学者。我目前一切都好,正在做想做的理论方向且成就感满满,工资上涨,......
  • 2023-12-15 博士挑战--不完美达成 122918
    目录总纲现状反思未来总纲宇宙万物、世间一切自有因果。自助者天助,然若不自助,神明亦爱莫能助。人的好坏定义并非从言行举止来衡量,而是有无执着。现状老师也不会再强烈要求我们小组每个人都成为顶尖科学家了,也不会执着于己见了。我目前一切都好,正在做想做的理论方向且成......