15 条题解
-
1猫粮寸断 LV 10 @ 2018-11-06 17:43:49
//字符串真好用QwQ //贪心部分,每个人存一下最小排名,按排名排序,如果一个人的排名与在他前面的人数量相等,那这个人的排名是确定的 //注意处理排名相同的情况 #include<iostream> #include<algorithm> #include<cstring> using namespace std; struct node{ string c; int ranke; }q[510]; int cmp(const node&x,const node&y) { return x.ranke<y.ranke; } char a[4]; string b; int main() { int n,i,j,k,t,m,now=0,has=0,ji=0; cin>>n; for(i=1;i<=n;i++) { cin>>t>>a>>m; for(j=1;j<=t;j++) { cin>>b; for(k=1;k<=now;k++) if(b==q[k].c) break; if(k<=now) q[k].ranke=min(q[k].ranke,m); else { now++; q[now].c=b; q[now].ranke=m; } } } sort(q+1,q+now+1,cmp); q[0].ranke=-1; for(i=1;i<=now;i++) { ji++; if(q[i].ranke!=q[i-1].ranke) { has+=ji; ji=0; } //cout<<q[i].ranke<<" "<<q[i].c<<endl; if(q[i].ranke==has) cout<<has<<" "<<q[i].c<<endl; } return 0; }
-
12016-12-17 12:15:33@
/*
思路:预处理:将歌曲输入的时候编号,歌曲名存于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;
} -
02014-10-16 18:06:05@
默默的想问一下逻辑那里出了问题,求解?
#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);
} -
02009-11-05 20:05:24@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms嘿嘿 1A哦~~
-
02009-10-24 15:08:11@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms千万注意 ansistring...
-
02009-10-18 16:00:58@
编译通过...
├ 测试数据 01:答案正确... 25ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25mssunny的杰作
-
02009-02-04 14:59:56@
编译通过...
├ 测试数据 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的提醒!!!!!!!!!!!! -
02007-11-08 14:40:10@
根据最末可能排序
-
02007-08-20 16:53:05@
AC
-
02007-08-02 09:20:55@
怎么第7点及第10点总超时?用oibh上的数据测瞬间就出解了。
?????哪位大牛解释下?十分感谢! -
02007-02-05 23:21:58@
编译通过...
├ 测试数据 01:答案正确... 119ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 56ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:175ms
一次ac,就是输入读得大了 -
02006-12-27 20:03:51@
预处理f[i]代表必须放在[1,i]这个范围内(当然可以是[1,i]的子集)的歌的个数
f[i]=i说明1..i区间内被安排满了,此时如果再有f=i+1,说明。。。。 -
02006-11-15 08:46:50@
编译通过...
├ 测试数据 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测的啊。 难道是读入时耗的时 -
02006-11-07 17:24:36@
vijos的数据 是不是和oibh 公布一模一样呢/?
我怎么在 自己的计算机上都是一闪出解,为何提交时 最后一个点tle 呢?
。。。。。。
只能用神奇来形容了。。 同一个程序 再交一遍就A 了。 汗。
-
02006-11-05 15:19:33@
编译通过...
├ 测试数据 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