【组队训练】2014鞍山区域赛

三题,排名98,铜尾……

说实话,这样下去真的很害怕,感觉每次都是铜尾阿= = 等正式比赛时一点失误不就tm又铁了嘛。。。。

刚开始很多人过I题,zr看了下直接写的。1A

然后部分人过了E,我看了下,水dp,随便敲了下,1A

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 105;

int a[N];
int s[N][N];
int dp[N][N];

int main()
{
    //freopen("in.txt", "r", stdin);
    int T;
    scanf("%d", &T);
    while (T--) {
        int n, m;
        scanf("%d%d", &n, &m);
        for (int i = 1; i <= m; ++i) {
            for (int j = 1; j <= m; ++j) {
                scanf("%d", &s[i][j]);
            }
        }
        for (int i = 1; i <= n; ++i) {
            scanf("%d", a+i);
        }
        memset(dp, -1, sizeof dp);
        if (a[1] != -1) dp[1][a[1]] = 0;
        else {
            for (int j = 1; j <= m; ++j) {
                dp[1][j] = 0;
            }
        }
        for (int i = 2; i <= n; ++i) {

            if (a[i] != -1) {
                for (int k = 1; k <= m; ++k) {
                    if (dp[i-1][k] < 0) continue;
                    dp[i][a[i]] = max(dp[i][a[i]], dp[i-1][k] + s[k][a[i]]);
                }
                continue;
            }
            for (int j = 1; j <= m; ++j) {
                for (int k = 1; k <= m; ++k) {
                    if (dp[i-1][k] < 0) continue;
                    dp[i][j] = max(dp[i][j], dp[i-1][k] + s[k][j]);
                }
            }
        }
        int ans = 0;
        for (int j = 1; j <= m; ++j) {
            ans = max(ans, dp[n][j]);
        }
        printf("%d\n", ans);

    }
    return 0;
}

然后就很坎坷了- -

D题我们讨论得出重心是每个点的和除以点的个数,和只需要找n-k个数就可以了,剩下的放在重心就好了。

zr贪心写了一发,没过。

我看好了B题(大模拟),想写一下,zr说他写,让我想其他题。

于是我想了下D,觉得选择的区域应该是连续的,遍历一便就可以了。这时zrB题wa了。我写D,也wa……

很尴尬的时刻QAQ

查了半个小时,查出来少了回车(妈蛋啊啊啊)3A

#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <iostream>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
//#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
#define PF(x) cout << "debug: " << x << " ";
#define EL cout << endl;
#define PC(x) puts(x);
typedef long long ll;
#define CLR(x, v) sizeof (x, v, sizeof(x))
using namespace std;
const int INF = 0x5f5f5f5f;
const int  N= 2e5 + 10;
const int mod=1e9 + 7;
const int maxn = 5e4 + 10;

double a[maxn];
double sum[maxn];
int main()
{
    //freopen("in.txt","r",stdin);
    int T;
    scanf("%d", &T);
    while (T--) {
        int n ,k;
        scanf("%d%d", &n, &k);
        for (int i = 1; i <= n; ++i) {
            scanf("%lf", a+i);
        }
        if (n <= k+1) {
            printf("0\n");
            continue;
        }
        sort(a+1, a+1+n);
        for (int i = 1; i <= n; ++i) { // qianzhuihe
            sum[i] = sum[i-1] + a[i];
        }
        int x = n-k;

        double tot = 0, tmp = 0;
        for (int i = 1; i <= x; ++i) {
            tot += a[i];
            tmp += a[i]*a[i];
        }
        double cer;
        cer = tot / x; // zhongxin
        tmp = tmp + cer * cer * x - 2 * cer * sum[x];
        double ans = tmp;
        for (int i = x+1; i <= n; ++i) {
            tmp = tmp + 2*cer*(sum[i-1]-sum[i-1-x]) - cer*cer*x - a[i-x]*a[i-x];
            tot = tot + a[i] - a[i-x];
            cer = tot / x;
            tmp = tmp + a[i]*a[i] - 2*cer*(sum[i]-sum[i-x]) + cer*cer*x;
            ans = min(ans, tmp);
        }
        printf("%.10f\n", ans);
    }

    return 0;
}

B题题意不明确,试了好多种题意,还是没过。(赛后发现代码也确实有一些问题- -

一道数论相对简单的题没过,学弟果然还是弱一些= =

sigh……

时间: 2024-10-29 01:57:28

【组队训练】2014鞍山区域赛的相关文章

HDOJ Osu! 5078【2014鞍山区域赛I题-水】

Osu! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1263    Accepted Submission(s): 660 Special Judge Problem Description Osu! is a very popular music game. Basically, it is a game about cli

hdu5080:几何+polya计数(鞍山区域赛K题)

/* 鞍山区域赛的K题..当时比赛都没来得及看(反正看了也不会) 学了polya定理之后就赶紧跑来补这个题.. 由于几何比较烂写了又丑又长的代码,还debug了很久.. 比较感动的是竟然1Y了.. */ 题目大意: 给定一些点,某些点上有边,问用k种颜色染色的等价类有多少种 思路: 由于坐标是整数..只有可能旋转90,180,270才能得到置换 且图形必须为中心对称图形 先用几何方法找出对称中心 然后旋转,找是否出现置换... 由于点数只有50,几何预处理这一部分可以很暴力无脑的写..各种判断相

[hdu5136]Yue Fei&#39;s Battle 2014 亚洲区域赛广州赛区J题(dp)

转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 现场赛的时候由于有个地方有点小问题,没有成功AC,导致与金牌失之交臂. 由于今天下午有点事情,无法打重现,所以下午只是花了十分钟做了一道J题,抢了个FB,2333333333 Yue Fei's Battle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)T

鞍山区域赛的总结+反思

玩acm大概也有半年了吧,大概是从大一下学期中后段的那一段时间开始接触acm的,暑假参加了集训之后,就开始了区域赛的网络赛的选拔,哎弱校没人权,最终组好的队伍也就那么四五队,弱校的acm氛围简直太差了,无法吸引很多的学生一起来玩耍,网络赛选拔的时候我们队是零贡献的,因为,有些师兄队要和我们共用一个账号,那些水题往往被他们很快先ac掉了,难题我们又做不了,只能让师兄们去做,多亏了他们,让scnu的每个区域赛都获得了现场赛的名额.哎 牡丹江凑不齐人数,结果最终只能放弃这个赛区了.两个字,弱校----

【组队训练】2014北京区域赛

四题,排名107,铜尾.... 发挥还真是稳定阿.... 这场队友终于给力了,我怂了....QAQ A 水题,10min 1A K 水题,28min 2A 还是需要一点点想法的.我傻逼了,错了一次…… #include <cstdio> const int maxn = 3e6 + 10; int T,n; int a[maxn]; int main() { //freopen("in.txt","r",stdin); scanf("%d&qu

HDOJ Galaxy 5073【2014年鞍山区域赛D题-方差】

Galaxy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 2800    Accepted Submission(s): 684 Special Judge Problem Description Good news for us: to release the financial pressure, the governmen

hdu5074 Hatsune Miku 2014鞍山现场赛E题 水dp

http://acm.hdu.edu.cn/showproblem.php?pid=5074 Hatsune Miku Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 325    Accepted Submission(s): 243 Problem Description Hatsune Miku is a popular vi

hdu5072 Coprime 2014鞍山现场赛C题 计数+容斥

http://acm.hdu.edu.cn/showproblem.php?pid=5072 Coprime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 354    Accepted Submission(s): 154 Problem Description There are n people standing in a

hdu5073 2014鞍山现场赛D题

http://acm.hdu.edu.cn/showproblem.php?pid=5073 Galaxy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1421    Accepted Submission(s): 324 Special Judge Problem Description Good news for us: t