[R18][中国語翻訳]HDKのABC370赛試(ABC370)
1.Codeforces Round 955 (Div. 2)2.AtCoder Beginner Contest 3633.AtCoder Regular Contest 182(A B C)4.暑假集训CSP提高模拟15.暑假集训CSP提高模拟26.暑假集训CSP提高模拟77.暑假集训CSP提高模拟58.暑假集训 加赛19.暑假集训CSP提高模拟410.暑假集训CSP提高模拟1811.暑假集训CSP提高模拟1712.暑假集训CSP提高模拟 1613.暑假集训CSP提高模拟 ∫[0,6] (x^2)/6 dx14.暑假集训CSP提高模拟1115.暑假集训SCP提高模拟1016.暑假集训PVZ提高模拟917.暑假集训CSP提高模拟818.暑集假训SCP提高拟模2119.[CL-FOOL] CLOI 愚人赛的部分官方题解与小杂谈20.トヨタ自動車プログラミングコンテスト2024#7(ABC 362)21.寒假集训测试2 题目转存22.HEOI2024 题目转存23.高一小学期224.张江蔡25.高一高考集训总结赛26.高一下二调题目转存27.CSP提高组模拟128.Atcoder Beginner Contest 367
29.[R18][中国語翻訳]HDKのABC370赛試(ABC370)
30.[30] CSP 加赛 131.[33](CSP 集训)CSP-S 模拟 432.[34](CSP 集训)CSP-S 联训模拟 133.[35] (CSP 集训) CSP-S 模拟 534.[36](CSP 集训)CSP-S 模拟 635.AtCoder Beginner Contest 37336.[37](CSP 集训)CSP-S 模拟 737.[39] (多校联训) A层冲刺NOIP2024模拟赛0138.[40](CSP 集训)CSP 联训模拟 239.[42] (多校联训) A层冲刺NOIP2024模拟赛0340.[41] (CSP 集训) CSP-S 模拟 941.[44] (多校联训) A层冲刺NOIP2024模拟赛0442.[45] (多校联训) A层冲刺NOIP2024模拟赛0543.[46] (多校联训) A层冲刺NOIP2024模拟赛0644.パナソニックグループ プログラミングコンテスト2024(ABC 375)45.[47] (CSP 集训) CSP-S 模拟 1146.[49 & 50] (多校联训) A层冲刺NOIP2024模拟赛08 | CSP-S 模拟 1247.[51] (多校联训) A层冲刺NOIP2024模拟赛0948.Atcoder Beginner Contest 37649.Codeforces Round 980 (Div. 2)50.[54] (多校联训) A层冲刺NOIP2024模拟赛1251.[57] (多校联训) A层冲刺NOIP2024模拟赛1552.[61] (多校联训) A层冲刺NOIP2024模拟赛1853.[62] (NOIP 集训) NOIP2024加赛 254.[63] (多校联训) A层冲刺NOIP2024模拟赛1955.[68] (炼石计划) NOIP 模拟赛 #2056.[68] (NOIP集训) NOIP2024 加赛 557.[72] (多校联训) A层冲刺NOIP2024模拟赛2558.[73] (NOIP集训) NOIP2024 加赛 759.[75] (NOIP集训) NOIP2024 加赛 8A.Raise Both Hands
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define void inline void
// #define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
#define test(i) cout<<"test: "<<i<<endl
#define testp(i,j) cout<<i<<" "<<j<<endl
#define testd(i) cout<<i<<" "
#define end cout<<"\n"
#define div <<" "<<
#else
#define test(i)
#define testp(i,j)
#define testd(i)
#define end false
#define div ,
#endif
template<typename T>
void read(T& x){
x=0;bool sym=0;char c=getchar();
while(!isdigit(c)){sym^=(c=='-');c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
if(sym)x=-x;
}
template<typename T,typename... Args>
void read(T& x,Args&... args){
read(x);read(args...);
}
int main(){
int l,r;
cin>>l>>r;
if(l==1 and r!=1){
cout<<"Yes";
}
else if(l!=1 and r==1){
cout<<"No";
}
else{
cout<<"Invalid";
}
}
B.Binary Alchemy
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define void inline void
// #define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
#define test(i) cout<<"test: "<<i<<endl
#define testp(i,j) cout<<i<<" "<<j<<endl
#define testd(i) cout<<i<<" "
#define end cout<<"\n"
#define div <<" "<<
#else
#define test(i)
#define testp(i,j)
#define testd(i)
#define end false
#define div ,
#endif
template<typename T>
void read(T& x){
x=0;bool sym=0;char c=getchar();
while(!isdigit(c)){sym^=(c=='-');c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
if(sym)x=-x;
}
template<typename T,typename... Args>
void read(T& x,Args&... args){
read(x);read(args...);
}
int n;
int a[101][101];
int main(){
cin>>n;
for(int i=1;i<=n;++i){
for(int j=1;j<=i;++j){
cin>>a[i][j];
}
}
int st=1;
for(int i=1;i<=n;++i){
if(st>=i){
st=a[st][i];
}
else{
st=a[i][st];
}
}
cout<<st<<endl;
}
C.Word Ladder
给你两个字符串
,长度相等,要求你每次改变 一个字符,最后令 ,要求在过程中的每一步都使 字典序尽可能最小,输出过程
考虑到当
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define void inline void
// #define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
#define test(i) cout<<"test: "<<i<<endl
#define testp(i,j) cout<<i<<" "<<j<<endl
#define testd(i) cout<<i<<" "
#define end cout<<"\n"
#define div <<" "<<
#else
#define test(i)
#define testp(i,j)
#define testd(i)
#define end false
#define div ,
#endif
template<typename T>
void read(T& x){
x=0;bool sym=0;char c=getchar();
while(!isdigit(c)){sym^=(c=='-');c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
if(sym)x=-x;
}
template<typename T,typename... Args>
void read(T& x,Args&... args){
read(x);read(args...);
}
string s,t;
vector<string>ss;
int main(){
cin>>s>>t;
while(s!=t){
for(int i=0;i<=s.length()-1;++i){
if(s[i]>t[i]){
s[i]=t[i];
ss.push_back(s);
}
}
for(int i=s.length()-1;i>=0;--i){
if(s[i]<t[i]){
s[i]=t[i];
ss.push_back(s);
}
}
}
cout<<ss.size()<<endl;
for(string i:ss) cout<<i<<endl;
}
D.Cross Explosion
给定
的矩阵,初始全是墙, 次询问,每次给出一个坐标 进行如下操作:
- 若
是墙,直接摧毁 - 否则,摧毁
在上下左右四个方向上距离最近的墙,该方向上没有墙则不摧毁 求最终的墙数
考察对 STL 的用法
考虑对横行和数列分别建 set,记录当前行/列存在墙的坐标,每次删除的时候,只需要进入对应行/列的 set 直接查找删除即可
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define void inline void
#define ONLINE_JUDGE
//#ifndef ONLINE_JUDGE
//#define test(i) cout<<"test: "<<i<<endl
//#define testp(i,j) cout<<i<<" "<<j<<endl
//#define testd(i) cout<<i<<" "
//#define div <<" "<<
//#else
//#define test(i)
//#define testp(i,j)
//#define testd(i)
//#define end false
//#define div ,
//#endif
template<typename T>
void read(T& x){
x=0;bool sym=0;char c=getchar();
while(!isdigit(c)){sym^=(c=='-');c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
if(sym)x=-x;
}
template<typename T,typename... Args>
void read(T& x,Args&... args){
read(x);read(args...);
}
int n,m,q;
set<int>mp[400001],mp2[400001];
int main(){
read(n,m,q);
int ans=n*m;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
mp[i].insert(j);
mp2[j].insert(i);
}
}
while(q--){
int x,y;
read(x,y);
auto it=mp[x].lower_bound(y);
if(it!=mp[x].end() and *it==y){
mp[x].erase(it);
mp2[y].erase(mp2[y].lower_bound(x));
ans--;
}
else{
if(it!=mp[x].begin()){
it--;
mp2[*it].erase(mp2[*it].lower_bound(x));
mp[x].erase(it);
ans--;
}
auto it2=mp[x].upper_bound(y);
if(it2!=mp[x].end()){
mp2[*it2].erase(mp2[*it2].lower_bound(x));
mp[x].erase(it2);
ans--;
}
auto it3=mp2[y].lower_bound(x);
if(it3!=mp2[y].begin()){
it3--;
mp[*it3].erase(mp[*it3].lower_bound(y));
mp2[y].erase(it3);
ans--;
}
auto it4=mp2[y].upper_bound(x);
if(it4!=mp2[y].end()){
mp[*it4].erase(mp[*it4].lower_bound(y));
mp2[y].erase(it4);
ans--;
}
}
}
cout<<ans<<endl;
}
需要注意 set 一定要用内置的 lower_bound() 函数!! ,否则复杂度直接多一个
本题还有并查集做法,参见
E.Avoid K Partition
给定一个数列,划分为若干非空子序列,要求没有任何子序列的和等于
,求方案数
考虑设计
其中
因此有了
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define void inline void
template<typename T>
void read(T& x){
x=0;bool sym=0;char c=getchar();
while(!isdigit(c)){sym^=(c=='-');c=getchar();}
while(isdigit(c)){x=x*10+c-48;c=getchar();}
if(sym)x=-x;
}
template<typename T,typename... Args>
void read(T& x,Args&... args){
read(x);read(args...);
}
#define tests int cases;read(cases);while(cases--)
#define pb bush_back
const int p=998244353;
long long n,k,a[200001];
int main(){
read(n,k);
for(int i=1;i<=n;++i){
read(a[i]);
}
map<long long,long long>mp;
mp[0]=1;
long long ans=1;
long long sum=0;
for(int i=1;i<=n;++i){
sum+=a[i];
int res;
if(mp.count(sum-k)) res=ans-mp[sum-k];
else res=ans;
mp[sum]=(mp[sum]+res+p)%p;
ans=(ans+res+p)%p;
if(i==n) cout<<((res+p)%p)<<endl;
}
}
F.Cake Division
个元素的环形数列,分成 个连续段,最大化每个连续段和的最小值 并且求出在所有可能的方案中,哪两个元素在所有方案中都在同一个连续段内
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!