首页 > 其他分享 >取数游戏 Atcoder-abc128_d

取数游戏 Atcoder-abc128_d

时间:2023-08-07 17:36:01浏览次数:49  
标签:Atcoder int 取数 55 abc128 扔回去

枚举两端取了几个数,将手中的负数从小到大放回序列即可

#include <bits/stdc++.h>
using namespace std;
int n, m, a[55], c[55], ans = -0x7fffffff;
int main() {
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (int l = 0; l <= n; l++) {
        for (int r = l + 1; r <= n + 1; r++) {  // r <= n+1
            int k = m - (l + (n - r + 1));
            //			cout<<"k: "<<k<<endl;
            if (k < 0)
                continue;
            int t = 0;
            memset(c, 0, sizeof c);
            for (int i = 1; i <= l; i++) c[++t] = a[i];
            for (int j = r; j <= n; j++) c[++t] = a[j];
            //			cout<<"t: "<<t<<endl;
            //			for(int i = 1; i <= t; i++)
            //				cout<<"c[]"<<i<<" "<<c[i]<<endl;
            sort(c + 1, c + t + 1);
            int p = 1, sum = 0;
            //			for(int i = 1; i <= t; i++)
            //				cout<<"c[]"<<i<<" "<<c[i]<<endl;
            while (c[p] < 0 && k > 0) p++, k--;
            //			cout<<"p:"<<p<<endl;
            for (int j = p; j <= t; j++) sum += c[j];
            ans = max(ans, sum);
        }
    }
    cout << ans << endl;
    return 0;
}

记忆化搜索
dfs(l+1,r,k-2) 扔回去的操作可以是先不扔,最后扔。如果扔回去还要再拿回来,没有意义,相当于不扔。因此序列的长度是[l+1,r]

标签:Atcoder,int,取数,55,abc128,扔回去
From: https://www.cnblogs.com/caterpillor/p/17611977.html

相关文章

  • Atcoder Grand Contest 058 F - Authentic Tree DP
    考虑给\(f(T)\)赋予组合意义。一个直观的想法是,在每条边中间新建一个节点,然后每次选择一条边对应的点,然后把它删掉,递归剩余的两个部分,但是你会发现这样分母不对,应该是\(n\)但在这个模型里只有\(n-1\)。考虑魔改这个模型。我们在每个边对应的点下面添加\(998244352\)个点,你......
  • P1005 [NOIP2007 提高组] 矩阵取数游戏题解
    题面传送门:P1005[NOIP2007提高组]矩阵取数游戏-洛谷|计算机科学教育新生态(luogu.com.cn)分析题目可知,这道题是一道求最值的问题,第一次看题没有认真读题,以为是每次只在某一行中选一个数,于是想了半天无果。重新读题才发现每次需要每行都取,那么这就很简单了,相当于在每一行......
  • Atcoder ABC313_C-Approximate Equalization 2
    AT_ABC313_C-ApproximateEqualization2Description:给定一个整数序列\(A=(A_1,A_2,···,A_n)\),可以做以下操作任意次(可能为0):选择一个整数对\((i,j)\)\((1\leqi,j\leqn)\),使得\(A[i]-\)=\(1\),\(A[j]+\)=\(1\),求出使得数列\(A\)中的\(max-min\leq1\)所需的最少......
  • Atcoder Beginner Contest 313
    CDEF有\(n(1\len\le40)\)张牌,每一张牌正面写上了数字\(a_i\),背面写上了数字\(b_i\)。最初所有牌都是正面朝上。有\(m\)个机器,每个机器有参数\(x_i,y_i(1\lex_i,y_i\len)\),\(x_i\)可以等于\(y_i\)。每个机器只能启动一次,并且有\(\frac{1}{2}\)的概率将牌\(......
  • AtCoder Beginner Contest 313
    A-ToBeSaikyo#include<bits/stdc++.h>usingnamespacestd;intmain(){ ios::sync_with_stdio(0),cin.tie(0); intn; cin>>n; vector<int>a(n); for(auto&i:a)cin>>i; cout<<max(0,*max_element(a.beg......
  • 「解题报告」AtCoder Beginner Contest 313
    比赛地址:AtCoderBeginnerContest313-AtCoder后记:请正确理解题意后再做题!!!A-ToBeSaikyoA-ToBeSaikyo(atcoder.jp)每个人有一个数值,问第一个人要加多少才能使得自己的数值变成最大的。就这么个破题我还WA了一发//Thecodewaswrittenbyyifan,andyifanis......
  • AtCoder Beginner Contest (ABC) 313 D-E
    Tasks-AtCoderBeginnerContest313PS:当时看到D过的比E多就一直在考虑D,但还没做出来,其实个人感觉E比D简单。 D-OddorEven交互题。有n个数,最多可以询问n次然后要求判断出这n个数的奇偶性。每次可以询问数组里任意k个元素的和是不是奇数一开始想到的是高斯消元,n次总能......
  • AtCoder Beginner Contest 313 A-E Code
    比赛链接:AtCoderBeginnerContest313-AtCoder A:#include<bits/stdc++.h>usingnamespacestd;intmain(){cin.tie(0);ios::sync_with_stdio(false);intn;cin>>n;intp1;cin>>p1;intma......
  • Practice on Codeforces and Atcoder in August
    EducationalCodeforcesRound151A~ECodeforcesRound#879Div.2CodeforcesRound#882Div.2CodeforcesRound#873Div.2......
  • python 网站爬取数据 避免SSLError
    importrequestsfrombs4importBeautifulSoup#发送HTTP请求获取网页内容url="https://example.com/"response=requests.get(url,verify=False)#避免SSLErrorhtml_content=response.text#使用BeautifulSoup解析网页内容soup=BeautifulSoup(html_content,"h......