首页 > 其他分享 >[DMY]2024 CSP-S 模拟赛 Day 9

[DMY]2024 CSP-S 模拟赛 Day 9

时间:2024-10-04 14:23:18浏览次数:7  
标签:break ch int T2 back 2024 maxn DMY CSP

T2 调了 1h 没调出来,丢了一坨没分的shi扔了。

我想放一下作为开头:

include <bits/stdc++.h> #define int long long using namespace std; inline int read() { int w=1,s=0;char ch=getchar(); while(!isdigit(ch)){if(ch'-')w=-1;ch=getchar();} while(isdigit(ch)){s=s10+(ch-'0');ch=getchar();} return ws; } const int mod=998244353; const int maxn=3e3+10; const int inf=1e9+7; int n,m; char a[maxn][maxn]; bool hang[maxn],lie[maxn]; bool f[maxn][maxn]; map<string,int> mp; int dfs() { bool can=1; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(!f[i][j]){can=0;break;} if(can){return 0;} string s; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) { if(f[i][j])s=s+'W'; else s=s+a[i][j]; } if(mp[s])return mp[s]; vector hangr,hangb,lier,lieb; for(int i=1;i<=n;i++) { if(hang[i])continue; bool r=1; for(int j=1;j<=m;j++)if(a[i][j]'B'&&!f[i][j]){r=0;break;} if(r)hangr.push_back(i); } for(int i=1;i<=n;i++) { if(hang[i])continue; bool b=1; for(int j=1;j<=m;j++)if(a[i][j]'R'&&!f[i][j]){b=0;break;} if(b)hangb.push_back(i); } for(int i=1;i<=m;i++) { if(lie[i])continue; bool r=1; for(int j=1;j<=n;j++)if(a[j][i]'B'&&!f[j][i]){r=0;break;} if(r)lier.push_back(i); } for(int i=1;i<=m;i++) { if(lie[i])continue; bool b=1; for(int j=1;j<=n;j++)if(a[j][i]'R'&&!f[j][i]){b=0;break;} if(b)lieb.push_back(i); } int res=inf; for(auto i : hangr) { for(int j=1;j<=m;j++) { f[i][j]=1; } hang[i]=1; res=min(res,dfs()+1); for(int j=1;j<=m;j++) { f[i][j]=0; } hang[i]=0; } for(auto i : hangb) { for(int j=1;j<=m;j++) { f[i][j]=1; } hang[i]=1; res=min(res,dfs()+1); for(int j=1;j<=m;j++) { f[i][j]=0; } hang[i]=0; } for(auto i : lier) { for(int j=1;j<=n;j++) { f[j][i]=1; } lie[i]=1; res=min(res,dfs()+1); for(int j=1;j<=n;j++) { f[j][i]=0; } lie[i]=0; } for(auto i : lieb) { for(int j=1;j<=n;j++) { f[j][i]=1; } lie[i]=1; res=min(res,dfs()+1); for(int j=1;j<=n;j++) { f[j][i]=0; } lie[i]=0; } return mp[s]=res; } void Sub1() { int ans=inf; mp.clear(); for(int i=1;i<=n;i++)hang[i]=0; for(int j=1;j<=m;j++)lie[j]=0; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)f[i][j]=0; ans=dfs(); printf("%lld\n",(ansinf?-1:ans)); } void Main() { n=read(),m=read(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } bool f=0; for(int i=1;i<=n;i++){bool ff=1;for(int j=2;j<=m;j++)if(a[i][j]!=a[i][j-1]){ff=0;break;}if(ff)f=1;break;} for(int i=2;i<=m;i++){bool ff=1;for(int j=1;j<=n;j++)if(a[j][i]!=a[j][i-1]){ff=0;break;}if(ff)f=1;break;} if(!f){puts("-1");return ;} Sub1(); } signed main() { #ifdef Lydic freopen(".in", "r", stdin); freopen(".out", "w", stdout); // #else // freopen("mst.in", "r", stdin); // freopen("mst.out", "w", stdout); #endif int T=read(); while(T--)Main(); return 0; }

好了,开始写总结。

赛时

T1 刚刚看出来 \(\mathcal{O}(n^2)\) 的 DP,就发现 AKIG 叕 AK 了,我大惊。

写出来以后发现没挂,于是开始考虑优化。但是我傻傻的一直盯着 DP 的内层循环优化,丝毫没发现这东西能直接找规律构造。

然后最终得分 60pts。

T2 的话看不出来什么东西,想先写一下暴力,然后就有了上面的一大坨东西。

T3 的话感觉是一个很可做的数据结构计数问题,然后纸上推推画画就莫名其妙过掉了大样例。赛时感觉比 T1 简单。(我猜某鸡不会看这篇文章,所以在这里口嗨一下:\(\Large \color{red}{菜}\))

T4 看了一眼,感觉 T2 的分可以拿到,所以决定死盯 T2,然后到最后也没盯出来,使得最基本的暴力分数也没拿到。

赛后

发现我是为数不多过 T3 但是没过 T1 的人,我太菜了。

一听别人的思路就会 T1 了,花了不到 5min 就过了。我更菜了。

现在在订 T2,努力在下个国庆节日期是完全平方数之前订出来(3026.10.01)。

最近的比赛时间不够的问题逐渐显现出来,不知道说明了什么。

写完了,溜了。

标签:break,ch,int,T2,back,2024,maxn,DMY,CSP
From: https://www.cnblogs.com/Lydic/p/18446578

相关文章

  • # 20222423 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1知识回顾本周内容主要通过学习了解到缓冲区溢出攻击的基本原理,同时也复习和加深了对于计算机中有关栈、堆、缓冲区等知识的印象。另外通过动手实践,掌握学习了解了以下知识:基本的汇编语言如(mov、push、pop、call等),弄够理解其基本功能知道esp、eip、ebp等寄存......
  • 【训练记录】2024年莆田市高中信息学奥赛国庆集训CSP-S提高组(第四天场外)
    训练情况rk#1\(100+100+100+100=400\)赛后反思因为满分AK了,就不需要反思了A题显然我们想要选的最多,我们优先选\(a_i\)小的,所以我们对\(a_i\)从小到大排序,再求一个前缀和,再使用二分即可#include<bits/stdc++.h>#defineintlonglongusingnamespaces......
  • 【牛客训练记录】2024牛客国庆集训派对day3
    赛后反思还是只开出来一题TATH题构造一个01矩阵,想要横竖斜三个数都不同,好像方法有很多,我们考虑交错着放010101011010101001010101上面这种长度为\(1\)的01显然不行,因为斜着也算,所以我们考虑构造长度为\(2\)的01,例如00111100这样001100111100110000110011110......
  • 洛谷P10336 [UESTCPC 2024] 2-聚类算法
    涉及知识点:博弈、贪心题意Alice和Bob在玩选点游戏,所有的点在一个\(k\)维空间中,他们轮流选走一个点放入自己的集合中,Alice先手。定义集合\(S\)的权值\(val(S)\)为集合中点两两之间的\(k\)维曼哈顿距离之和。Alice的得分为\(val(S_A)-val(S_B)\),Bob的得分为\(val(......
  • Maven的下载安装(2024最新详细版~)
    1.1、进入Maven的官网地址,下载:Maven–DownloadApacheMaven2.解压安装包到自己的安装目录3.配置环境变量3.1配置到系统Path中3.2验证安装mvn-version4.本地仓库和Settings文件配置4.1、创建自定义仓库,修改settings文件5.AI大模型手册......
  • 20241003
    公交车(bus)显然的题目,答案就是所有连通块的大小减一之和#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e7+5;intn,m,fa[N],sz[N],ans;intfind(intx){if(fa[x]==x){returnx;}returnfa[x]=find......
  • CSP-J/S2024总结
    CSP-J/S2024游记初赛前记今年最后一年J了...希望圆我个2年都没有实现的J一等梦还有希望S考好点期待1=day-1考完不放假,然后月考,高兴坏了day1没什么好说的,行就行,不行就AFO(假CSP-J本来就打算摆烂,所以不慌因为是最后一个考场,只有26人,赢!嗯?开局放int?完辣!组合题放那......
  • 20241003校模拟
    A纪念一下本人在校模拟用线段树优化dp单杀*900。最小和最大没有本质区别,这里只讨论最小的情况。设\(f_i\)表示前缀\(i\)的答案,显然是要枚举\(j\)使得\((j,i]\)合并成一段:\[f_i=\min\bigg(f_j+\lceil\dfrac{s_i-s_j}{x}\rceil\bigg)\]其中\(s_i=\sum_{i......
  • P9752 [CSP-S 2023] 密码锁&&P8814 [CSP-J 2022] 解密
    GutenTag!Schön,dichzusehen!今天也是很懒惰的一天呢!所以今天三合一!题目:[CSP-S2023]密码锁题目描述小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从$0$到$9$的数字。每个拨圈都是从$0$到$9$的循环,即$9$拨动一个位置后可以变成$0$或$8$,因为校园里......
  • CSP-J模拟赛一补题报告
    IAKIOI!!!前言考的最好的一回:240pts首先开T1,45min干掉了然后T2,45min挂了然后T3,40min又挂了然后发呆了一会把T4骗分打了,此时已过去一坤时40minT2切了,最后20min打了T3骗分又发呆了一会T1:100ptsT2:100ptsT3:30ptsT4:10pts《正文》01011010101001010010101011010100011......