Comet OJ 篮球校赛 深搜

题目描述

JWJU注重培养学生的“唱,跳,rap,篮球”能力。于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台。校赛冠军的奖励是看wls女装一次,为了这个目标,大家都努力训练,希望自己能看到wls女装。

教练my手下有 n 名队员,现在他要挑选 5 人组成一个篮球队来参赛。众所周知,一个篮球队伍有五个不同的位置(控球后卫,得分后卫,小前锋,大前锋,中锋),现在教练mymy给出每名队员在每个位置的能力。

注:如果一个队员作为控球后卫出战,则他只能发挥他的控球后卫的能力值。(其他位置类似)

教练mymy想让你帮忙选择出 5名队员,分别放置在队伍中的不同位置。求他们组成的队伍的最大能力值之和。

输入描述

输出第一行包含一个正整数 n (5-n-10^5。

接下来包含 nn 行,每行包含 5 个正整数,描述每个队员在每个位置的能力值。每项能力值的取值范围都在 [1,10^{9}

输出描述

输出一行一个正整数代表组成的队伍的最大能力值之和。

样例输入 1

5
10 11 12 15 10
10 15 12 11 10
15 10 15 15 15
19 20 114000 10 300
14 10 155 200 469

样例输出 1

114514

提示

第一个人放在位置4,发挥15的能力值

第二个人放在位置2,发挥15的能力值

第三个人放在位置1,发挥15的能力值

第四个人放在位置3,发挥114000的能力值

第五个人放在位置5,发挥469的能力值

团队总能力值:15+15+15+114000+469=114514

思路:五个位置每个位置选前5个最强者 共25人(有重复)

然后深搜出最大值  (要用到visit数组)

#include <bits/stdc++.h>
using namespace std;
#define ll long long
bool vis[100005];
ll co[100005][6];
ll mmax[6][6], ans = 0;
void dfs(int now, ll tmp){//now 第几列 一列一列看
    if(now == 6){
        ans = max(ans, tmp);
        return;//一定要return  即不进行下面的for循环
    }
    for(int i = 1; i <= 5; i++){
        if(vis[mmax[i][now]])    continue;//看该行是否visit过
        vis[mmax[i][now]] = 1;
        dfs(now + 1, tmp + co[mmax[i][now]][now]);
        vis[mmax[i][now]] = 0;
    }
}
/*mmax[i][j] 第j列 第i大的数  所属阵营(即第几行)
mmax数组
     4 4 4 5 5
     3 2 5 1 4
     5 1 3 3 3
     1 3 1 2 1
     2 5 2 4 2
 */
int main(){
    ll n;
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= 5; j++)
        {
            cin >> co[i][j];
            for(int pos = 1; pos <= 5; pos++)//从前往后判断 是否比存在里面的数要大
            {
                if(co[i][j] > co[mmax[pos][j]][j])
                {
                    for(int k = 5; k >= pos + 1; k--)//大就往后推 并退出循环
                        mmax[k][j] = mmax[k-1][j];
                    mmax[pos][j] = i;
                    break;
                }
            }
        }
    }
    dfs(1, 0);
    cout << ans << endl;
}

原文地址:https://www.cnblogs.com/ydw--/p/11264381.html

时间: 2024-11-10 15:54:57

Comet OJ 篮球校赛 深搜的相关文章

篮球校赛(状压dp)

篮球校赛 题目描述 JWJU注重培养学生的“唱,跳,rap,篮球”能力.于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台.校赛冠军的奖励是看wls女装一次,为了这个目标,大家都努力训练,希望自己能看到wls女装. 教练mymy手下有 nn 名队员,现在他要挑选 55 人组成一个篮球队来参赛.众所周知,一个篮球队伍有五个不同的位置(控球后卫,得分后卫,小前锋,大前锋,中锋),现在教练mymy给出每名队员在每个位置的能力. 注:如果一个队员作为控球后卫出战,则他只能发挥他的控球后卫

机械设备--第九届省赛--深搜

Alpha 公司设计出一种节能的机器设备.它的内部结构是由 N 个齿轮组成.整个机器设备有 一个驱动齿轮,当启动它时,它立即按 10,000 圈/小时转速顺时针转动,然后它又带动与它相切 的齿轮反方向,即逆时针转动.齿轮之间互相作用,每个齿轮都可能驱动着多个齿轮,最终带动 一个工作齿轮完成相应的任务. 在这套设备中,记录了每个齿轮的圆心坐标和齿轮半径.已知驱动齿轮位于(0,0),最终的 工作齿轮位于(Xt, Yt). Alpha 公司想知道传动序列中所有齿轮的转速.所谓传动序列,即能量由驱动齿轮

台州 OJ 1555 Chores 贪心+深搜

给 n 个任务,有些任务会有前驱任务,不相关的任务可以同时做,求把这些任务做完的最少时间是多少. 比较水的一道题,任务能尽早开始就尽早开始做(从时间点0开始),如果有前驱任务,就要把前驱任务完成的时间也加上,完成时间最长的任务的时间就是答案 代码: #include <iostream> #include <cstring> #include <vector> using namespace std; const int MAX = 10005; const int I

[CCPC-Wannafly &amp; Comet OJ 夏季欢乐赛(2019)]飞行棋

题目链接:https://www.cometoj.com/contest/59/problem/E?problem_id=2714 求期望并且一堆转移基本上就是期望dp了(叉腰 照常的设dp[i]表示i位置到n位置的期望步数.则我们所求的是dp[0]. 初始化dp[n]=0,因为n到n的期望为0. 之后先讨论下i为n-1到n-k的时候. 我们可以列出转移方程(随便写几个 $dp[n-1]=\tfrac{1}{k}*(dp[n]+dp[n-1]+dp[n-2]+\cdot \cdot \cdot

哈理工OJ 2179(深搜)

组合 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 7(5 users) Total Accepted: 6(5 users) Rating: Special Judge: No Description 给出一个正整数N,从集合{1,2,3..N} 中找出所有大小为k的子集, 并按照字典序从小到大输出. Input 第一行是一个整数T,代表T组测试数据. 接下来T行,每行是两个正整数n(1<=n<=10), k(1<=k&

Comet OJ - 2019 六一欢乐赛

传送门 #A: 思路:等差数列求和,看成俩次1+2+…+ n,多加的n减去,所以 ans = n*(n+1) - n. AC代码: 1 #include<iostream> 2 #include<algorithm> 3 #include<string> 4 using namespace std; 5 int main() 6 { 7 int n; 8 while(cin >> n) 9 { 10 cout << n*(n+1) - n <

2016弱校联盟十一专场10.3---Similarity of Subtrees(深搜+hash、映射)

题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52310 problem description Define the depth of a node in a rooted tree by applying the following rules recursively: • The depth of a root node is 0. • The depths of child nodes whose parents are with

2016弱校联盟十一专场10.2---Around the World(深搜+组合数、逆元)

题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52305 problem  description In ICPCCamp, there are n cities and (n−1) (bidirectional) roads between cities. The i-th road is between the ai-th and bi-th cities. It is guaranteed that cities are conne

hdu5305(2015多校2)--Friends(状压,深搜)

Friends Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 668    Accepted Submission(s): 313 Problem Description There are n people and m pairs of friends. For every pair of friends, they can cho