8月5日CSP-S模拟赛赛后总结

\[8月5日 \ \ CSP-S模拟赛 \ \ 赛后总结 \\ 2024年8月5日 \\ by \ \ \ uhw177po
\]

一、做题情况

  • 第一题比赛 \(100pts\) ,赛后 \(AC\)

  • 第二题比赛 \(20pts\) ,赛后 \(AC\)

  • 第三题比赛 \(0(40)pts\) ,赛后 \(AC\)

  • 第四题比赛 \(0(50)pts\) ,赛后 \(AC\)

  • 比赛得分 \(120(210)/400 \ pts\) ,赛后补题 \(400 / 400 \ pts\)

二、比赛概况

等一下说一说我为什么要加括号。

这次键盘感觉不太舒服。

把大数据解压后,打开 pdf 文件,总览一遍,T1竟然一遍没思路,再看T2、T3、T4,更没思路了。只好做T1,仔细看,模拟了一遍,突然想到思路了,这不就是二路归并吗,马上做完 \(AC\)。T2当时脑子混了,模拟没写出,骗了个分,预期 \(20pts\)。T3想了好久也不会,只好骗分 \(40pts\)(部分分给得挺高),T4花了20 min读题,有点读不懂,最终还是模拟样例读懂,写了个暴力,\(50pts\) 完美收场。

(现在说加括号的原因,赛后前15 min正准备收场,结果不幸被 XX 给把文件搞混了,导致T3、T4 \(0pts\) 悲)

三、题解报告

8月5日模拟赛题目

T1:

做法:

上文说了,是 二路归并,其实就是模拟,模拟一下结果就出来了。

附:AC代码

#include <bits/stdc++.h>
#define int long long
using namespace std ;
int n , m , l , r , a [100010] , mp [100010] , b [100010] , c [100010] , tot , cnt ;
signed main () {
ios::sync_with_stdio (false) ;
cin.tie (NULL) ; cout.tie (NULL) ;
freopen ("seq.in" , "r" , stdin) ;
freopen ("seq.out" , "w" , stdout) ;
cin >> n >> m ;
for (int i = 1 ; i <= m ; i ++) cin >> a [i] , mp [a [i]] ++ ;
for (int i = 1 ; i <= n ; i ++)
if (! mp [i]) b [++ tot] = i ;
l = r = 1 ;
while (l <= m && r <= tot) {
while (a [l] < b [r] && l <= m) {
c [++ cnt] = a [l] ;
l ++ ;
}
c [++ cnt] = b [r] ; r ++ ;
}
while (l <= m) c [++ cnt] = a [l ++] ;
while (r <= tot) c [++ cnt] = b [r ++] ;
for (int i = 1 ; i <= cnt ; i ++) cout << c [i] << "\n" ;
return 0 ;
} /*
菜就多练
f**k €€£
€€£梨马4了
5 3
1 4 2 5 3
1 2 5
3 4
1 2 3 4 5
*/

T2:

做法:

没想到也是模拟。自己弄一个栈,判断是' (' 还是 ')' ,进行模拟,就行了。

附:AC代码

#include <bits/stdc++.h>
#define int long long
#pragma G++ optimize (2)
#pragma G++ optimize (3)
using namespace std ;
int n , k , ans , t ;
char a [1000010] ;
signed main () {
ios::sync_with_stdio (false) ;
cin.tie (NULL) ; cout.tie (NULL) ;
freopen ("bracket.in" , "r" , stdin) ;
freopen ("bracket.out" , "w" , stdout) ;
cin >> n >> k >> a + 1 ;
for (int i = 1 ; i <= n ; i ++) {
if (a [i] == '(') {
if (t == k) t -- , ans ++ ;
else t ++ ;
}
else {
if (t == 0) t ++ , ans ++ ;
else t -- ;
}
}
cout << ans ;
return 0 ;
}

T3:

做法:

这道就是 背包 再加一点 贪心,按 \(p_i\) 排列,然后就是一道 背包 了。

附:AC代码

#include <bits/stdc++.h>
#define int long long
#pragma G++ optimize (2)
#pragma G++ optimize (3)
using namespace std ;
const int N = 1e5 + 10 ;
int n , k , ans , dp [N] ;
struct node {
int x , y ;
} a [N] ;
bool cmp (node q , node h) {
return q.y > h.y ;
}
signed main () {
ios::sync_with_stdio (false) ;
cin.tie (NULL) ; cout.tie (NULL) ;
freopen ("work.in" , "r" , stdin) ;
freopen ("work.out" , "w" , stdout) ;
/*
fu*k €€£,€€£梨马4了,money++
*/
cin >> n >> k ;
for (int i = 1 ; i <= n ; i ++) cin >> a [i].x ;
for (int i = 1 ; i <= n ; i ++) cin >> a [i].y ;
sort (a + 1 , a + 1 + n , cmp) ;
memset (dp , 31 , sizeof (dp)) ; dp [0] = 0 ;
for (int i = 1 ; i <= n ; i ++)
for (int j = 2e3 ; j >= 1 ; j --)
dp [j] = min (dp [j] , dp [j - 1] + a [i].x + a [i].y * (j - 1)) ;
for (int i = 2e3 ; i >= 1 ; i --)
if (dp [i] <= k) {
cout << i ; break ;
}
return 0 ;
}

T4:

做法:

观察发现,使得答案非零的结构一定是,一个团外面挂一些点,然后团外的点之间几乎

没有边。

考虑先求出图中的这个团。

每次删度数最小的点 \(x\),直到剩下的点度数都相同即可,可以用set维护。

附:AC代码

#include <bits/stdc++.h>
using namespace std;
int n, deg[200005], tp[200005], m;
bool vis[200005];
vector<int> g[200005];
set<pair<int, int>> s;
signed main()
{
freopen("clique.in", "r", stdin);
freopen("clique.out", "w", stdout);
ios::sync_with_stdio(0), cin.tie(nullptr);
cin >> n >> m;
for (int i = 1, k, t; i <= m; i++)
{
cin >> k >> t;
g[k].push_back(t);
deg[k]++, deg[t]++;
g[t].push_back(k);
}
for (int i = 1; i <= n; i++)
s.insert({tp[i] = deg[i], i});
while (s.begin()->first != prev(s.end())->first)
{
int u = s.begin()->second;
vis[u] = true;
s.erase(s.begin());
for (auto v : g[u])
{
if (vis[v])
cout << 0, exit(0);
s.erase({tp[v], v});
tp[v]--;
s.insert({tp[v], v});
}
}
int ans = 1;
for (auto v : s)
{
if (deg[v.second] == (int)s.size() - 1)
ans++;
int u = v.second;
for (auto vv : g[u])
{
if (!vis[vv])
continue;
if (deg[vv] == s.size())
ans++;
}
for (int i = 1; i <= n; i++)
{
if (vis[i])
if (deg[i] == deg[u])
ans++;
}
}
cout << ans;
}

四、赛后总结

这把还是比较满意的,知道了暴力出奇迹,要拿稳,在这些时间内拿最高的分。

(最后一个晚上,祭)

8月5日CSP-S模拟赛赛后总结的更多相关文章

  1. 纪中21日c组模拟赛

    AWSL  AWSL  AWSL  AWSL AWSL  AWSL  AWSL  AWSL AWSL  AWSL  AWSL  AWSL AWSL  AWSL  AWSL  AWSL 题解传送 T1  ...

  2. 纪中20日c组模拟赛T1 2121. 简单游戏

    T1 2121. 简单游戏 (File IO): input:easy.in output:easy.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 Goto Pro ...

  3. 纪中20日c组模拟赛

    赛后感想 多写点东西总是好的,但是在最后,算法就不要改动了(就这样我少了10分) 题解 T1 2121. 简单游戏 T2 2122. 幸运票

  4. 纪中18日c组模拟赛

    T2 GMOJ2127. 电子表格 (File IO): input:excel.in output:excel.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   ...

  5. [luogu#2019/03/10模拟赛][LnOI2019]长脖子鹿省选模拟赛赛后总结

    t1-快速多项式变换(FPT) 题解 看到这个\(f(x)=a_0+a_1x+a_2x^2+a_3x^3+ \cdots + a_nx^n\)式子,我们会想到我们学习进制转换中学到的,那么我们就只需要 ...

  6. 【CYH-02】noip2018数论模拟赛:赛后题解

    1.小奔的矩阵 2.大奔的方案 3.小奔与不等四边形 4.小奔的方案 当然本次比赛肯定难度不会仅限于此啦!后续还会--

  7. [OI笔记]NOIP2017前(退役前)模拟赛的总结

    好久没写blog了- 在noip2017前的最后几天,也就是在我可能将要AFO的前几天写点东西吧- 记录这最后几个月打的那些大大小小的模拟赛 一些比赛由于不允许公开所以就没有贴链接跟题面了- 2017 ...

  8. FJoi2017 1月20日模拟赛 恐狼后卫(口糊动规)

    Problem 1 恐狼后卫(wolf.cpp/c/pas) [题目描述] 著名卡牌游戏<石炉传说>中有一张随从牌:恐狼后卫.恐狼后卫的能力是使得相邻随从的攻击力提高. 现在有n张恐狼后卫 ...

  9. 【GDOI2014模拟】JZOJ2020年8月14日提高组 服务器

    [GDOI2014模拟]JZOJ2020年8月14日提高组 服务器 题目 Time and Memory Limits Description 我们需要将一个文件复制到n个服务器上,这些服务器的编号为 ...

  10. 【GDOI2014模拟】JZOJ2020年8月14日T2 网格

    [GDOI2014模拟]JZOJ2020年8月14日T2 网格 题目 Time and Memory Limits Description 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标 ...

随机推荐

  1. linux命令查看内存命令free -h whereis locate find查找命令

    linux命令查看内存命令free -h  whereis locate find查找命令 1.free -h root@hz-auto-eureka-test-03:/usr/local/tomca ...

  2. TCP,UDP,IP,数据链路层头部详解

    UDP头部 可以看到UDP头部由(源端口).(目的端口).(长度)跟(校验和)组成,总共8字节. 源端口:发送方的端口号,16位,即2字节. 目的端口:接收方的端口号,16位,即2字节. 长度:头部+ ...

  3. Kubernetes(一)Overview

    1. Kubernetes介绍 要了解Kubernetes,首先我们需要了解Container与Orchestration. Docker Docker的出现是为了解决:部署依赖.以及兼容性.以及繁琐 ...

  4. Linux 内核:RCU机制与使用

    Linux 内核:RCU机制与使用 背景 学习Linux源码的时候,发现很多熟悉的数据结构多了__rcu后缀,因此了解了一下这些内容. 介绍 RCU(Read-Copy Update)是数据同步的一种 ...

  5. B码对时方案,基于TI AM62x异构多核工业处理器实现!

    什么是IRIG-B码对时 IRIG-B(inter-range instrumentationgroup-B)码是一种时间同步标准,通常用于精确的时间测量和数据同步,广泛应用于电力.通信.航空等领域. ...

  6. 第一个Vert.x程序(基于Gradle7)

    这里跑一下Vert.x中文站的入门程序(以后就不写那个点了,或者干脆写vx)简易教程.这个程序非常简单,为啥还写一下呢?因为里面的依赖有点老,已经不能直接成功启动了. 搭建项目 通过IDEA创建Gra ...

  7. 解决react native打包apk文件安装好之后进入应用闪退的问题

    这个是我一个前端前辈帮我弄的,自己解决的时候不行,她去官网找了相关的问题,然后发给我的. react-native android 的release安装包运行闪退,但是debug运行正常 环境:0.6 ...

  8. 入门到精通rsync和inotify

    rsync 作用: 实现文件的备份 备份位置可以是当前主机,也可以是远程主机 备份过程可以是完全备份,也可以是增量备份 功能: 1)类似于cp的复制功能 将本地主机的一个文件复制到另一个位置下 2)将 ...

  9. 华为matebook 14s笔记本,Chrome浏览器开启硬件加速,屏幕闪屏,黑框,页面屏幕卡死,解决办法

    解决办法使用了 https://zhuanlan.zhihu.com/p/644296061 这个连接下的最后一个折中办法解决! 一.现象 Chrome开启"硬件加速模式"后,在观 ...

  10. 我出一道面试题,看看你能拿 3k 还是 30k!

    大家好,我是程序员鱼皮.欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k).初级(10k).中级(15k)还是 ...