“Shopee杯” e起来编程暨武汉大学2020年大学生程序设计大赛决赛(重现赛)

比赛链接

文章目录

  • A题 A Simple Problem about election
    • 题目描述
    • 题解:
    • 代码:
  • D题 Deploy the medical team
    • 题意:
    • 题解:
    • 代码:
  • F题 Figure out the sequence
    • 题意:
    • 题解:
    • 代码

A题 A Simple Problem about election

链接:

题目描述

n名候选人,每个人必须提名其中m个人,(也可以提名自己),候选人将按照获得的提名降序排列,如果数量相同则按照名字字典序递增排列。
每个人也是按照名字依次提名m人,
叫ZZZZSGW的这个人感觉自己太倒霉了,(名字这么多z,每次提名),他最后提名,问还能不能让自己获得最高地位?

样例:
输入

2
5 3
5 1 2 6 7
5 3
5 1 2 5 7

输出

3
2

题解:

自己肯定还是要给的,然后剩下的m-1个票就要尽可能与自己票数相差大的人(也就是不对自己的排名造成影响),有两种情况,一个是比自己票多的,还有个是被投一票也赶不上自己的
但是如果票过多,就只能被迫给剩下的人投票
贪心即可
详细见代码

代码:

#include<bits/stdc++.h>
#define forr(n) for(int i=1;i<=n;i++)
using namespace std;
const int maxn=1e5+7;
int a[maxn]; 
int main(){int T,ans=0;;cin>>T;while(T--){int n,m;scanf("%d%d",&n,&m);forr(n)cin>>a[i];int w=++a[1];//先给自己投票 int q=m;--q;//投完自己,投票次数少一个 if(q==0);else {for(int i=2;i<=n;++i){if(a[i]>=w)//如果票比他多 {++a[i];--q;}else if(a[i]+1<w)//如果这个人投一票也赶不上 {++a[i];--q;}if(!q)//如果都投完退出 {break;}}}for(n){if(a[i]>=a[1])ans++;}//全部投完票后看看自己排第几名 cout<<ans+q<<endl;//如果还有余票 }return 0;
}

D题 Deploy the medical team

链接:

题目描述

The outbreak of the COVID-19 has infected more than 50,000 people in
Wuhan and nearly 70,000 people in Hubei province, which brings on
great pressure on the local hospital and medical workers. To help the
people in Hubei defeating the virus and returning to normal life as
soon as possible, many other province deployed their medical teams to
Hubei and offered lots of help.

Now it’s the time for a hospital in Bitland to choose who will be sent
to join this great mission. There are nn medical workers in the
hospital ready to deploy and you can send arbitrary numbers of persons
to the team. Also, a medical team need a captain in charge of all the
work, so once we confirm the people in the team, we need to set one of
them as captain too. However, being a captain needs a lot experience,
so there are only mm people capable with the responsibility of a
captain. Therefore, A team cannot be made up of people without someone
that can be the captain.

And here’s the question: How many ways are there to pick up a medical
team with a captain? Notice that two teams are consider different as
long as they have different participants or have different captain.

Also, due to the large memory of Bitland, the number of workers in
hospital can be as large as 109 ! And that means your answer can be
very large, so please output the result of the answer modulo 109+7

输入描述:

The input consists of multiple test cases. The first line of the input
contains an integer T — the number of the test cases.

For each test cases, there will be two integers nn,mm separated by
space in one line, which means the number of workers in hospital and
the numbers of people who can be the captain. Here 0≤m≤n≤109 .

输出描述:

For each test case, output a single integer ansans in a line, denoting
the answer modulo 109+7

示例1
输入

3
3 3
5 4
2 1

输出

12
64
2

题意:

一共n个人,m个人可以当队长,每个队只能有一个队长,也必须有一个队长,问组队方法?
(最讨厌英语题了)

题解:

组合数问题
先从m人中选一个队长,剩下n-1个人任选即可
C0n-1+C1n-1+C2n-1…+Cn-1n-1=2n-1
sum=m*2n-1

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll qpow(ll a, ll b) 
{ll ans = 1;while(b) {if(b & 1) ans = ans * a % mod;a = a * a % mod;b >>= 1;}return ans;
}
int T;
ll n, m;
int main() {cin >> T;while(T--) {cin >> n >> m;printf("%lld\n",m * qpow(2, n - 1) % mod );}return 0;
}

F题 Figure out the sequence

题意:

两个字符串,一次叠加,问你n轮后,每个字母出现个数

样例:
链接:https://ac.nowcoder.com/acm/contest/5523/F
来源:牛客网

输入

Abc
def
4

输出

A: 1
b: 1
c: 1
d: 2
e: 2
f: 2

根据样例输入我们可以都到每轮叠加后的串
在这里插入图片描述
n=4时就是 defabcdef
分别统计每个字母的个数

题解:

dp
我们可以看出要求第n轮,就是第n-1轮加n-2轮
因为问的是个数,所以不用管顺序递推就可以
f[i][j]表示第i个字符串中字母j出现的次数(此处j为int型对应的是char型的字符)
得到递推式:f [ i ] [ j ] = f[ i - 1 ] [ j ]+ f [ i -2 ] [ j ]
我们一开始将读入的s1和s2进行预处理
也就是先给f[1][j]与f[2][j]赋值
具体可以看代码:

代码

#include<bits/stdc++.h>
#define forr(i,n) for(int i=0;i<n;i++)
using namespace std;
typedef long long ll;
const int maxn=1e5+7;
ll f[maxn][1000]; 
inline ll read()
{ll s=0,w=1;char ch=getchar();while(ch<48||ch>57){if(ch=='-')w=-1;ch=getchar();}while(ch>=48&&ch<=57)s=(s<<1)+(s<<3)+(ch^48),ch=getchar();return s*w;
}
int main()
{string s1,s2;int n;cin>>s1>>s2;n=read();forr(i,s1.size()){int w=(int)s1[i];f[1][w]++;
//		printf("%c %lld\n",w,f[1][w]);}forr(i,s2.size()){int w=(int)s2[i];f[2][w]++;}for(int i=3;i<=n;i++){forr(j,300){f[i][j]=f[i-1][j]+f[i-2][j];}}forr(j,300){if(f[n][j])printf("%c: %lld\n",j,f[n][j]);}return 0;}
//“defabcdef”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kruskal重构树

建树 模仿kruskal的过程&#xff0c;先将边权排序 依次遍历每条边 若该边连接的两个节点u和v不在一个并查集内 就新建一个结点node 该点点权为这条边的边权 找到u&#xff0c;v所在并查集的根 fufufu,fvfvfv 连边(node,fu)(n o d e , fu )(node,fu) (node,fv)( n o d e , f…

【斜率优化】玩具装箱(luogu 3195)

玩具装箱 luogu 3195 题目大意 有n件物品&#xff0c;每件物品有相对的长度CiC_iCi​现在要把这n件物品放到容器中&#xff0c;切放的物品必须是连续的&#xff0c;若把第i件物品到第j件物品放到一个容器中&#xff0c;那此容器的长度定义为xj−i∑kijCixj−i\sum_{ki}^{j} …

P5895-[IOI2013]dreaming梦想【树的直径,结论】

正题 题目链接:https://www.luogu.com.cn/problem/P5895 题目大意 nnn个点的一个森林&#xff0c;加入若干条长度为LLL的边使它变成一个树&#xff0c;求这棵树的最小直径。 解题思路 显然最优情况一定是以某个节点作为中间展开的一个菊花图&#xff08;每棵树看做一个点&…

RabbitMQ一个简单可靠的方案(.Net Core实现)

前言最近需要使用到消息队列相关技术&#xff0c;于是重新接触RabbitMQ。其中遇到了不少可靠性方面的问题&#xff0c;归纳了一下&#xff0c;大概有以下几种&#xff1a;1. 临时异常&#xff0c;如数据库网络闪断、http请求临时失效等&#xff1b;2. 时序异常&#xff0c;如A任…

CF1120D Power Tree(树形DP/构造+差分+最小生成树)

解法一&#xff1a;树形DP 个人觉得这个方法是比较可能想到的&#xff0c;但是输出方案很恶心 先转换题意&#xff1a;“无论怎样规定叶子的初始点权&#xff0c;都可以通过操作你选择的点来让所有叶子的点权清空”意味着每个叶子节点都可以通过一系列操作单独1、-1 模拟一下…

牛牛染颜色

链接&#xff1a; 文章目录题目描述题意&#xff1a;题解&#xff1a;核心代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 牛牛最近得到了一颗树&#xff0…

【数学期望】【LCA】【树形DP】树

树 题目大意 给你一棵有n个节点的树&#xff0c;以及m个询问&#xff0c;每个询问需要你回答一个点到另一个点要经过的期望边数 输入样例 4 2 1 2 2 3 3 4 1 4 3 4输出样例 9 5 数据范围 对于 20%20\%20%的数据,N⩽10.N \leqslant 10.N⩽10. 对于 40%40\%40%的数据,N⩽10…

P3768-简单的数学题【莫比乌斯反演,杜教筛】

正题 题目链接:https://www.luogu.com.cn/problem/P3768 题目大意 给出n,pn,pn,p求∑i1n∑j1ngcd(i,j)∗i∗j\sum_{i1}^n\sum_{j1}^ngcd(i,j)*i*ji1∑n​j1∑n​gcd(i,j)∗i∗j模ppp的值。 解题思路 下文中定义Hy(x)∑i1xiyH_y(x)\sum_{i1}^xi^yHy​(x)∑i1x​iy 首先显然是…

.netcore consul实现服务注册与发现-单节点部署

一、Consul的基础介绍Consul是HashiCorp公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案&#xff0c;比如 Airbnb的SmartStack等相比&#xff0c;Consul的方案更“一站式”&#xff0c;内置了服务注册与发现框 架、分布一…

MST(最小生成树)上的确定性和存在性问题

题目1&#xff1a; 给定一个n个点m条边的连通图&#xff0c;保证没有自环和重边。对于每条边求出,在其他边权值不变的情况下,它能取的最大权值&#xff0c;使得这条边在连通图的所有最小生成树上。假如最大权值为无限大&#xff0c;则输出-1。 题解&#xff1a; 先求出图的一…

牛客网 【每日一题】[SCOI2009]粉刷匠

链接&#xff1a; 题目描述 windy有 N 条木板需要被粉刷。 每条木板被分为 M 个格子。 每个格子要被刷成红色或蓝色。 windy每次粉刷&#xff0c;只能选择一条木板上一段连续的格子&#xff0c;然后涂上一种颜色。 每个格子最多只能被粉刷一次。 如果windy只能粉刷 T 次&#…

CF932E-Team Work【斯特林数,组合数学】

正题 题目链接:https://www.luogu.com.cn/problem/CF932E 题目大意 给出n,kn,kn,k&#xff0c;求∑i1nC(n,i)∗ik\sum_{i1}^nC(n,i)*i^ki1∑n​C(n,i)∗ik 解题思路 上式子的话&#xff0c;大体是先拆开iki^kik变成∑i1n(ni)∑j0k{kj}(ij)j!\sum_{i1}^n\binom{n}{i}\sum_{j0…

【数学】异或

异或 题目大意 问你不小于nnn的数对(a,b)(a,b)(a,b)&#xff0c;有多少个满足gcd(a,b)a⊕bgcd(a,b)a \oplus bgcd(a,b)a⊕b 输入样例#1 12输出样例#1 8输入样例#2 123456输出样例#2 214394数据范围 测试点数据规模110210031000450005100006100000750000081000000950000…

分布式事务解决方案以及 .Net Core 下的实现(上)

数据一致性是构建业务系统需要考虑的重要问题 &#xff0c; 以往我们是依靠数据库来保证数据的一致性。但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题。最近在研究分布式事物&#xff0c;分布式的解决方案有很多解决方案&#xff0c;也让我在研究的同…

[AGC014D] Black and White Tree(树形DP,博弈)

每次找到所有叶子节点&#xff0c;把它们的父亲染白&#xff0c;自己染黑。这个时候染完的叶子节点及其父亲节点对树的其他部分已无影响 ,可以直接删掉。 那么只需要判断树的其他部分是否有先手必胜策略即可。用递归遍历。 边界条件&#xff1a;若树为单一节点先手必胜。 代…

【每日一题】5月7日题目精讲 「火」皇家烈焰

链接&#xff1a; 「火」皇家烈焰 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 帕秋莉掌握了一种火属性魔法 由于钟爱扫…

【最小生成树】灌水

灌水 题目大意 给你n个点&#xff0c;你可以在某个点建水库&#xff08;生产水&#xff09;&#xff0c;或从其他有水的点建水管送过来 现在问你让所有点都有水的最小代价是多少 输入样例 4 5 4 4 3 0 2 2 2 2 0 3 3 2 3 0 4 2 3 4 0输出样例 9样例解释 FarmerJohnFarmer …

P6257-[ICPC2019 WF]First of Her Name【AC自动机】

正题 题目链接:https://www.luogu.com.cn/problem/P6257 题目大意 给出一个字典树&#xff0c;kkk次询问求每个节点出发到根节点的路径有多少包含前缀sis_isi​。 解题思路 我们按照所有询问串的反串构造ACACAC自动机。 那么此时如果我们用一个串SSS上去跑匹配的话&#xf…

微软MVP张善友告诉你,微服务选型要注意这些地方

周六的下午&#xff0c;广州周大福金融中心的写字楼静悄悄的&#xff0c;53楼的实盈多功能会议室却异常火爆&#xff0c;热闹非凡。来自广州各大科技公司的技术小伙伴们齐聚一堂&#xff0c;他们都在期待着一个人&#xff0c;那就是——微软MVP张善友和他带来的 .NET Core 微服…

像鱼

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 给你一个边长为 n 的用硬币摆成的实心三角形&#xff0c;请问把他倒过来最少需要多少步&#xff1f; 例子…