您的位置:首页 > 编程语言 > C语言/C++

第六届蓝桥杯C++B组省赛

2016-03-01 19:03 253 查看
1.奖券数目

2.星系炸弹

3.三羊献瑞

4.格子中输出

5.九数组分数

6.加法变乘法

7.牌型种数

8.移动距离

9.垒骰子

10.生命之树

1.奖券数目

奖券数目
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。

答案:52488

s.直接求就行了,8*9*9*9*9=52488

2.星系炸弹

星系炸弹
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

答案:2017-08-05

s.使用表格快速求解。(当时是苦b的手算的。。。还好算对了。)

3.三羊献瑞

三羊献瑞
观察下面的加法算式:
祥 瑞生 辉
+ 三羊 献 瑞
-------------------
三 羊 生 瑞 气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

答案:1085

s.这个么,暴力枚举就可以了。

c.

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long LL;
const int MAXN=100005;
vector<int> tree[MAXN];
int w[MAXN];
int n;
LL dp[MAXN];
int vis[MAXN];
LL maxn;
void dfs(int u)
{
vis[u]=1;
dp[u]=w[u];
LL sum=0;
for(int i=0;i<tree[u].size();i++)
{
int v=tree[u][i];
if(!vis[v])
{
dfs(v);
if(dp[v]>=0)
sum+=dp[v];
}
}
if(sum>0)    dp[u]+=sum;
maxn=max(dp[u],maxn);
}
int main()
{
maxn=-0x3fffffffffffffff;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&w[i]);

for(int i=1;i<=n-1;i++)
{
int u,v;
scanf("%d%d",&u,&v);
tree[u].push_back(v);
tree[v].push_back(u);
}
dfs(1);
printf("%I64d\n",maxn);

return 0;
}
/*
-2 3 1 -5 2 4 7
2
3
4
5
6
7
*/


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