今天做一道那天没过的PAT考试题,真是各种无语啊,感觉数据出的也有点弱,真是水过咯,如果再强点,估计我这代码也是要跪的节奏。感觉最近状态还是不错,基本没什么特别卡的情况,编码水平感觉到了一个瓶颈,跨过去可能会有更大的提高,继续努力咯。。。。
pat 主页http://pat.zju.edu.cn,1047题,主要是个模拟的选课题目,大家有兴趣可以看下,顺便还是为浙大pat考试打个小广告吧,这样比赛的感觉还是挺爽的,大家没事的时候也可以参加一下。
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct name_stu
{
char name[5];
};
struct stu
{
int len, w[21];
name_stu name;
int v;
};
struct cou
{
int q[2505];
int len;
};
stu dp[40001];
cou f[2505];
bool cmp(stu a, stu b)
{
if(strcmp(a.name.name, b.name.name) < 0) return true;
return false;
}
int main()
{
int n, m, i, j, c, k, k1;
while(scanf("%d%d", &n, &m) != EOF)
{
for(i = 0; i < n; ++i)
{
scanf("%s %d", dp[i].name.name, &dp[i].len);
for(j = 0; j < dp[i].len; ++j)
{
scanf("%d", &dp[i].w[j]);
f[dp[i].w[j]].len = 0;
}
}
sort(dp, dp+n, cmp);
for(i = 0; i < n; ++i)
{
dp[i].v = i;
}
for(i = 0; i < n; ++i)
{
for(j = 0; j < dp[i].len; j++)
{
k = dp[i].w[j];
k1 = f[k].len;
f[k].q[k1] = dp[i].v;
f[k].len++;
}
}
for(i = 1; i <= m; ++i)
{
printf("%d %d\n",i, f[i].len);
for(j = 0; j < f[i].len; ++j)
{
printf("%s\n",dp[f[i].q[j]].name.name);
}
}
}
return 0;
}
4360

被折叠的 条评论
为什么被折叠?



