15 条题解
-
1
猫粮寸断 LV 10 @ 6 年前
-
18 年前@
/*
思路:预处理:将歌曲输入的时候编号,歌曲名存于song[][]内
用f[i]表示前i名内有几首歌
用s[i][101]存放前i名内各歌曲编号,如s[i][j]=1表示第j首歌在前i名
用ans[i]表示确定为第i名的歌曲编号 若ans[i]不为0方才输出
*/
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=101;
char song[N][26],temp[26];
int f[N],s[N][101],ans[N],now=0;
int pd(char s[26])//判断歌曲名是否已经存在,若存在返回编号,不存在则新建一个编号
{for(int i=1;i<=now;i++)
if(strcmp(song[i],s)==0) return i;
now++;
strcpy(song[now],s);
return now;
}
int main()
{int n,i,j,t,mmax=0,a,b;
scanf("%d",&n);
//输入预处理
for(i=1;i<=n;i++)
{scanf("%d %s %d",&a,temp,&b);
for(j=1;j<=a;j++)
{scanf("%s",temp);
t=pd(temp);
s[b][t]=1; //前b名编号为t的歌存在
mmax=mmax<b?b:mmax;
}
}
//从1到mmax统计各名次的个数
for(i=1;i<=mmax;i++)
{if(f[i-1]==i-1)
{//找出不相同的编号存到ans中
for(j=1;j<=now;j++)
{if(s[i][j] && !s[i-1][j]) { ans[i]=j;break;}
}
}
//更新当前名次存在的歌曲编号,统计个数
t=0;
for(j=1;j<=now;j++)
{
if(s[i-1][j]) s[i][j]=1;
if(s[i][j]) t++;
}
f[i]=t;
}
//输出答案
for(i=1;i<=now;i++)
{if(ans[i])
{printf("%d %s\n",i,song[ans[i]]);
}
}
return 0;
} -
010 年前@
默默的想问一下逻辑那里出了问题,求解?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct ism
{
int A;
int B;
char str[100][26];
} Ism;
char str_mark[100][26];
int mark;
int compare(const void* a,const void* b);
int main()
{
int n;
scanf("%d",&n);
Ism ism[n];
int i,j,t;
for(i=0; i<n; i++)
{
scanf("%d and %d ",&ism[i].A,&ism[i].B);
for(j=0; j<ism[i].A; j++)
scanf("%s",ism[i].str[j]);
}
qsort(ism,n,sizeof(Ism),compare);
if(ism[0].B==1)
printf("%d %s",ism[0].B,ism[0].str[0]);
else
{
for(i=0; i<ism[0].A; i++)
strcpy(str_mark[mark++],ism[0].str[i]);
}
int fs=0;
for(i=1; i<n; i++)
{
if(ism[i].B-ism[i-1].B==1)
{
for(j=0; j<ism[i].A; j++)
{
fs=0;
for(t=0; t<mark; t++)
{
if(!strcmp(str_mark[t],ism[i].str[j]))
{
fs=1;
break;
}
}
if(fs==0&&j<ism[i].A)
break;
}
printf("%d %s\n",ism[i].B,ism[i].str[j]);
}
else
{
for(j=0;j<ism[i].A;j++)
{fs=0;
for(t=0; t<mark; t++)
{
if(!strcmp(str_mark[t],ism[i].str[j]))
{
fs=1;
break;
}
}
if(fs==0&&j<ism[i].A)
{
strcpy(str_mark[mark++],ism[i].str[j]);
}
}
}
}return 0;
}
int compare(const void* a,const void* b)
{
return(((Ism*)a)->B-((Ism*)b)->B);
} -
015 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms嘿嘿 1A哦~~
-
015 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms千万注意 ansistring...
-
015 年前@
编译通过...
├ 测试数据 01:答案正确... 25ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25mssunny的杰作
-
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
用ANSISTTRING才过,感谢LoLitter的提醒!!!!!!!!!!!! -
017 年前@
根据最末可能排序
-
017 年前@
AC
-
017 年前@
怎么第7点及第10点总超时?用oibh上的数据测瞬间就出解了。
?????哪位大牛解释下?十分感谢! -
018 年前@
编译通过...
├ 测试数据 01:答案正确... 119ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 56ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:175ms
一次ac,就是输入读得大了 -
018 年前@
预处理f[i]代表必须放在[1,i]这个范围内(当然可以是[1,i]的子集)的歌的个数
f[i]=i说明1..i区间内被安排满了,此时如果再有f=i+1,说明。。。。 -
018 年前@
编译通过...
├ 测试数据 01:答案正确... 9ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9ms
为什么有一个9ms 这可是puppy测的啊。 难道是读入时耗的时 -
018 年前@
vijos的数据 是不是和oibh 公布一模一样呢/?
我怎么在 自己的计算机上都是一闪出解,为何提交时 最后一个点tle 呢?
。。。。。。
只能用神奇来形容了。。 同一个程序 再交一遍就A 了。 汗。
-
018 年前@
编译通过...
├ 测试数据 01:答案正确... 119ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 103ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:222ms用STRING就不过 用ANSISTTRING就过 我无语了-.-
- 1