当前位置: 首页 > news >正文

2025GDCPC广东省赛游记(附赛时代码)

我觉得算是给swan的自证之旅画上一个句号吧...说实话HDU给我带来的不止是排位上的压力,更多的是对自己能力的怀疑,特别是pluto不明说但是我很清楚的看不起(没有责备本人的意思),evil和jxj之类的总感觉看到我就是看小丑的眼神(我觉得主要是自己自卑所以觉得所有人都讨厌自己),连约饭都没人陪我了呜呜

我感觉全世界都开始怀疑我vp的时候全部都在抄题解,然后cf的分数也是作弊得来的,我不配打acm之类的,这种主要是自己给自己的压力犹如顿刀子割肉般没日没夜的折磨我,被队友抛弃被自己否定

转机就算是南昌吧,你也可以看到南昌结束之后swan疯狂的强调自己的贡献啥的(也跟猫猫道个歉),其实也是希望能像其他人证明自己,说这个铜牌我没有拖后腿云云,总之感觉自己这一个学期都被沟槽的HDU毁了,陷入了一种很恐怖的给自己上压力的恶性循环。直到省赛,所有人同台竞技,然后能打到校内第三的这个位置,我才算是长出一口气,才好意思舔着个脸再去问猫猫或者鸡哥愿不愿意捞我这种事情

emo的回顾到此结束,还是回顾下比赛历程吧,这场我们队真的算是大起大落大起大落,好在最后极限翻盘。比赛前一个比较错误的战略就是让sherlock去写签到去了,然后WA了一发换我重新敲才过了,这个时候我队已经陷入了不小的罚时劣势,此乃一落。然后cmjj的模拟一发过,除了大哥队率先进入两题区,此乃一起。现在签到结束了,两道铜牌题卡住了,被其他几个队快速追上,虽然中间sherlock先过了个H但是在比起铜牌题全出还是差一题,再次掉到银牌岌岌可危的位置。H过的时候一小时出头,然后直到3小时15分钟才终于出了G,但是这个时候的罚时劣势已经巨大,封榜前已经是73名,而银牌线是79名,如果出不了题那银牌都拿不到。在此之前swan的J题还wa了好几发,然后开始研究I,很长时间没有机时的sherlock居然一直在看我的代码(太感动了呜呜),然后找到了错误原因,在封榜之后开敲。而sherlock敲的同时我这边I也找到了正确的容斥方式,两个人就开始抢电脑,最后两个人连续三分钟内连开两题成功跻身六题区(还藏了一手演pluto)

最后说一下参赛环境吧,我们是在广州外语外贸大学的赛点参赛的,虽然主办方的教练们都在群里哭穷,我们对省赛的期望也不是特别高。但是真的是相当出乎意料地优秀的参赛体验,比起去年几十万经费的港科广真的好了不是一点半点,PTA的经典连接不上服务器我觉得可以接受吧,然后麦麦是热的就已经赢了南昌太多,更别说去年某校的减脂三明治了。本来大家以为没有牌子没有滚榜啥的,最后居然是在我们这个赛点线下滚了榜,牌子也说之后会寄到学校,赛时的气球也安排到位了,总之我觉得这算是我人生中第二棒的一次参赛体验了(中大校赛免费参赛还送衣服送杯子送麦麦这个真的是很难超越了),感谢所有为比赛付出的老师,志愿者和后勤工作人员们

然后把代码贴一下吧,签到我没存懒得存

I题

#include <bits/stdc++.h>
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
/*ll mod=1e9+7;
ll N=1e5+10;
ll fact[N],infact[N];
void ini(){fact[0]=infact[0]=1;for(int i=1;i<N;i++){fact[i]=fact[i-1]*i%mod;infact[i]=qpow(fact[i],mod-2);}
}
ll C(lla,ll b){if(a<b) return 0;return fact[a]*infact[b]%mod*infact[a-b]%mod;
}*/void solve(){ll n; scanf("%lld",&n);vector<vector<ll> > cnt(4,vector<ll>(1e6+10,0));map<tuple<ll,ll,ll>,ll> mp;vector<tuple<ll,ll,ll> > qq;for(int i=0;i<n;i++){ll a,b,c; scanf("%lld%lld%lld",&a,&b,&c);cnt[1][a]++; cnt[2][b]++; cnt[3][c]++;mp[{a,0,c}]++; mp[{a,b,0}]++; mp[{0,b,c}]++;qq.push_back({a,b,c});}ll ans=0;for(auto [a,b,c]:qq){// 我在这里考虑的是最后的东西和a,b,c完全一致 ll x=cnt[1][a]-mp[{a,0,c}]-mp[{a,b,0}]+1;ll y=cnt[2][b]-mp[{a,b,0}]-mp[{0,b,c}]+1;ll z=cnt[3][c]-mp[{a,0,c}]-mp[{0,b,c}]+1;ll d=mp[{0,b,c}]-1,f=mp[{a,0,c}]-1,e=mp[{a,b,0}]-1;//printf("%lld %lld %lld %lld %lld %lld ",x,y,z,d,e,f);//printf("add %lld ",x*y+y*z+x*z);//printf("add %lld ",(d+e+f)*(d+e+f-1)/2);//printf("add %lld\n",(a+b+c)*(d+e+f));//printf("add %lld\n",x*y+y*z+x*z+(d+e+f)*(d+e+f-1)/2+(a+b+c)*(d+e+f));ans+=x*y+y*z+x*z+(d+e+f)*(d+e+f-1)/2+(x+y+z)*(d+e+f);}printf("%lld\n",ans);
}int main(){int T=1;//scanf("%d",&T);while(T--){solve();}return 0;
}

J题

#include<bits/stdc++.h>using namespace std;
#define int long long 
const int N=1e6+10;
const int MOD = 998244353;int qpow(int num,int k)
{int res = 1;while(k){if(k % 2) res = res * num;num = num * num;k = k >> 1ll;}return res;
}int a[N];
int e[N],ne[N],h[N],w[N];
int idx;
int ans[N];struct Node
{int time;int tar;int val;bool operator < (const Node &other) const {return time > other.time;	}
};void add(int x,int y,int z)
{e[++idx] = y, ne[idx] = h[x] , h[x] = idx,w[idx] = z;
}void solve()
{int n,m,k;cin>>n>>m>>k;for(int i=1;i<=n;i++) cin>>a[i],ans[i] = MOD * MOD;//cout<<n<<"\n";priority_queue< Node , vector<Node> >q;for(int i=1;i<=k;i++){int t,num;cin>>t>>num;for(int j=1;j<=num;j++) {int x;cin>>x;q.push({t,x,0});}}for(int i=1;i<=m;i++){int x,y,z;cin>>x>>y>>z;add(x,y,z);}for(int i=1;i<=n;i++){if(a[i] == 0){//cout<<i<<"\n";ans[i]=0;for(int j=h[i];j;j=ne[j]){q.push({w[j],e[j],1});}}}while(!q.empty()){auto [time,index,val] = q.top();//cout<<time<<" "<<index<<" "<<val<<"\n";q.pop();if(a[index] == 0) continue;if(val == 1) a[index] --;if(val == 0) a[index] = 0;if(a[index] == 0){ans[index] = time;for(int i=h[index];i;i=ne[i]){int son = e[i];if(a[son]!=0){q.push({time+w[i],son,1});}}}}//cout<<n<<"\n";for(int i=1;i<=n;i++){if(ans[i] == MOD * MOD) cout<<-1<<" ";else cout<<ans[i]<<" ";}
}signed main()
{int t=1;//cin>>t;while(t--){solve();}
}

F题

#include <bits/stdc++.h>
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
void solve(){ll n,m,t;cin>>n>>m>>t;ll k;cin>>k;ll tn=0,ttime=0;map<char,ll> mp,cnt;priority_queue<ll,vector<ll>,greater<ll> > qu;for(ll i=1;i<=k;i++){ll tt;char c;string str;cin>>tt>>c>>str;if(cnt[c]) continue;if(str=="ac"){ttime+=(tt+mp[c]*20);tn++;cnt[c]=1;}if(str=="rj"){mp[c]++;}if(str=="pd"){cnt[c]=1;qu.push(tt+mp[c]*20);//cout<<"qu push "<<tt+mp[c]*20<<" "<<c<<"\n";}}if(tn>m||tn==m&&ttime<t){cout<<"0"<<"\n";return ;}//cout<<tn<<" "<<ttime<<"\n\n";ll g=0;while(!qu.empty()){g++;tn++;ll tp=qu.top();//cout<<"top:"<<tp; ttime+=tp;qu.pop();//cout<<" "<<tn<<" "<<ttime<<"\n";if(tn>m||tn==m&&ttime<t){cout<<g<<"\n";return ;}}cout<<"-1"<<"\n";return ;
}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T=1;cin>>T;while(T--){solve();}return 0;
}

H题

#include<bits/stdc++.h>using namespace std;
#define int long long 
const int N=1e6+10;
const int MOD = 998244353;int qpow(int num,int k)
{int res = 1;while(k){if(k % 2) res = res * num;num = num * num;k = k >> 1ll;}return res;
}int sum[30];
int a[N];
int dp[30];void solve()
{int n,k;cin>>n>>k;string s;cin>>s;for(int i=0;i<n;i++){int now = s[i] - 'a';int num = 1;for(int j=0;j<26;j++){num = (num + sum[j]) % MOD;}num = (num - dp[now] + MOD) % MOD;dp[now] = (dp[now] + num) % MOD;//cout<<i<<" "<<num<<"\n";a[i] = num;if(i >= k) sum[s[i-k]-'a'] = (sum[s[i-k]-'a'] + a[i-k]) % MOD;}int res =0;for(int i=0;i<26;i++) res = (res + dp[i]) % MOD,sum[i]=0,dp[i]=0;cout<<res<<"\n";
}signed main()
{int t=1;cin>>t;while(t--){solve();}
}

D题

#include<bits/stdc++.h>using namespace std;
#define int long long 
const int N=1e6+10;
const int MOD = 998244353;int qpow(int num,int k)
{int res = 1;while(k){if(k % 2) res = res * num;num = num * num;k = k >> 1ll;}return res;
}int dp[N];
int a[N];
int ask[N];void solve()
{int n,m;cin>>n>>m;map<int,int>mp;for(int i=1;i<=n;i++) cin>>a[i],dp[a[i]]=1;int now = 0;int maxvalue=0;for(int i=1;i<=a[n];i++)	{if(now +1 <= n && i == a[now+1]) now++;dp[i] = dp[i - a[now]] + dp[a[now]];mp[dp[i]]++;maxvalue = max(maxvalue,dp[i]);//cout<<i<<" "<<dp[i]<<"\n";}//for(int i=1;i<=maxvalue;i++) cout<<mp[i]<<"\n";for(int i=2;i<=maxvalue;i++) mp[i] += mp[i-1];for(int i=1;i<=m;i++) cin>>ask[i];for(int i=1;i<=m;i++){if(ask[i]<=maxvalue) cout<<mp[ask[i]]<<" ";else cout<<mp[maxvalue]<<" ";}
}signed main()
{int t=1;//cin>>t;while(t--){solve();}
}

http://www.xdnf.cn/news/767575.html

相关文章:

  • 【Spring】RAG 知识库基础
  • Docker 镜像制作
  • 【Redis】Zset 有序集合
  • .net consul服务注册与发现
  • 描述性统计——让数据说话
  • Figma 与 Cursor 深度集成的完整解决方案
  • 【数据分析】第四章 pandas简介(1)
  • Caliper压力测试
  • mac安装brew时macos无法信任ruby的解决方法
  • 智慧零工平台后端开发实战:Spring Boot 3 + MyBatis-Flex 现代化架构
  • Linux中的mysql备份与恢复
  • Unity + HybirdCLR热更新 入门篇
  • GStreamer开发笔记(六):gstreamer基本概念:组件、箱柜、管道、衬垫、链接组件
  • 【端午安康】龙舟争渡Plug-In
  • 计算机组成原理核心剖析:CPU、存储、I/O 与总线系统全解
  • 空调清洗教程
  • Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)
  • 20250602在Ubuntu20.04.6下修改压缩包的日期和时间
  • 分布式锁优化:使用Lua脚本保证释放锁的原子性问题
  • SQL进阶之旅 Day 12:分组聚合与HAVING高效应用
  • 微服务-Sentinel
  • Oracle expdp过滤部分表数据
  • vue-12 (路由守卫:全局、每个路由和组件内)
  • 【Unity】相机 Cameras
  • 项目管理进阶:56页大型IT项目管理实践经验分享【附全文阅读】
  • 数据库系统概论(十四)详细讲解SQL中空值的处理
  • Leetcode 2123. 使矩阵中的 1 互不相邻的最小操作数
  • 数据结构之堆:解析与应用
  • 高阶数据结构——并查集
  • vscode 插件 eslint, 检查 js 语法