P3960 [NOIP2017 提高组] 列队 (简单暴力方法骗分,拿30分)二维数组c++

因为我是彩笔,所以我这个是暴力办法,仅供思路参考,不可ac!!!仅30分,请勿直接投递

题目跳楼(肉股) 

使用二维数组模拟队列,用for循环实现模拟教官喊口号队列的移动,因为人太多教官也管不过来,加上二维数组开太大直接原地起飞,所以最多最多教官喊得动15500*15500的人(不是上限不过差不多,16000*16000就炸了)so我数组开个15509*15509没问题吧?

然后是模拟队伍看齐,我用两个for循环分别实现队伍成员的转移,就这么简单

#include<bits/stdc++.h>
#define ll long long
using namespace std;
long long n,m;
long long sb[15509][15509];
long long tempnum,tempx,tempy;


void move(){
	//向左看齐 
	for(ll j=tempy;j<=m;j++){
		ll i=tempx;
		if(j==m)sb[i][j]=-1;
		else sb[i][j]=sb[i][j+1];
	}
	
/*	向钱看齐 
	for($$$ $=$$$$$;$<=$;$+++++++++++)
		$$$++;
*/

	//向前看 
	for(ll i=tempx;i<=n;i++){
		ll j=m;
		if(i==n)sb[i][j]=-1;
		else sb[i][j]=sb[i+1][j];
	}
	//归队
	sb[n][m]=tempnum;
	return;
}

int main(){
//	freopen("phalanx.in","r",stdin);
//	freopen("phalanx.out","w",stdout);
	ll q;
	scanf("%d%d%d",&n,&m,&q);
	long long num=1;
	for(ll i=1;i<=n;i++)
		for(ll j=1;j<=m;j++)
			sb[i][j]=num++;
	while(q--){
		scanf("%d%d",&tempx,&tempy);
		tempnum=sb[tempx][tempy];
		cout<<tempnum<<endl;
		move();
//		测试用for 
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=m;j++){
//				cout<<sb[i][j]<<" ";
//			}
//			cout<<endl;
//		}
//		cout<<endl;
	}
	
	

	return 0;
}
/*
	 __
	|#|
	|#|
	|#|
	|#|
	|#|_______
	|########| 
	
	[L]
	
*/
	

结束了……下次更长些!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值