2022ICPC沈阳 - C D F L
The 2022 ICPC Asia Shenyang Regional Contest
C 暴力
D 签到
F 思维
L 搜索
C. Clamped Sequence
注意到数据范围
ll n, d, a[N], b[N], ans; void calc(ll l, ll r){ ll sum = 0; for(int i = 0; i < n; ++ i){ if(a[i] > r) b[i] = r; else if(a[i] < l) b[i] = l; else b[i] = a[i]; if(i) sum += abs(b[i] - b[i - 1]); } ans = max(ans, sum); return ; } void solve(){ cin >> n >> d; for(int i = 0; i < n; ++ i) cin >> a[i]; for(int i = 0; i < n; ++ i){ calc(a[i] - d, a[i]); calc(a[i], a[i] + d); } cout << ans << '\n'; return ; }
D. DRX vs. T1
统计哪个字母出现了3次即可
void solve(){ string ss; cin >> ss; int d = 0, t = 0; for(auto ch : ss){ if(ch == 'D') ++ d; else if(ch == 'T') ++ t; } if(d == 3) cout << "DRX\n"; else cout << "T1\n"; return ; }
F. Half Mixed
易得子矩阵总共的个数为
那么仅当 tot 为偶数时有解
假设
利用这一组
可以贪心的找
此题代码不放了,个人还做不出来
VP代码传送门
L. Tavern Chess
注意在题目所给的限制条件下,每一轮进攻必定死一个随从
又数据范围
double alice = 0, atie = 0, bob = 0; void dfs(vector<pii> & a, vector<pii> & b, int x, int y, int t, double p){ if(a.empty() && b.empty()){ atie += p; return ; } if(a.empty()) { bob += p; return ; } if(b.empty()) { alice += p; return ; } x %= a.size(); y %= b.size(); if(t == 0){ for(int i = 0; i < b.size(); ++ i){ vector<pii> na = a, nb = b; int nx = x, ny = y; na[x].second -= nb[i].first; nb[i].second -= na[x].first; if(na[x].second <= 0) na.erase(na.begin() + x); else ++ nx; if(nb[i].second <= 0){ nb.erase(nb.begin() + i); if(i < y) -- ny; } dfs(na, nb, nx, ny, 1 - t, p / b.size()); } }else{ for(int i = 0; i < a.size(); ++ i){ vector<pii> na = a, nb = b; int nx = x, ny = y; na[i].second -= nb[y].first; nb[y].second -= na[i].first; if(na[i].second <= 0){ na.erase(na.begin() + i); if(i < x) -- nx; } if(nb[y].second <= 0) nb.erase(nb.begin() + y); else ++ ny; dfs(na, nb, nx, ny, 1 - t, p / a.size()); } } return ; } void solve(){ int n, m; cin >> n >> m; vector<pii> a(n), b(m);// {atk, hp} for(int i = 0; i < n; ++ i){ int x; cin >> x; a[i] = {x, x}; } for(int i = 0; i < m; ++ i){ int x; cin >> x; b[i] = {x, x}; } if(n > m) dfs(a, b, 0, 0, 0, 1.0); else if(n < m) dfs(a, b, 0, 0, 1, 1.0); else{ dfs(a, b, 0, 0, 0, 0.5); dfs(a, b, 0, 0, 1, 0.5); } cout << fixed << setprecision(10) << alice << '\n' << bob << '\n' << atie << '\n'; return ; }
本文来自博客园,作者:Qiansui,转载请注明原文链接:https://www.cnblogs.com/Qiansui/p/17827159.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话