您的位置:首页 > 其它

2015.07.28 (3)

2015-07-29 10:39 183 查看
做多校被虐成狗了---什么都不会啊~~

还是觉得把能够想懂一点的,不管是看的别人的题解或者代码的,还是看的标程的,都记录一下--

加油------

1001 Magician

1002 RGCDQ

先筛素数,然后记录

prime[1] = 2;

prime[2] = 3;

prime[3] = 5;

prime[4] = 7;

prime[5]=11;

记录下这个是为了计算cnt[]数组,cnt[i]表示i由几种素数构成

再算pre[i][j]表示的是前i个数,f(i) = j的数的个数

然后再查询就可以了。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int n,k;
const int maxn =1005;
vector<int> g[maxn];
int cnt;

void dfs(int u){
for(int i = 0;i < g[u].size();i++){
int v = g[u][i];
cnt++;
dfs(v);
}
}

int main(){
while(scanf("%d %d",&n,&k) != EOF){
for(int i = 1;i <= n;i++) g[i].clear();
for(int i = 1;i < n;i++){
int u,v;
scanf("%d %d",&u,&v);
g[u].push_back(v);
}
int ans = 0;
for(int i = 1;i <= n;i++){
cnt = 0;
dfs(i);
//    printf("cnt = %d\n",cnt);
if(cnt == k) ans ++;
}
printf("%d\n",ans);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: