F. Cutting Game
1.G. Vlad and Trouble at MIT2.P2899 [USACO08JAN] Cell Phone Network G3.Watering an Array4.P2055 [ZJOI2009] 假期的宿舍5.T432579 大西洋船王6.T432580 星云 hard ver.7.P7072 [CSP-J2020] 直播获奖8.E - Insert or Erase9.D - String Bags10.P2671 [NOIP2015 普及组] 求和11.P1884 [USACO12FEB] Overplanting S12.F. Microcycle13.E. Increasing Subsequences__214.G. Path Prefixes15.F. Rudolf and Imbalance16.P1355 神秘大三角17.[ARC172A] Chocolate18.F. 0, 1, 2, Tree!19.E. Nearly Shortest Repeating Substring20.P1354 房间最短路问题21.P3258 [JLOI2014] 松鼠的新家22.P3052 [USACO12MAR] Cows in a Skyscraper G23.P1337 [JSOI2004] 平衡点 / 吊打XXX24.P3745 [六省联考 2017] 期末考试25.D. Inaccurate Subsequence Search26.E. Long Inversions27.C. Deep Down Below28.C. Rings29.F. Unfair Game30.C. Inversion Graph31.D. Cross Coloring32.D2. Set To Max (Hard Version)33.C. Array Game34.F. Alex's whims35.Queue Sort36.P10252 线性变换37.P10288 [GESP样题 八级] 区间38.P2161 [SHOI2009] 会场预约39.L2-001 紧急救援40.L2-002 链表去重41.L2-013 红色警报42.L2-014 列车调度43.L2-022 重排链表44.L2-023 图着色问题45.L2-039 清点代码库46.L2-034 口罩发放47.L3-037 夺宝大赛48.仓库规划49.因子化简50.C. Torn Lucky Ticket51.俄罗斯方块
52.F. Cutting Game
53.D. Prefix Permutation Sums54.P3304 [SDOI2013] 直径题解
我一开始想着二位前缀和+模拟,但是看到ab发现空间不够
观察到nm的数据范围限制
也就是点和查询的数量限制,考虑用优先队列把各个方向的点存起来以表示各个点的使用顺序,再用map嵌套表示各个点的使用情况
空间复杂度
code
#include<bits/stdc++.h>
using namespace std;
struct nodel
{
int x,y;
bool operator<(const nodel &b)const {return b.y<y;}
};
struct noder
{
int x,y;
bool operator<(const noder &b)const {return b.y>y;}
};
struct nodeu
{
int x,y;
bool operator<(const nodeu &b)const {return b.x<x;}
};
struct noded
{
int x,y;
bool operator<(const noded &b)const {return b.x>x;}
};
map<int,map<int,int > >vis;
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t;
cin>>t;
while(t--)
{
int a,b,n,m;
cin>>a>>b>>n>>m;
priority_queue<nodel> l;
priority_queue<noder> r;
priority_queue<nodeu> u;
priority_queue<noded> d;
while(n--)
{
int x,y;
cin>>x>>y;
vis[x][y]=1;
l.push({x,y});
r.push({x,y});
u.push({x,y});
d.push({x,y});
}
int x1=1,y1=1,x2=a,y2=b;
int flag=1;
int ansa=0,ansb=0;
while(m--)
{
char op;
int k;
cin>>op>>k;
int cnt=0;
if(op=='U')
{
x1+=k;
while(u.size())
{
int x=u.top().x,y=u.top().y;
if(x<x1)
{
if(vis[x][y]) cnt++;
vis[x][y]=0;
u.pop();
}
else break;
}
}
else if(op=='D')
{
x2-=k;
while(d.size())
{
int x=d.top().x,y=d.top().y;
if(x>x2)
{
if(vis[x][y]) cnt++;
vis[x][y]=0;
d.pop();
}
else break;
}
}
else if(op=='R')
{
y2-=k;
while(r.size())
{
int x=r.top().x,y=r.top().y;
if(y>y2)
{
if(vis[x][y]) cnt++;
vis[x][y]=0;
r.pop();
}
else break;
}
}
else
{
y1+=k;
while(l.size())
{
int x=l.top().x,y=l.top().y;
if(y<y1)
{
if(vis[x][y]) cnt++;
vis[x][y]=0;
l.pop();
}
else break;
}
}
if(flag) ansa+=cnt;
else ansb+=cnt;
flag^=1;
}
cout<<ansa<<" "<<ansb<<"\n";
vis.clear();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~