UCF “Practice” Local Contest — Aug 25, 2018 Rummy Score

数据范围很小,搜索即可

#include<bits/stdc++.h>
#define sc(n) scanf("%d",&n)
#define ll long long
#define db double
#define P pair<int,int>
using namespace std;

int a[14], ans, v[14];

void dfs(int k, int tot, int kind, int cnt, int tott, int b)
{
    if (b >= 7)
    {
        if (cnt < 3) tot += tott;
        ans = min(tot, ans); return;
    }
    if (tot >= ans) return;
    if (k <= 13 && a[k])
    {
        --a[k];
        if (kind == 1) dfs(k, tot, 1, cnt + 1, tott + k, b + 1);
        else dfs(k + 1, tot, 2, cnt + 1, tott + k, b + 1);
        ++a[k];
    }
    int kk = 1; while (a[kk] == 0) ++kk;
    --a[kk];
    if (cnt < 3) tot += tott;
    dfs(kk, tot, 1, 1, kk, b + 1);
    dfs(kk + 1, tot, 2, 1, kk, b + 1);
    ++a[kk];
}

int main()
{
    int b = 14;
    for (int i = 1; i <= 7; ++i) sc(a[0]), ans += a[0], ++a[a[0]], b = min(b, a[0]);
    --a[b];
    dfs(b, 0, 1, 1, b, 1);
    dfs(b + 1, 0, 2, 1, b, 1);
    printf("%d", ans);
    return 0;
}

原文地址:https://www.cnblogs.com/2aptx4869/p/12636591.html

时间: 2024-10-08 09:18:38

UCF “Practice” Local Contest — Aug 25, 2018 Rummy Score的相关文章

UCF “Practice” Local Contest — Aug 25, 2018 Call Me Maybe

根据题意模拟 #include <bits/stdc++.h> #define ull unsigned long long #define P pair<int, int> #define sc(n) scanf("%d", &n) using namespace std; const int p = 131; int n, m, tot, w[100005]; vector<P> ve[100005]; map<ull, int&g

UCF “Practice” Local Contest — Aug 25, 2018 Boots Exchange 水题

#include <bits/stdc++.h> using namespace std; int n; set <int> a; map <int,int> cnt; int main() { cin >> n; int ans = 0; for (int i = 1; i <= n; ++i) { int x; cin >> x; a.insert(x); ++cnt[x]; } for (int i = 1; i <= n; +

UCF Practice Local Contest 2018 (practice)Rummy Score (dfs)

dfs,对于每个点数的牌,都有:不出.作为同花出.作为顺子出这三种选择 #include<bits/stdc++.h> using namespace std; int a[20],x,anss=0x3f3f3f3f; void dfs(int k) { if(k>13) { int sum=0; for(int i=1;i<=13;i++) { sum+=a[i]*i; } anss=min(anss,sum); return; } if(a[k]==0) { return df

2018 China Collegiate Programming Contest Final (CCPC-Final 2018)(A B G I L)

A:签到题,正常模拟即可. 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e5 + 5; 4 struct node{ 5 int id, time; 6 }; 7 node a[maxn]; 8 bool cmp(const node &a, const node &b){ 9 if(a.id^b.id) return a.id < b.id; 10 else return a.

IFE百度前端技术学院4/25/2018(2)

table: table 元素 用来表示超过一维的数据 caption 元素 表示所处的 table 的标题 当所处的 table 是外部 figure 元素的唯一子元素,应首选 figcaption tbody, thead, tfoot 元素 均为一组表格行 thead 表示列头 (通常为列标题,单元格用 th 元素) tfoot 表示列脚 (通常为列数据汇总) col, colgroup, tr 元素 列,列组,行 td, th 元素 td - 数据单元格 th - 标题单元格 th 的 

比赛-CioCio的训练赛 (Aug 18, 2018)

1.) wjj 的子集序列 暴力二进制枚举子集打表,然后可以发现答案就是最大值.根据公式推一波也行吧-- #include <cstdio> #include <stack> #include <ctype.h> using namespace std; typedef long long ll; template<typename T> void rd(T &num) { char tt; bool flag = 0; while (!isdigi

比赛-模拟赛 (Aug 18, 2018)

1.) 小X的质数 线性筛就可以了.由唯一分解定理,如果 $ x = p_a \cdot p_b $ ,那么 \(x\) 也一定只能这样分解质因数.所以 \(x\) 也是符合题目条件的数. #include <cstdio> #include <ctype.h> #include <stack> using namespace std; template<typename T> void rd(T &num) { char tt; while (!i

比赛-thh学长的训练赛 (Aug 16, 2018)

1.) 欧拉回路 打表找规律,打了斯特林,打了组合数,找不出,弃疗.我太蠢了,这题和前面这些东西没什么关系啊.考虑 \(n\) 个点时的完全图 \(n \cdot (n - 1) / 2\) 条边,每条边选与不选两种决策,所以可以得到神奇的数字 \(2^{n(n-1)/2}\) ,而答案就是 \(2^{(n-1)(n-2)/2}\) .具体证的话,对于 \(n\) 个点的图,拿出一个点,把 \(n-1\) 个点胡乱连边,方案数 \(2^{(n-1)(n-2)/2}\) .然后让单独拿出来的点与其

模拟赛小结:2018 China Collegiate Programming Contest Final (CCPC-Final 2018)

比赛链接:传送门 跌跌撞撞6题摸银. 封榜后两题,把手上的题做完了还算舒服.就是罚时有点高. 开出了一道奇奇怪怪的题(K),然后ccpcf银应该比区域赛银要难吧,反正很开心qwq. Problem A. Mischievous Problem Setter 00:14 (-2) Solved by Dancepted 良心签到题.WA2吃乳猪. 代码: #include <iostream> #include <cmath> #include <map> #includ