绝世好水的题

标签:模拟

题目描述Description

卡卡西的班主任鸣人老师在教学管理方面有自己的一套独特的方法。就比如,同样是安排座位,他们班级的做法就非常与众不同。具体做法是这样的:班级的n个同学按照序号依次将自己期望的同桌序号写在纸上,统一交由鸣人老师。鸣人老师进行统计,按照得票数从高到低的顺序,先安排得票高的同学的同桌,如果该同桌未被安排,则安排给对应同学,如果已经被安排了,则按照序号从头挑选没有安排同桌的同学。

输入描述Input Description

2行,第一行班级人数n,第二行按照序号依次给出每一个同学期望的同桌的序号。

输出描述Output Description

n行,每行两个数字,中间用空格隔开,第一个数是序号,第二个数是该序号同学同桌的序号。

样例输入Sample Input

8
3 3 4 6 6 8 2 3

样例输出Sample Output

1 2
2 1
3 4
4 3
5 7
6 8
7 5
8 6

数据范围及提示Data Size & Hint

样例解释:
3个人想跟3号坐,3号第一个选择,选择4号;有2个人想跟6号坐,6号第二个选择,选择8号;有1个人想跟2号坐,2号第三个选择,因为3号已经被选择,所以2号只能选择1号;余下5号和7号正好同桌。
数据范围:
n
是偶数,且4<=n<=50
说明:
如果两人得票数一样,序号小的人先选。


分析:绝世好水的题,娱乐大众23333,教练竟然怀疑是二分图匹配(笑)

实际上是小学组题目

code

#include<bits/stdc++.h>
using namespace std;
struct node{int want,rate,id,ans;}x[56];//want表示期望和某人坐同桌,rate表示受欢迎程度,id表示读入时的序号,ans表示最终答案和谁坐同桌 
int n;
bool cmp1(node a,node b){return a.rate==b.rate?a.id<b.id:a.rate>b.rate;}
bool cmp2(node a,node b){return a.id<b.id;}
 
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
	    cin>>x[i].want;
		x[x[i].want].rate++;
		x[i].id=i;
	}
	sort(x+1,x+1+n,cmp1);//按受欢迎程度排序 
	for(int i=1;i<=n;i++){
		if(x[i].ans>0)continue;//如果这个人已经有同桌了,就跳过 
		int flag=0;
		for(int j=1;j<=n;j++)
			if(x[j].id==x[i].want){//寻找期望中的同桌 
				if(x[j].ans==0){//如果期望中的同桌还未匹配,那么就与其匹配 
					x[j].ans=x[i].id;
					x[i].ans=x[i].want;
					break;
				}
				flag=1;//如果期望中的同桌被其他人匹配过了,那么打上标记 
			}
		if(flag==1)//期望中的同桌被其他人匹配过了,重新找为匹配的同桌 
			for(int j=i+1;j<=n;j++)//前i-1个人肯定都已匹配完毕,从第i+1个人开始找 
                if(x[j].ans==0){
                    x[j].ans=x[i].id;
                    x[i].ans=x[j].id; 
                    break;
                }  
	}
	sort(x+1,x+1+n,cmp2);//按读入的id值重新排序输出 
	for(int i=1;i<=n;i++)cout<<x[i].id<<' '<<x[i].ans<<endl;
	return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当谈到索引优化时,可以将其比喻为一把绝世好剑,因为它在数据库性能优化中扮演着非常重要的角色。索引是一种数据结构,它可以加快数据库中的查询操作速度。在数据库中存储大量数据时,查询操作可能会变得缓慢,因为每次查询都需要遍历整个数据集。而索引通过为数据库表中的一列或多列创建索引,可以提高查询效率。 索引的工作原理是通过创建一个额外的数据结构,将索引列的值与其所在行的物理位置相关联。这样,在查询时,数据库可以直接通过索引来快速定位到相关的数据行,而不需要遍历整个表。这种快速定位能力大大提高了查询的效率。 然而,索引并非没有代价。当对表进行插入、更新和删除操作时,数据库还需要维护索引的一致性,这可能会导致操作变慢。此外,索引本身也需要占用存储空间。因此,在使用索引时需要权衡查询性能和数据操作的效率。 对于索引的使用,需要根据具体情况进行优化。例如,选择合适的列作为索引、避免过多和重复的索引、定期重新组织索引以提高性能等。这就像使用一把绝世好剑,需要熟练地掌握其使用技巧,才能发挥出最大的威力。 所以,对于索引优化这把绝世好剑,了解和掌握它的使用方法是非常重要的,只有正确地使用索引,才能提升数据库的查询性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值