AtCoder Beginner Contest 273
A - A Recursive Function
Problem Statement
题意:给你一个函数
- 对于所有正整数
,有
找到
Solution
思路:数据范围只有
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll f(ll n) { if(n==0)return 1; return n*f(n-1); } int main() { ll n; cin>>n; cout<<f(n)<<endl; return 0; }
B - Broken Rounding
Problem Statement
题意:给你一个非负整数
操作:对数字
比如:
Solution
思路:先变成小数,对其进行保留到整数位的四舍五入,在乘回来。
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll x; int k; cin>>x>>k; ll r = 1; for(int i = 1;i<=k;i++) { r*=10; x = round(x/(long double)r)*r; } cout<<x<<endl; return 0; }
C - (K+1)-th Largest Number
Problem Statement
题意:你有一个序列
Solution
思路:sort+二分
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e5+10; int a[N]; vector<int>v; map<int,int>mp; int main() { int n; cin>>n; for(int i = 1;i<=n;i++) cin>>a[i],v.push_back(a[i]); sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end()); int m = v.size(); for(int i = 1;i<=n;i++) { int pos = lower_bound(v.begin(), v.end(),a[i])-v.begin(); mp[max(0,m-pos-1)]++; } for(int i = 0;i<n;i++) cout<<mp[i]<<endl; return 0; }
D - LRUD Instructions
Problem Statement
题意:你有一个
Solution
思路:首先很明显直接模拟肯定T,那么我们对于一个点需要快速知道离每个方向它最近的的一个障碍物的位置,可以用
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll n,m,x,y; map<ll,set<ll>>dx,dy; int main() { cin>>n>>m>>x>>y; int N; cin>>N; for(int i = 1;i<=N;i++) { ll xx,yy; cin>>xx>>yy; dx[xx].insert(yy); dy[yy].insert(xx); } for(auto &i:dx) { i.second.insert(0); i.second.insert(m+1); } for(auto &i:dy) { i.second.insert(0); i.second.insert(n+1); } int q; cin>>q; for(int i = 1;i<=q;i++) { char op; ll k; cin>>op>>k; if(op=='L') { ll nxt_y = y-k; if(dx.find(x)==dx.end()) y = max(nxt_y,1ll); else { auto it = dx[x].lower_bound(y); it = prev(it); //cout<<"*it + 1 = "<<*it+1<<" nxt_y = "<<nxt_y<<endl; y = max(*it+1,nxt_y); } } else if(op=='R') { ll nxt_y = y+k; if(dx.find(x)==dx.end()) y = min(nxt_y,(ll)m); else { auto it = dx[x].lower_bound(y); //cout<<"*it - 1 = "<<*it-1<<" nxt_y = "<<nxt_y<<endl; y = min(*it-1,nxt_y); } } else if(op=='U') { ll nxt_x = x-k; if(dy.find(y)==dy.end()) x = max(nxt_x,1ll); else { auto it = dy[y].lower_bound(x); it = prev(it); x = max(*it+1,nxt_x); } } else { ll nxt_x = x+k; if(dy.find(y)==dy.end()) x = min(nxt_x,(ll)n); else { auto it = dy[y].lower_bound(x); x = min(*it-1,nxt_x); } } cout<<x<<" "<<y<<endl; } return 0; }
分类:
题解 / AtCoder
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App