洛谷 P1583 魔法照片
题目描述
一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人。佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i]。然后将初始权值从大到小进行排序,每人就有了一个序号D[i](取值同样是1--n)。按照这个序号对10取模的值将这些人分为10类。也就是说定义每个人的类别序号C[i]的值为(D[i]-1) mod 10 +1,显然类别序号的取值为1--10。第i类的人将会额外得到E[i]的权值。你需要做的就是求出加上额外权值以后,最终的权值最大的k个人,并输出他们的编号。在排序中,如果两人的W[i]相同,编号小的优先。
输入输出格式
输入格式:
第一行输入用空格隔开的两个整数,分别是n和k。
第二行给出了10个正整数,分别是E[1]到E[10]。
第三行给出了n个正整数,第i个数表示编号为i的人的权值W[i]。
输出格式:
只需输出一行用空格隔开的k个整数,分别表示最终的W[i]从高到低的人的编号。
输入输出样例
10 10
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
10 9 8 7 6 5 4 3 2 1
思路:模拟
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,k;
int e[];
struct nond{
int num,id;
}v[];
int cmp(nond a,nond b){
if(a.num==b.num) return a.id<b.id;
return a.num>b.num;
}
int main(){
scanf("%d%d",&n,&k);
for(int i=;i<=;i++) scanf("%d",&e[i]);
for(int i=;i<=n;i++){
scanf("%d",&v[i].num);
v[i].id=i;
}
sort(v+,v++n,cmp);
for(int i=;i<=n;i++) v[i].num+=e[(i-)%+];
sort(v+,v++n,cmp);
for(int i=;i<=k;i++) cout<<v[i].id<<" ";
}
昨天,学妹扔我帮她调一下这个题的代码,当时时间太晚了,加上那个题目也忘了,所以看了一段时间,但是没看出来。
今天又看了一遍题目。
一眼就发现了问题所在。
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int n,k;
int e[];
struct s
{
int w;
int c;
int d;
}m[];
int cmp(s x,s y)
{
if(x.w==y.w) return x.d<y.d;
return x.w>y.w;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<;i++)
scanf("%d",&e[i]);
for(int i=;i<n;i++)
{
scanf("%d",&m[i].w);
m[i].d=i+;
m[i].c=i%+;
}
sort(m,m+n,cmp);
for(int i=;i<n;i++)
for(int j=;j<;j++)
if(m[i].c==j+) m[i].w+=e[j];
sort(m,m+n,cmp);
for(int i=;i<k;i++)
printf("%d ",m[i].d);
return ;
}
/*
14 3
9 2 5 4 0 0 0 0 0 0
1 1 3 4 9 2 8 2 8 8 8 7 1 9 5 7 9
*/
这是学妹的代码。
然后,她的错误就十分显然了。
题目中有这么一句话:

这显然是她没有注意到的。
然后,这个题目改完后的代码应该是长得这个样子:
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int n,k;
int e[];
struct s
{
int w;
int d;
}m[];
int cmp(s x,s y)
{
if(x.w==y.w) return x.d<y.d;
return x.w>y.w;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<;i++)
scanf("%d",&e[i]);
for(int i=;i<n;i++)
{
scanf("%d",&m[i].w);
m[i].d=i+;
}
sort(m,m+n,cmp);
for(int i=;i<n;i++) m[i].w+=e[i%];
sort(m,m+n,cmp);
for(int i=;i<k;i++)
printf("%d ",m[i].d);
return ;
}
/*
14 3
9 2 5 4 0 0 0 0 0 0
1 1 3 4 9 2 8 2 8 8 8 7 1 9 5 7 9
*/
洛谷 P1583 魔法照片的更多相关文章
- 洛谷 P1583魔法照片 & P1051谁拿了最多奖学金 & P1093奖学金
题目:https://www.luogu.org/problemnew/show/P1583 思路:sort sort sort //#include<bits/stdc++.h> #in ...
- 洛谷 P1583 魔法照片【二级结构体排序】
题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...
- (水题)洛谷 - P1583 - 魔法照片
https://www.luogu.org/problemnew/show/P1583 设计一个strcut cmp用来比较,就可以了. #include<bits/stdc++.h> u ...
- 洛谷P1583 魔法照片【模拟+排序】
一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序,每人就有 ...
- 洛谷P1583 魔法照片
https://www.luogu.org/problem/P1583 话不多说,其实就是模拟,然后,各种繁琐 #include<bits/stdc++.h> using namespac ...
- 洛谷P1583——魔法照片(结构体排序)
https://www.luogu.org/problem/show?pid=1583#sub 题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人. ...
- Java实现 洛谷 P1583 魔法照片
import java.util.*; class Main{ public static void main(String[] args) { Scanner in = new Scanner(Sy ...
- 洛谷 U87561 魔法月饼
洛谷 U87561 魔法月饼 洛谷传送门 题目背景 \(9102\)年的中秋节注定与往年不同...因为在\(9102\)年的中秋节前夕,\(Seaway\)被告知今年的中秋节要新出一款月饼--魔法月饼 ...
- [洛谷P1822] 魔法指纹
洛谷题目连接:魔法指纹 题目描述 对于任意一个至少两位的正整数n,按如下方式定义magic(n):将n按十进制顺序写下来,依次对相邻两个数写下差的绝对值.这样,得到了一个新数,去掉前导0,则定义为ma ...
随机推荐
- 如何新建一个空的optix工程
参考链接 1.生成自定义里面添加cuda编译器 2. 修改这几个地方,设定cu文件需要的头文件.输出ptx文件的目录.生成ptx 这样就可以得到ptx了,注意ptx的路径即可 3.添加一些头文件.li ...
- HDU-1024 Max Sum Plus Plus 动态规划 滚动数组和转移优化
题目链接:https://cn.vjudge.net/problem/HDU-1024 题意 给n, m和一个序列,找m个不重叠子串,使这几个子串内元素和的和最大. n<=1e6 例:1 3 1 ...
- [洛谷P1892][codevs2597]团伙
题目大意:有n个强盗,他们有这样的关系:1.朋友的朋友是朋友:2.敌人的敌人是朋友. 两个人是朋友,则他们在一个团伙中,是敌人则在不同团伙中. 现在给出一些朋友或敌人的关系,问最多有多少团伙.输入保证 ...
- [HDU5688]2016"百度之星" - 资格赛 Problem D
题目大意:给你n个字符串,如果一个字符串可以通过重新排列变成另一个字符串,则认为这两个字符串相等.每输入一个字符串,输出这个字符串和与它相等的之前出现了几次. 解题思路:我们可以用map保存一个字符串 ...
- solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法
solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法 原创 2015年08月21日 20:47:40 标签: ...
- 在pycharm中配置Anaconda以及pip源配置
在学习推荐系统.机器学习.数据挖掘时,python是非常强大的工具,也有很多很强大的模块,但是模块的安装却是一件令人头疼的事情. 现在有个工具--anaconda,他已经帮我们集成好了很多工具了!an ...
- CAS-ERR Cannot create a session after the response has been committed
现象: 当cas 登录人数较少时候没有错误,但是用户过多时候出现下列err May-2016 18:09:11.932 SEVERE [http-nio-8080-exec-52] org.apach ...
- MapReduce----K-均值聚类算法
对于K-均值聚类算法MapReduce的过程理解例如以下: 如果有个Mapper,首先把数据集分为个子集,分布到个Mapper上,初始化..并同一时候广播到H个Mapper上. E步: 在第一台Map ...
- UTF8有很明显的特征:如果最高字节为0,则表示一个英文字符(与ASCII完全相同)。如果有2个以上1,表示是首个字节。如果最高位是10,则表示一个中间字节。
摘自<Qt中的C++技术.pdf> page 33
- eclipse:报错信息The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path
JavaWeb: 报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Bui ...