周三晚_刷题班_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