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

The 2024 ICPC Asia East Continent Online Contest (I) 4/12 A/F/G/M

M. Find the Easiest Problem

签到题,直接模拟即可

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){int n;cin>>n;map<char,int> cnt;map<string,map<char,int>> isac;for(int i=1;i<=n;i++){string name;char id;string res;cin>>name>>id>>res;if(res=="rejected") continue;if(isac[name][id]) continue;isac[name][id]=1;cnt[id]++;}int mx=0;for(char ch='A';ch<='Z';ch++){mx=max(mx,cnt[ch]);}for(char ch='A';ch<='Z';ch++){if(cnt[ch]==mx){cout<<ch<<endl;return;}}
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int ct=1;cin>>ct;while(ct--){solve();}return 0;
}

A. World Cup

小组出线需要大于两人,淘汰赛第一轮获胜需要战胜六人,接下来每一轮需要战胜一个跟自己一样的对手

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){vector<int> a(33);for(int i=1;i<=32;i++){cin>>a[i];}int t=a[1];sort(a.begin()+1,a.end());int pos=0;for(int i=1;i<=32;i++){if(a[i]==t) pos=i;}if(pos==32){cout<<1<<endl;}else if(pos>27){cout<<2<<endl;}else if(pos>13){cout<<4<<endl;}else if(pos>6){cout<<8<<endl;}else if(pos>2){cout<<16<<endl;}else{cout<<32<<endl;}
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int ct=1;cin>>ct;while(ct--){solve();}return 0;
}

F. Make Max

直接用单调栈即可,找到左右两侧所有比他小的数。

vp 时写了个代码很复杂的双向链表

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){int n;cin>>n;vector<int> a(n+1),l(n+1),r(n+1);vector<pii> b(n+1);for(int i=1;i<=n;i++){cin>>a[i];b[i].first=a[i];b[i].second=i;}for(int i=1;i<n;i++){r[i]=i+1;}for(int i=2;i<=n;i++){l[i]=i-1;}sort(b.begin()+1,b.end());vector<int> cnt(n+1,1);vector<int> st(n+1);int ans=0;for(int i=1;i<=n;i++){auto [val,idx]=b[i];if(st[idx]) continue;while(1){//1. 两边有个一样的,先走过去if(l[idx]!=0 && a[l[idx]]==val){// if(idx==5) cout<<l[idx]<<endl;st[idx]=1;cnt[l[idx]]+=cnt[idx];idx=l[idx];r[idx]=r[r[idx]];l[r[idx]]=idx;continue;}if(r[idx]!=0 && a[r[idx]]==val){st[idx]=1;cnt[r[idx]]+=cnt[idx];idx=r[idx];l[idx]=l[l[idx]];r[l[idx]]=idx;continue;}//2. 两边只有一边有,且那个大于当前,可以走过去if(l[idx] && !r[idx] && a[l[idx]]>val){st[idx]=1;ans+=cnt[idx];val=a[l[idx]];cnt[l[idx]]+=cnt[idx];idx=l[idx];r[idx]=r[r[idx]];l[r[idx]]=idx;r[l[idx]]=idx;continue;}if(r[idx] && !l[idx] && a[r[idx]]>val){st[idx]=1;ans+=cnt[idx];val=a[r[idx]];cnt[r[idx]]+=cnt[idx];idx=r[idx];l[idx]=l[l[idx]];r[l[idx]]=idx;continue;}if(r[idx] && l[idx]){//两边都有,往小的那边走if(a[r[idx]]<=a[l[idx]] && a[r[idx]]>val){st[idx]=1;ans+=cnt[idx];val=a[r[idx]];cnt[r[idx]]+=cnt[idx];idx=r[idx];l[idx]=l[l[idx]];r[l[idx]]=idx;continue;}else if(a[l[idx]]<=a[r[idx]] && a[l[idx]]>val){bool f=0;if(idx==7) f=1;st[idx]=1;ans+=cnt[idx];// if(f){//     cout<<l[idx]<<endl;//     cout<<cnt[l[idx]]<<endl;// }val=a[l[idx]];cnt[l[idx]]+=cnt[idx];idx=l[idx];r[idx]=r[r[idx]];l[r[idx]]=idx;continue;}}break;}}cout<<ans<<endl;
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int ct=1;cin>>ct;while(ct--){solve();}return 0;
}

G. The Median of the Median of the Median

二分中位数转化成一个确定性的问题,转化成 01 序列后用前缀和计算当前二分的值和中位数的大小关系

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){int n;cin>>n;vector<int> a(n+1);for(int i=1;i<=n;i++){cin>>a[i];}auto check=[&](int x)-> bool {//判断 x 是否大于等于中位数vector<int> s(n+1);for(int i=1;i<=n;i++){if(a[i]<=x) s[i]=1;else s[i]=-1;s[i]+=s[i-1];}vector<vector<int>> b(n+1,vector<int>(n+1));vector<vector<int>> sb(n+1,vector<int>(n+1));for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){if(s[j]-s[i-1]>=0) b[i][j]=1;else b[i][j]=-1;}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){sb[i][j]=sb[i-1][j]+sb[i][j-1]-sb[i-1][j-1]+b[i][j];}}int res=0;for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){if(sb[j][j]-sb[i-1][j]-sb[j][i-1]+sb[i-1][i-1]>=0){res++;}else{res--;}}}return res>=0;};int l=1,r=1e9;while(l<r){int mid=l+r>>1;//如果mid>=中位数if(check(mid)) r=mid;else l=mid+1;}cout<<r<<endl;
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int ct=1;// cin>>ct;while(ct--){solve();}return 0;
}
http://www.hskmm.com/?act=detail&tid=9322

相关文章:

  • 深入解析 JVM 类加载机制:从字节码到运行时对象
  • 博弈论学习(第二天)
  • PHP 和 Elasticsearch:给你的应用加个强力搜索引擎
  • Windows 系统部署 Mosquitto MQTT broker 完整指南
  • 2025年- H146-Lc459. 重复的子字符串(字符串)--Java版 - 实践
  • 坚果云 坚果 jianguoyun 怎么收文件?
  • mssql创建字段依赖
  • AT_agc060_a [AGC060A] No Majority
  • Flutter本地通知系统:记账提醒的深度实现
  • AT_agc053_b [AGC053B] Taking the middle
  • 一款多功能Linux服务器Web管理面板
  • 2025.9.16 测试
  • 题解:P12558 [UOI 2024] Heroes and Monsters
  • 数据分析与产品、运营、市场之间如何有效对齐 - 详解
  • (附源码)基于Java的学生托管系统的设计与实现 - 实践
  • SVG动画优化全攻略:从设计到性能提升
  • 【GitHub每日速递 250919】MCP 生态新工具!Registry 服务器注册服务预览版,AI 开发者部署认证全流程揭秘
  • 多元积性函数
  • MX 练石 2026 NOIP #7
  • 用Qt打造永远运行的程序/守护进程/程序启动器/实时监测程序运行/后台运行
  • 传话游戏 题解
  • 智驾芯片三强对决:征程6P vs EyeQ Ultra vs Thor
  • 0132_访问者模式(Visitor)
  • 国内AI云市场:挤不进前三,生存将成问题!
  • P14053 [SDCPC 2019] Median 题解
  • lQueryDef查询Evaluate报该几何不包含M值问题。
  • 我的首个RCE漏洞发现之旅:Apache ActiveMQ远程代码执行实战
  • 北京市社保费用差额补缴计算工具
  • 使用自签名SSL证书有什么风险?
  • CDN可以使用iTrustSSL通配符证书吗?