yhm138

目录

试题地址

https://www.nowcoder.com/test/17963624/summary

1

沫璃有一个画板,画板可以抽象成有100行每行100个像素点的正方形。沫璃在画板上画画,她一共画了n次,每次将一个矩形涂上颜色。沫璃想知道一共有多少个像素点被她涂过颜色。若一个像素点被涂了k次,那么认为有k个像素点被涂过颜色。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
ll x11,y11,x22,y22;
ll ans;
ll n;
int main(){
	cin>>t;
	
	while(t--){
		ans=0;
		cin>>n;
		for(ll i=0;i<n;i++){
			cin>>x11>>y11>>x22>>y22;
		    ans+=((x22-x11+1)*(y22-y11+1));
		}
		cout<<ans<<endl;
	}
	
	return 0;
}

2

沫璃发起了一场交易,她将她的5个朋友聚在一起准备进行一场交易。交易开始前,大家各有b(b>0)个硬币,交易后,每个人有ai个硬币。由于硬币不方面携带,在交易过程中可能会丢失。现在沫璃想知道是否一定丢失硬币,或者在可能没有丢失硬币的情况下,交易前每个人的硬币数b。沫璃只是组织者,不参与交易。

n=int(input())
for i in range(n) :
    g = map(int, raw_input().strip().split())
    if sum(g)==0 :
        print(-1)
    elif sum(g)%5==0 :
        print(sum(g)/5)
    else :
        print(-1)

3

沫璃邀请她的朋友参加周末的派对。沫璃买了3种颜色的气球,现在她要有这些气球来装饰餐桌,每个餐桌只用恰好3个气球装饰,要求3个气球的颜色不能完全一样,可以是2种或者3种颜色。沫璃想知道这些气球最多能装饰多少张餐桌。
一道cf风格的智力题,不会,看的解析

//两种情况:
  // 1)最大的那个数大于其他两个数之和的两倍,输出最小的和次小的数之和
  // 2)直接三个数除以3
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
ll a[10];
int main(){
	cin>>t;
	while(t--){
	   memset(a,0,sizeof(a));
	   cin>>a[0]>>a[1]>>a[2];
	   sort(a,a+3);
	   if(a[2]>2*(a[0]+a[1])) cout<<a[0]+a[1]<<endl;
	   else cout<<(a[0]+a[1]+a[2])/3<<endl;
	}
	return 0;
}

4

茉莉有2n匹马,每匹马都有一个速度v,现在茉莉将马分为两个队伍,每个队伍各有n匹马,两个队之间进行n场比赛,每场比赛两队各派出一匹马参赛,每匹马都恰好出场一次。茉莉想知道是否存在一种分配队伍的方法使得无论怎么安排比赛,第一个队伍都一定能获的全胜,两匹马若速度不同,那么速度快的获胜,若速度一样,则都有可能获胜。
排序后判断是否a[n-1]<a[n]即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
int n;
ll a[1000];
bool flag=true;
int main(){
	cin>>t;
	while(t--){
		memset(a,0,sizeof(a));
		flag=true;
		cin>>n;
		for(int i=0;i<2*n;i++){
		  cin>>a[i];
	        }
     	        sort(a,a+2*n);
     	        //for(int i=0;i<2*n;i++) cout<<a[i]<<" ";
     	        if(a[n-1]<a[n]) flag=true;
     	        else flag=false;
		if(!flag) puts("NO");
		else puts("YES");
	}
	return 0;
}

5

有K种不同的玫瑰花,现在要摆放在N个位置上,要求每种颜色的花至少出现过一次,请问有多少种不同的方案数呢?,因为答案可能很大,你只需要输出它对772235取余后的结果.

不会。如果是数学题就直接mma求和那个显式公式了

\[\prod_{p_1+p_2+...+p_k=n\\ \ \ \ \ \ \ \ p_i\geq1}\tbinom{n}{p_1,p_2,...p_k} \]

Needs["Combinatorica`"]
f[n_Integer, k_Integer] := 
 Sum[Multinomial @@ 
   i, {i, # + ConstantArray[1, k] & /@ Compositions[n - k, k]}]
f[3, 2]

作为编程题,反正你显式公式都出来了,猜一个递推公式问题不大(?,我没猜出来)
一种是

\[dp[n][k]=dp[n-1][k-1]*\tbinom{k}{1}+dp[n-1][k]*k \]

第一项对应的是说最后1位的颜色在前面未曾出现过,第二项对应的是说最后1位的颜色在前面已经出现过

//非本人编写
#include <bits/stdc++.h>
using namespace std;
const int maxn = 50000 + 7;
const int mod = 772235;
int n, m;
int dp[maxn][32];
 
int main(){
    scanf("%d %d", &n, &m);
    dp[1][1] = 1;
    for(int i = 2; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            dp[i][j] = (dp[i-1][j-1] + dp[i-1][j]) % mod * j % mod;
    cout << dp[n][m] << endl;
    return 0;
}

另一种是

\[T(N, K)=K^{N}-\sum_{i=1}^{K-1} \tbinom{K}{i} T(N, i) \]

思路很容易懂,把\(k^n\)个排列做了分类

代码欠着

6

给你一个图,0节点连接这一个联通块a,1节点连接着一个联通块b,ab仅由01这条边相连。现在我们定义奇异路径为恰好经过0-1这条边一次的路径。在这个图中有无数条奇异路径,问第k长的奇异路径长度是多少?

欠着

分类:

技术点:

相关文章: