周三晚_刷题班_2
已结束
ACM/ICPC
开始于: 2025-11-26 19:00
1.3
小时
主持人:
20
让我们成为摸金校尉吧!
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
bool cmp(string s1,string s2){
return s1>s2;
}
//先按x从小到大,如果x相同,就按y从小到大,如果y还相同,就保持木块在地面时的先后顺序不变
bool cmp2(st s1,st s2){
if(s1.x!=s2.x){
return s1.x<s2.x;
}
if(s1.y!=s2.y){
return s1.y<s2.y;
}
return s1.id<s2.id;
}
//先按y从小到大,如果y相同,就按x从小到大,如果x还相同,就保持木块在地面时的先后顺序不变
bool cmp3(st s1,st s2){
if(s1.y!=s2.y){
return s1.y<s2.y;
}
if(s1.x!=s2.x){
return s1.x<s2.x;
}
return s1.id<s2.id;
}
struct st{
int id,x,y;//id是这个物品的编号或者说位置
};
st s[100010];
int main(){
//problem F
//先给数组排序,排序不影响结果
//对于每一次查询L和R,查找大于等于L第一次出现的位置,假设是p1
//查找小于等于R 最后一次出现的位置,假设是p2
//那么这次查询的答案 就是 p2-p1+1;
// 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 4 5 6
//problem E
// r[i]: 记录以第i个数字 结尾 有多少个连续的范围 总和是7的倍数
// b[i]: 记录前缀和当中 取模于7的结果 等于i的 有多少个
//problem A
int x,y;
cin>>x>>y;
int((1.0*x/y - x/y)*10);
//problem B 操作很多次,每次会把数组L到R这段范围的数字 后移一个位置
int n,a[10010],m,l,r;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>m;
while(m--){
cin>>l>>r;
int tem=a[r];
//i=r-1
for(int i=r-1;i>=l;i--) a[i+1]=a[i];
a[l]=tem;
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
//problem C
int n;
string s[6010];
cin>>n;
for(int i=1;i<=n;i++) {
cin>>s[i];
s[i]=s[i].substr(0,3);
}
sort(s+1,s+1+n);
cout<<s[n]<<s[n-1];
//problem D
int n;
cin>>n;
for(int i=1;i<=n;i++){
s[i].id=i;
cin>>s[i].x>>s[i].y;
}
sort(s+1,s+1+n,cmp2);
for(int i=1;i<=n;i++) cout<<s[i].id<<" ";
cout<<endl;
sort(s+1,s+1+n,cmp3);
for(int i=1;i<=n;i++) cout<<s[i].id<<" ";
}
- 状态
- 已结束
- 规则
- ACM/ICPC
- 题目
- 6
- 开始于
- 2025-11-26 19:00
- 结束于
- 2025-11-26 20:18
- 持续时间
- 1.3 小时
- 主持人
- 参赛人数
- 20