2026 团体程序设计天梯赛 游记 254分 个人国一 后附所有题目代码(后两题骗分)
凌晨睡不着呀 洛克王国启动 抓了抓赛季限定的精灵
五点半睡,十点半醒
天梯赛
去拍照片,拍完后和高康嘉去万达吃了 KFC,还是牛肉汉堡好吃 吃完一下午有力气
十二点多回学校了,要等好长时间。和他们打了打扑克,到比赛前十分钟才结束
开始!
20 分钟左右做完了L1 1-7,L1-8 有点没写好,写了将近 20 分钟才
看了看榜单,大家基本都是顺序做题,说明前面应该没有什么难度不合理的题
50 分钟左右做完了 L2
这次的 L2 整体偏简单吧,直接模拟就好了。
两个树的题,也没什么其他东西,顺着题意去做就可以
做到 L3 还剩一小时,先看了看题看了看榜单
大家基本都是顺着做的
L3-1 一看就是模拟的那种,看上去很不是很好写但是可做
3-2 和 3-3 一看就是很复杂的算法题,最后看群里说 3-2 是网络流,3-3 是基环树 DP
先去写了 3-1,因为有一个不好写的预期,所以实际写代码的时候还好。写了半小时左右
开始看 3-2,感觉有个思路,但是细想发现不对,试着去想贪心,二分,DP但都没什么思路
写了个假做法骗到了 14 分
看了看 3-3,一眼不可做,写了个 DFS 骗了 10 分
此时离结束还差 10 分钟,254分
一看在国一线的上面,高了两分
忐忑的等了几分钟,发现线没有变化。
结束!
因为提前知道了国一,所以刚结束的时候没什么感觉
但是从教学楼出来之后,春天的微风吹在脸上 不热不冷的温度 晴朗的天空
这时候才后知后觉发现好爽 国一诶
虽然是天梯赛 但还是很爽
可能上周在 icpc 赛场上丢失的气运回来了
最后一次天梯赛拿到了个人国一
希望在后续的 icpc 西安和南昌能拿到银牌吧 会银吗会银的
晚上去吃了火锅
做到火锅店的时候才感觉好累 甚至吃饭的力气和胃口都没有了
晚上又加餐了一根巧乐兹
好困 作息居然要调回来了
L1-1
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
cout<<"Building the Future, One Line of Code at a Time.";
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L1-2
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int n;
cin>>n;
cout<<n*15;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L1-3
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int a,b;
cin>>a>>b;
int val=b-a;
cout<<val<<endl;
if(val<0){
cout<<"hai sheng ma?";
}
else if(val<=250){
cout<<"nin tai cong ming le!";
}
else{
cout<<"jiu ting tu ran de...";
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L1-4
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int n;
cin>>n;
int cnt=0;
for(int i=1;i<=n;i++){
int val;
cin>>val;
cnt+=(val<1700);
}
cout<<cnt;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L1-5
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int n;
cin>>n;
map<int,int> mp;
set<int> st;
for(int i=1;i<=n;i++){
int id,ch;
cin>>id>>ch;
mp[id]+=ch;
}
for(auto [x,y]:mp){
if(y==0){
st.insert(x);
}
}
if(st.size()==0){
cout<<"NONE";
return;
}
cout<<*st.begin();
st.erase(st.begin());
for(auto val:st){
cout<<" "<<val;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L1-6
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
for(int i=1;i<=11;i++){
string s;
getline(cin,s);
cout<<s.size();
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L1-7
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int n;
cin>>n;
vector<int> a(n+1);
for(int i=1;i<=n;i++){
cin>>a[i];
}
int sum=accumulate(a.begin()+1,a.end(),0ll);
cout<<*max_element(a.begin()+1,a.end())<<" ";
cout<<*min_element(a.begin()+1,a.end())<<" ";
cout<<sum/n<<"\n";
vector<int> ans;
for(int i=1;i<=n;i++){
if(a[i]>(sum/n)*2){
ans.push_back(i);
}
}
if(ans.size()==0){
cout<<"Normal";
return;
}
for(int i=0;i<ans.size()-1;i++){
cout<<ans[i]<<" ";
}
cout<<ans.back();
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L1-8
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int q;
string s;
cin>>q>>s;
auto check=[&](int idx,string t)-> bool {
int j=0,i=idx;
for(i=idx,j=0;i<s.size() && j<t.size();i++,j++){
if(s[i]!=t[j]) return 0;
}
if(j!=t.size()){
return 0;
}
return 1;
};
while(q--){
int ch,l,r,p;
string st;
cin>>ch;
if(ch==1){
cin>>st;
vector<int> ans;
for(int i=0;i<s.size();i++){
if(check(i,st)){
ans.push_back(i);
if(ans.size()==3) break;
}
}
if(ans.size()==0) cout<<-1<<endl;
else{
for(int i=0;i<ans.size()-1;i++) cout<<ans[i]<<" ";
cout<<ans.back()<<endl;
}
}
else if(ch==2){
cin>>p>>st;
string tmp;
for(int i=0;i<p;i++){
tmp.push_back(s[i]);
}
tmp+=st;
for(int i=p;i<s.size();i++){
tmp.push_back(s[i]);
}
s=tmp;
cout<<s<<endl;
}
else{
int l,r;
cin>>l>>r;
string tmp;
for(int i=0;i<l;i++){
tmp.push_back(s[i]);
}
for(int i=r;i>=l;i--){
tmp.push_back(s[i]);
}
for(int i=r+1;i<s.size();i++){
tmp.push_back(s[i]);
}
cout<<tmp<<endl;
s=tmp;
}
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L2-1
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
void solve(){
int n,t;
cin>>n>>t;
vector<pii> a(n+1);
vector<int> ans;
for(int i=1;i<=n;i++){
cin>>a[i].first;
a[i].second=i;
}
int cnt=0;
while(ans.size()<n){
cnt++;
int sum=0;
for(int i=1;i<=n;i++){
if(a[i].second==0) continue;
if(a[i].first<=t){
ans.push_back(a[i].second);
a[i]={0,0};
}
else{
sum+=a[i].first;
}
}
if(ans.size()==n) break;
t=sum/(n-(int)ans.size());
reverse(a.begin()+1,a.end());
}
cout<<ans[0];
for(int i=1;i<ans.size();i++){
cout<<" "<<ans[i];
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L2-2
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
void solve(){
int n;
cin>>n;
vector<int> a(n+1);
map<int,int> mp;
set<int> st;
for(int i=1;i<=n;i++){
cin>>a[i];
if(mp[a[i]]==0) mp[a[i]]=i;
st.insert(a[i]);
}
int mx=*max_element(a.begin()+1,a.end());
vector<int> ans;
for(int i=1;i<=n;i++){
if(a[i]==mx) ans.push_back(i);
}
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<" \n"[i==ans.size()-1];
}
int q;
cin>>q;
while(q--){
int x;
cin>>x;
auto it=st.upper_bound(x);
if(it==st.end()){
cout<<0<<endl;
}
else{
cout<<mp[*it]<<endl;
}
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L2-3
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
void solve(){
int n;
cin>>n;
vector<vector<pii>> g(n+1);
vector<int> f(n+1,10101);
for(int i=1;i<n;i++){
int pre,w;
cin>>pre>>w;
g[pre].push_back({i,w});
f[i]=w;
}
auto dfs=[&](auto dfs,int u)-> void {
// cout<<u<<" ";
for(auto[v,w]:g[u]){
f[v]=min(w,f[u]);
dfs(dfs,v);
}
};
dfs(dfs,0);
// cout<<endl;
int mx=0;
vector<int> ans;
for(int i=1;i<n;i++){
if(g[i].size()) continue;
if(f[i]>mx){
mx=f[i];
ans.clear();
ans.push_back(i);
}
else if(f[i]==mx) ans.push_back(i);
}
cout<<mx<<endl;
sort(ans.begin(),ans.end());
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<" \n"[i==ans.size()-1];
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L2-4
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
void solve(){
int n,m;
cin>>n>>m;
vector<vector<pii>> g(n+1);
while(m--){
int u,v,p;
cin>>u>>v>>p;
g[u].push_back({p,v});
}
for(int i=1;i<=n;i++){
sort(g[i].begin(),g[i].end(),[&](pii a,pii b)-> bool {
if(a.first!=b.first) return a.first>b.first;
return a.second<b.second;
});
}
int q;
cin>>q;
while(q--){
int now;
cin>>now;
vector<int> ans;
ans.push_back(now);
map<int,int> mp;
mp[now]=1;
while(g[now].size()){
int tmp=0;
for(auto [p,ne]:g[now]){
if(mp[ne]==0){
mp[ne]=1;
tmp=ne;
break;
}
}
if(tmp==0) break;
now=tmp;
ans.push_back(now);
}
cout<<ans[0];
for(int i=1;i<ans.size();i++){
cout<<"->"<<ans[i];
}
cout<<endl;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L3-1
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
struct node{
/**
* 实际时间
*/
int act;
/**
* 预约时间
*/
int pt;
/**
* 患者 id
*/
string id;
/**
* 年龄
*/
int age;
bool operator<(const node &t) const{
if((age>=80) == (t.age>=80)){
return pt>t.pt;
}
else{
return age<t.age;
}
}
};
void solve(){
int n;
cin>>n;
vector<node> a(n+1);
vector<int> ans,ans2;
map<int,node> mp;
for(int i=1;i<=n;i++){
int q,w,e,r;
string id;
cin>>q>>w>>id>>r;
a[i]={q,w,id,r};
mp[w]=a[i];
}
int now=1;
priority_queue<node,vector<node>> q;
map<int,int> inq;
map<int,int> f;
for(int t=1;t<=2*n;t++){
while(a[now].act<=t && now<=n){
inq[a[now].pt]=1;
q.push(a[now]);
now++;
}
if(inq[t] && f[t]==0){
f[t]=1;
ans.push_back(t);
// if(t==2) cout<<"!!\n";
ans2.push_back(t);
}
else{
if(q.size()==0) continue;
while(q.size() && f[q.top().pt] == 1){
inq[q.top().pt]=0;
q.pop();
}
if(q.size()==0) continue;
f[q.top().pt]=1;
// inq[q.top().pt]=0;
ans.push_back(q.top().pt);
// if(q.top().pt==2) cout<<"!!\n";
ans2.push_back(t);
q.pop();
}
}
// cout<<"---\n";
for(int i=0;i<ans.size();i++){
cout<<ans2[i]<<" "<<mp[ans[i]].id<<endl;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
// cin>>ct;
while(ct--){
solve();
}
}
L3-2
14 分 假做法
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
void solve(){
int n;
cin>>n;
vector<int> r(n+1),b(n+1);
map<int,int> mr,mb;
int ans=0;
map<int,int> cr,cb;
for(int i=1;i<=n;i++){
cin>>r[i]>>b[i];
ans++;
if(mr.count(r[i])) mr[r[i]]++;
else if(mb.count(b[i])) mb[b[i]]++;
else{
mb[b[i]]=0;
ans++;
}
}
cout<<ans<<endl;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
cin>>ct;
while(ct--){
solve();
}
}
L3-3
DFS 纯暴力骗分 10分
点击查看代码
#include<bits/stdc++.h>
// #define int long long
using namespace std;
using pii=pair<int,int>;
void solve(){
int n,ans=0;
cin>>n;
vector<int> a(n+1);
for(int i=1;i<=n;i++){
cin>>a[i];
}
vector<int> t(n+1);
auto dfs=[&](auto dfs,int pos)-> void {
if(pos>n){
bool f=1;
for(int i=1;i<=n;i++){
if(a[t[i]]!=t[a[i]]){
f=0;
break;
}
}
ans+=f;
return;
}
for(int i=1;i<=n;i++){
t[pos]=i;
if(i<=pos){
if(a[t[i]]!=t[a[i]] && a[i]<=pos){
continue;
}
}
dfs(dfs,pos+1);
}
};
dfs(dfs,1);
cout<<ans<<endl;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int ct=1;
cin>>ct;
while(ct--){
solve();
}
}

浙公网安备 33010602011771号