(排序EX)P1583 魔法照片
题解:
需要注意的是,快排完之后并不是按照编号从小到大的顺序输出
using namespace std;
int r=0;
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
}
void sort(int s[],int l,int r,int n[])//应用二分思想
{
int mid=s[(l+r)/2];//中间数
int i=l,j=r;
do{
while(s[i]>mid) i++;//查找左半部分比中间数大的数
while(s[j]<mid) j--;//查找右半部分比中间数小的数
if(i<=j)//如果有一组不满足排序条件(左小右大)的数
{
swap(s[i],s[j]);//交换
swap(n[i],n[j]);
i++;
j--;
}
}while(i<=j);//这里注意要有=
if(l<j) sort(s,l,j,n);//递归搜索左半部分
if(i<r) sort(s,i,r,n);//递归搜索右半部分
}
{
if(k[i]>k[i+1]){
swap(k[i],k[i+1]);//交换
}
r=i+1;
if(s[r]==s[r+1]){
sort2(s,k,r);
}else{
return;
}
if(k[i]>k[i+1]){
swap(k[i],k[i+1]);//交换
}
return ;
}
{
int n,k;
cin>>n>>k;
int e[10],w[n],num[n];
for(int i=0;i<10;i++){
cin>>e[i];
}
int ret=0;
for(int i=0;i<n;i++){
cin>>w[i];
ret++;
num[i]=ret;
}
sort(w,0,n-1,num);
int key=1;
while(key){
for(int i=0;i<n;i++){
if(w[i]==w[i+1]&&num[i]>num[i+1]){
for(i;i<n;i++){
if(w[i]==w[i+1]){
sort2(w,num,i);
i=r;
}
}
break;
}
if(i==ret-1){
key=0;
}
}
}
{
cout<<"*********"<<endl;
for(int i=0;i<n;i++){
cout<<w[i]<<" "<<num[i]<<endl;;
}
}
for(int i=0;i<n;i++){
w[i]+=e[i%10];
}
key=1;
while(key){
for(int i=0;i<n;i++){
if(w[i]==w[i+1]&&num[i]>num[i+1]){
for(i;i<n;i++){
if(w[i]==w[i+1]){
sort2(w,num,i);
i=r;
}
}
break;
}
if(i==ret-1){
key=0;
}
}
}
{
cout<<"*********"<<endl;
for(int i=0;i<n;i++){
cout<<w[i]<<" "<<num[i]<<endl;;
}
}
for(int i=0;i<k;i++){
cout<<num[i]<<" ";
}
cout<<endl;
return 0;
}
优秀的题解:
#include<cstdio>
#include<algorithm>
using namespace std;
int e[12],n,k;
struct person{
int w;//权值
int num;//编号
int d;//类别
}p[20010];//储存每个人的信息
int w_comp(const person &a,const person &b){
if(a.w!=b.w)return a.w>b.w;//从大到小排序
return a.num<b.num;//序号小优先
}//结构体排序
int main(){
scanf("%d%d",&n,&k);
for(int i=0;i<10;i++)scanf("%d",&e[i]);
for(int i=0;i<n;i++){
scanf("%d",&p[i].w);
p[i].num=i+1;
}//读入+编号
sort(p,p+n,w_comp);//第一次排序
for(int i=0;i<n;i++){
p[i].d=i%10;//分类
p[i].w+=e[p[i].d];//加上e[i]
}
sort(p,p+n,w_comp);//第二次排序
for(int i=0;i<k;i++)printf("%d ",p[i].num);
}
(排序EX)P1583 魔法照片的更多相关文章
- (sort 排序)P1583 魔法照片 洛谷
题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...
- 洛谷 P1583 魔法照片
P1583 魔法照片 题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初 ...
- 洛谷 P1583 魔法照片【二级结构体排序】
题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...
- 洛谷P1583 魔法照片【模拟+排序】
一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序,每人就有 ...
- 洛谷P1583——魔法照片(结构体排序)
https://www.luogu.org/problem/show?pid=1583#sub 题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人. ...
- P1583 魔法照片
题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...
- Luogu P1583 魔法照片
题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...
- 【排序+模拟】魔法照片 luogu-1583
题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...
- 洛谷 P1583魔法照片 & P1051谁拿了最多奖学金 & P1093奖学金
题目:https://www.luogu.org/problemnew/show/P1583 思路:sort sort sort //#include<bits/stdc++.h> #in ...
随机推荐
- The problem: somthing wrong when my computer excute the command "git clone XXXX"
Error:git@github.com: Permission denied (publickey).fatal: Could not read from remote repository. Pl ...
- java SHA1加密算法
package com.cn.test.rsa; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExc ...
- 白底黑字!Android浅色状态栏黑色字体模式(另)
小彬什么都想做任重致远 关注 2016.06.30 10:16* 字数 489 阅读 3234评论 3喜欢 12 前言 由于该死不死的设计湿,设计了一套白色状态栏的UI.当然在iOS上可以实现自适应, ...
- JS 一键复制插件应用 和 原生实现
一.目前来说复制功能 clipboard.js基本可以兼容所有浏览器,可以任意复制文本,官方地址 https://clipboardjs.com/ 1.进入官方网站下载 然后引入 <script ...
- 【MAVEN】maven项目下载更新pom jar包速度慢 解决方案
1·下载安装 最新版本的maven https://maven.apache.org/download.cgi 2·速度慢的主要原因是因为默认setting.xml里配置的国外的 maven 数据源 ...
- 6、mysql事务
1.mysql事务 —mysql中,事务其实是一个最小的不可分割的工作单元.事务能够保证一个业务的完整性,例如:银行存款: a - > -100 >update user set ...
- 回文数索引(string类erase解题)
题目描述 给定一个仅由小写字母组成的字符串.现在请找出一个位置,删掉那个字母之后,字符串变成回文.请放心总会有一个合法的解.如果给定的字符串已经是一个回文串,那么输出-1. 输入描述: 第一行包含T, ...
- Day2-I-Knight's Problem POJ - 3985
You must have heard of the Knight's Tour problem. In that problem, a knight is placed on an empty ch ...
- 「AMPPZ2014」The Prices
传送门 Luogu团队题链接 解题思路 看到 \(m\) 这么小,马上想到状压 \(\text{DP}\). 设 \(dp[i][j]\) 表示在前 \(i\) 家商店中已买商品的状态为 \(j\) ...
- Unity内置shader 下载
Unity内置shader 4.3.1 版本的 其他版本可以自己修改名称 下载地址 http://download.unity3d.com/download_unity/builtin_shade ...