L2-020 功夫传人 /L2-019 悄悄关注 (25 分)

本文探讨了两个编程问题:一是利用递归解决功夫传人的贡献计算问题,涉及路径传播和权重衰减;二是实现悄悄关注功能,通过排序和条件判断找出可能导致关注数超过设定值的用户。这两部分主要涉及数据结构、算法和逻辑推理。
摘要由CSDN通过智能技术生成

L2-020 功夫传人 (25 分)

请添加图片描述

代码

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
vector<vector<ll> > mp(100001);
vector<int> st(100001);
double ans = 0;
ll n ;
double tt, r;
	
void dfs(int x, double cn){
	//cout<<x<<" "<<cn<<" "<<ans<<endl;
	if(st[x]) ans += st[x] * cn;
	
	for(int k : mp[x]){
		dfs(k , cn * (1 - r/ 100) );
	}
}


int main()
{

	cin >> n >> tt >> r;
	
	for(int i = 0 ; i < n ; i ++){
		int k ;
		cin >> k;
		if(k == 0){
			cin >>st[i];
			continue;
		}
		for(int j = 0 ; j < k ; j ++){
			int sn;
			cin >> sn;
			mp[i].push_back(sn);
		}
	}
	
	dfs(0 , tt);
	printf("%lld",(ll)ans);
	return 0;
 } 

L2-019 悄悄关注 (25 分)

请添加图片描述

代码

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
map<string ,int> mp;


int main()
{
	int n ; 
	cin >> n;
	for(int i = 0 ; i < n ; i ++){
		string str;
		cin >> str;
		mp[str] = -1;
	}
	vector<pair<string , int > > cn;
	int m ;
	cin >> m;
	int ans = 0;
	for(int i = 0 ; i < m ; i ++){
		string str;
		int k;
		cin >> str >> k;
		ans += k;
		if(!mp[str]){
			cn.push_back({str,k});
		}
	}
	sort(cn.begin() , cn.end());
    bool flag = true;
	for(auto tt : cn){
		if(tt.second * m > ans){
            flag = false;
			cout<<tt.first<<endl;
		}
	}
    if(flag) cout<<"Bing Mei You";
	return 0;
 } 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值