集训队每周一赛2020-03-22(思维+概率+错排)

第四次周赛

  • A 大娃力无穷
    • CodeForces 999A
    • 题解
  • B 二娃晓天地
    • HDU 1465
    • 题解
  • C 三娃钢铁躯
    • CodeForces 1133D
    • 题解
  • D 四娃通控火
    • CodeForces 735D
    • 题解
  • E 五娃操雷雨
    • HDU 5978
    • 题解
  • F 六娃无影踪
    • Gym 100662A
    • 题解

A 大娃力无穷

CodeForces 999A

传送门.
小丑决定今天休息一下,于是他走进了一家游乐场。游乐场里有高矮胖瘦的小盆友。小丑的脑海中不禁浮现出一个画面:在一艘海盗船上坐着n个熊孩子,海盗船周期性地摇摆,每个周期都会在船头或者船尾甩出去一个熊孩子,但是体重大于k的熊孩子会牢牢地抱住船体不能被甩出去。小丑想知道最多能甩出去多少熊孩子。

Input
第一行输入两个整数n和k。1<=n,k<=100
第二行输入n个孩子的体重(小于100)。

Output
输出一个整数——最多能甩出去的孩子数。

Examples
Input
7 5
1 6 4 9 5 8 3
Output
2
Input
5 2
3 1 2 1 3
Output
0
Input
5 100
12 34 55 43 21
Output
5

题解

#include
int main()
{
    int n,k,i,j,count=0,a[105];
    scanf("%d %d",&n,&k);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
        {
            if(a[i]<=k)
                count++;
            else
                break;
        }
    for(i=n-1;i>=0;i--)
    {
        if(a[i]<=k)
            count++;
        else
            break;
    }
    if(count/n==2)
        count=n;
    printf("%d",count);
    return 0;
}

B 二娃晓天地

传送门.

HDU 1465

WBH垃圾丢错啦,他想知道有多少种丢错垃圾的可能,总共有n袋垃圾和n个垃圾桶,假设wbh全丢错了呢,那么他有多少种丢错的可能,请输出一个值代表wbh有多少种可能全丢错
Input
输入数据包含多个多个测试实例,每个测试实例占用一行,每行包含一个正整数n(1 Output
对于每行输入请输出可能的错误方式的数量,每个实例的输出占用一行。
Sample Input
2
3
Sample Output
1
2

题解

#include 
#define ll long long  
ll fun(ll n){  
    if(n==1)  return 0;  
    if(n==2)  return 1;  
    return (n-1)*(fun(n-1)+fun(n-2));  
}
 
int main(){  
    ll n,ans;  
    while(scanf("%lld",&n)!=EOF) 
    {
    	ans=fun(n);
    	printf("%lld\n",ans);
	}
    return 0;  
}  

C 三娃钢铁躯

CodeForces 1133D

传送门

第一行给一个n(<=10^5)

第二行n个数,代表a数组(-109<=ai<=109)

第二行n个数,代表b数组(-109<=bi<=109)

请你找一个最佳的d(可以是一个小数)使得ci = d*ai+bi,ci数组中0的个数尽可能多

Output
输出一个整数,c数组中最多可以有几个0.

Examples
Input
5
1 2 3 4 5
2 4 7 11 3
Output
2
Input
3
13 37 39
1 2 3
Output
2
Input
4
0 0 0 0
1 2 3 4
Output
0
Input
3
1 2 -1
-6 -12 6
Output
3

题解

#include
#include
using namespace std;
map<long double, int>c;
const int N = 2e5+10;
int a[N], b[N];
int i,n,maxx=0,ans=0;
int main()
{
	cin>>n;
	for(i=1; i<=n; i++)
		cin>>a[i];
	for(i=1; i<=n; i++)
		cin>>b[i];
	for(i=1; i<=n; i++)
	{
		if(a[i] == 0)
		{
			if(b[i]==0) ans++;
			else continue;
		}
		else
		{
			long double tmp = b[i]*1.0/a[i];
			c[tmp]++;
			maxx = max(maxx,c[tmp]);
		}
	}
	cout<<maxx+ans<<endl;
	return 0;
}

D 四娃通控火

CodeForces 735D

传送门

Mr. Frog住在一个税收制度很奇怪的国家
如果Mr. Frog的收入为 n (n ≥ 2) 元,那么他应该交n的最大的小于n的因子的税
For example,
n=6,交3,
n=25,交5,
n=7,交1
但是Mr. Frog已经身经百战,见得多了,他可以把自己的工资分成任意多份(每份数量为整数)分别按照这个规则缴税来逃税,那么,Mr. Frog最少需要交多少税呢

Input

一行一个整数 n (2 ≤ n ≤ 2·109) 表示Mr. Frog的收入

Output

一个整数,表示Mr. Frog最少交的钱数

Example

Input
4
Output
2
Input
27
Output
3
Hint
4=2+2
27=3+11+13

Mr. Frog 希望你们多猜想猜想
没有证明的东西在某个范围内还是正确的嘛
闷声发大财,这是最吼的

题解

#include
#include
#define ll long long
int isprime(ll n)
{
	int i;
	for(i=2; i<=sqrt(n); i++)
	{
		if(n%i==0)
		return 0;
	}	
	return 1;
}
int main ()
{
	ll i,n,flag=1;
	while(scanf("%lld",&n)!=EOF)
	{
		if(n%2==0)
		{
			if(n==2)
				printf("1\n");
			else if(!isprime(n)) printf("2\n");			
		}
		else
		{
			if(isprime(n)) printf("1\n");
			else
			{
				if(isprime(n))
				printf("1\n");
				else if(isprime(n-2))
				printf("2\n");
				else printf("3\n");
			}
		}	
	}
	return 0;
}

E 五娃操雷雨

HDU 5978

传送门

一个盒子里有一个红球和k个黑球.嘻嘻和哈哈不放回地交替从盒子里拿球, 直到红球被拿出,并且拿到红球的获胜.哈哈是一个长者, 为了给嘻嘻一点人生的经验,他让嘻嘻决定谁先拿.嘻嘻预感到自己先走的话可能会更好,因为他可能第一次就获胜.但如果他第一次拿到的是黑球, 那哈哈获胜的概率就会变大,因为一个黑球被去除掉了.嘻嘻应该让谁先拿才能使自己获胜的概率最大?

Input
多组输入数据( 数据总数小于50)
每组数据含有一个整数k ( 1≤k≤10^5)
Output
对于每组数据, 输出:
1, 如果先拿的有优势
2, 如果后拿的有优势
0, 如果不管谁先谁后, 概率都是一样的
Sample Input
1
2
Sample Output
0
1

题解

#include
int main()
{
	int k;
	while(scanf("%d",&k)!=EOF)
	{
		if(k==1)
		printf("0\n");
		else if(k%2==0)
		printf("1\n");
		else printf("0\n");
	}
	return 0;
 } 

F 六娃无影踪

Gym 100662A

传送门

总所周知,小G最宠女友的,而小G的女友最喜欢唱歌,奈何她唱
得实在不咋地~~~ ~~。突然一日,小G女友想开个演唱会(…又
怎么会有观众呢…)。小G只好花钱买点观众,让这些观众去捧
场,唱完给小G女友鼓鼓掌,怎知道观众这东西他有个害羞值,
何为害羞值,若一个观众的害羞值为k,那么这个观众只有在场
上有k个及以上的人鼓掌了,这个观众才会鼓掌(害羞值为0的观
众就意味着等小G女友一唱完他就会鼓掌)。若到场的观众没有
全部都鼓掌,小G女友会感到难堪。小G不想让女友感到难堪,已
知小G已经买了n名观众(不能退货),这些观众都有其特定的害
羞值,为了使到场的所有观众都鼓掌,小G有可能还需要买观众
(额外买的观众,小G可以指定这些观众的害羞值),问:小G至
少还需要买多少观众????
输入描述:
第一行为1个正整数T(1 <= T <= 1000),表示样例数,以下有T
个样例
每个样例包含一个整数非负整数m(m <= 1000)和一个长度为
m+1的数字串S,数字m表示小G已经购买的观众的害羞值范围在
[0,m],m+1的数字串S: 表示害羞值为0的观众买了S[0]位,害
羞值为1的观众买了s[1]位…害羞值为m的观众买了s[m+1]
位,保证s[i]在0~9之间;
输出描述:
对于每个样例输出一行:Case #x: ans,x为样例序号,ans为 小G至少还需要购买的观众数量
示例:
Input
3
4 11111
1 09
5 110011
0 1
Ouput
Case #1: 0
Case #2: 1
Case #3: 2
Case #4: 0

题解

#include
int main()
{
	int i,t,m,cas=1,ans,sum;
	char a[1005];
	scanf("%d",&t);
	while(t--)
	{
		ans=0,sum=0;
		scanf("%d",&m);
		scanf("%s",&a);
		for(i=0;i<m;i++)
		{
			sum+=a[i]-'0';
			if(sum<i+1)
			{
				ans++;
				sum++;
			}
		}
		printf("Case #%d: %d\n",cas++,ans);
	}
	return 0;
}

你可能感兴趣的:(比赛)