【组队训练】2013天津区域赛

三题,按现场排名应该是80名,铜牌靠后。

几次训练发现自己的心理素质实在是太!差!了!一开始,老规矩,我k题,zrA题,ysB题。

A题大模拟,比较费时,zr先看了过了几个人的H,31mins,1A

B题过的人越来越多,我看了N久终于看懂K题……不会做……我去问ys怎么样,他说了下题意,我觉得很水的暴力,让他直接写,他一直在和我讲说复杂度不够。我有点不耐烦,直接上机写。写的过程中出了点小问题,不过还是水题,一个小时左右1A

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <iostream>
using namespace std;
typedef long long ll;

const int N = 1000005;
const int INF = 0x5f5f5f5f;
const int MOD = 1000000007;

ll cal(int x, int m) {
    ll ans = 0;
    int f = m;
    while (x) {
        int z = x%m;
        ans += z*z;
        x /= m;
    }
    return ans;
}

void output(ll x, int m) {
    char ans[100]; int idx = 0;
    while (x) {
        int z = x%m;
        if (z < 10) ans[idx++] = z + ‘0‘;
        else ans[idx++] = z - 10 + ‘A‘;
        x /= m;
    }
    for (int i = idx-1; i >= 0; --i) printf("%c", ans[i]); printf("\n");
}

void solve(int n, int m) {
    ll ans = 0;
    int lit = sqrt(n);
    for (int i = 1; i <= lit; ++i) {
        if (n % i == 0) {
            ans += cal(i, m);
            if (i != n/i) ans += cal(n/i, m);
        }
    }
    output(ans, m);
}

int main() {
    //freopen("in.txt", "r", stdin);
    int n, m;
    while (~scanf("%d%d", &n, &m)) {
        solve(n, m);
    }
    return 0;
}

然后看C题,我直接想到dp方程dp[i][j][k]表示前i个数已经排好,i+1是j,i+2是k的最小步数。但是转移方程没想好。和队友说了一下开始写,快写好的时候队友看了一眼,说由各情况没有考虑到,我一想确实是,心情瞬间就很烦躁,队友和我说思路的时候我不是很想理他,心情很烦,因为觉得全写错了(实际上只是差了一点),直接和队友说你有思路你写把,我不管了/我去想E,结果没想出来,后来队友说C他写错了,我已经想明白了,写了一发之后出了点bug,最后两个字母的旋转没考虑,上了个厕所突然明白,n+2之后解决,一共用了一个小时左右,1A

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <iostream>
using namespace std;
typedef long long ll;

const int N = 1005;
const int INF = 0x5f5f5f5f;
const int MOD = 1000000007;

char a[N], s[N];
int dp[N][30][30];

int move(int p, int x) {
    return (p+x+10)%10;
}

void mi(int &x, int y) {
    if (x == -1 || x > y) x = y;
}

int step(int x, int y) {
    if (x>y) swap(x, y);
    return min(y-x, x+10-y);
}

int main()
{
    //freopen("in.txt", "r", stdin);
    while (~scanf("%s%s", a+1, s+1)) {
        int n = strlen(a+1);
        for (int i = 1; i <= n; ++i) {
            a[i]-=‘0‘; s[i]-=‘0‘;
        }
        n+=2;
        memset(dp, -1, sizeof dp);
        dp[0][a[1]][a[2]] = 0;
        for (int i = 0; i <= n-2; ++i) {
            for (int j = 0; j <= 9; ++j) {
                for (int k = 0; k <= 9; ++k) {
                    if (dp[i][j][k] < 0) continue;
                    for (int p = -4; p <= 5; ++p) {
                        for (int q = -4; q <= 5; ++q) {
                            int x = move(j, p+q);   //i+1
                            int y = move(k, p+q);   //i+2
                            int z = move(a[i+3], q);//i+3
                            int sp = step(x, s[i+1]);
                            mi(dp[i+1][y][z], dp[i][j][k] + sp + abs(p) + abs(q));
                        }
                    }
                }
            }
        }

        int ans = INF;
        for (int i = 0; i <= 9; ++i) {
            for (int j = 0; j <= 9; ++j) {
                if (dp[n-2][i][j] >= 0)
                ans = min(ans, dp[n-2][i][j]);
            }
        }

        printf("%d\n", ans);
    }
    return 0;
}

这时就剩半个小时了,他们两个在讨论A,其实我也看了,不过也没相处什么清晰的写法,就挂机了。zr尝试着写,结果还是除了问题,没能在比赛结束前写完。

我觉得我如果C题队友提醒我错了的时候,冷静下来好好想想,而不是硬拉着队友写,自己逃避,会减少很多浪费时间。只能说队友脾气都很好,没有生气,如果都像我这么情绪化……估计会打起来。。。。

以后一定要学会克制自己的负面情绪。。。克制。。克制。。

----

计划补题:E图论 F后缀自动机 Ksplay+线段树 //马丹 怎么都是我的

任重而道远阿~~~

时间: 2024-10-13 21:42:10

【组队训练】2013天津区域赛的相关文章

HDU 4791 Alice&#39;s Print Service(2013长沙区域赛现场赛A题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791 解题报告:打印店提供打印纸张服务,需要收取费用,输入格式是s1 p1 s2 p2 s3 p3...表示打印区间s1到s2张纸的单价是p1,打印区间s2 到s3的单价是p2....最后是sn到无穷大的单价是pn,让你求打印k张纸的总费用最少是多少?有m次查询. 因为s1*p1 > s2 * p2 > s3*p3......,很显然,加入k所在的那个区间是第x个区间,那么最低费用要么是k * p

【组队训练】2013南京区域赛

大概是第四五次组队训练了. 四题. 第一次进铜牌线了= =(苦笑 A题,水题,队友看一会就敲了,1A. J题,我看的,没看懂,叫队友和我一起看,三个人在没有讨论的情况下,全都理解错题意,凑不出样例,后来zr说,before和after应该是空间的,恍然大悟…… 因为当RYB都>=2的时候有公式,我就直接分类讨论其他情况.写的……shi一样……wa了好几次,和zr一起找了半天,7A…… #include <bits/stdc++.h> using namespace std; typede

【组队训练】2013长沙区域赛

四题,铜靠前. 今天训练我一道题没写……被队友带飞的感觉真好Orz 换了队友果然输出变高了,虽然还是铜牌区,但至少看到了希望…… 由于早上起晚了- -# 到实验室的时候已经开始半个小时了,zr在做A题,TLE了,改了下……2A 我看了K题,魔方的题,一看就是搜索,不过我不是很会,就去问xl,他说可以写,不过需要仔细想想. 然后zr看J题,此时已经过了很多了. 我看了下没看懂题,zr说是斜率dp,我就没继续看,毕竟不懂斜率优化…… 写了挺久的……这段时间我在看D,打了个表,然后看是瞪数据…… 后来

HDOJ Hard Disk Drive 4788【2013成都区域赛H题-水】

Hard Disk Drive Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1887    Accepted Submission(s): 1042 Problem Description Yesterday your dear cousin Coach Pang gave you a new 100MB hard disk dri

HDU 4793 Collision(2013长沙区域赛现场赛C题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4793 解题报告:在一个平面上有一个圆形medal,半径为Rm,圆心为(0,0),同时有一个圆形范围圆心也是(0,0),半径为R,R > Rm,现在向平面上投掷一枚硬币,硬币初始的圆心位置为(x,y),半径是r,给出硬币的速度向量,硬币碰到medal的时候会反射,注意,反射就是原路返回,并不是按照常理的按照圆心连线的路线,表示一直以为是这样,WA了很久,然后,让你求硬币跟圆形范围有交集的时候的总时间是

2013 ACM区域赛长沙 H zoj 3733 (hdu 4798) Skycity

题意:一个圆台,底面和顶面半径分别为R,r,然后高度为H,一共F层,每层高度一样,然后要在每层的天花板上贴方格玻璃,方格玻璃要满足以下几个条件: 方格玻璃面积不能小于S,且方格玻璃要围成一个正多边形,且正好将天花板围住(也就是说天花板的圆面是这个多边形的内接圆),并且要使得贴的玻璃数量尽量少,也就是说这个正多边形的边数要尽量少.问最后所用玻璃的总面积. 思路:先求每个圆的半径,也就是等差数列.再二分正多边行数量.二分容易出错,此题还有精度要求..... 1 #include <iostream>

HDU4436---str2int 后缀树组(12年天津区域赛)

str2int Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1568    Accepted Submission(s): 540 Problem Description In this problem, you are given several strings that contain only digits from '0'

【2012天津区域赛】部分题解 hdu4431—4441

1001: 题意:给你13张麻将牌,问可以胡哪些张 思路: 枚举可能接到的牌,然后dfs判断能否胡 1002: 题意: 已知n,m 求 n的所有约数在m进制下的平方和 做法:队长用java高精度写的 代码: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.PrintWriter; import java.io.ObjectInputStream.GetField; im

HDU 4438 Hunters 区域赛水题

本文转载于 http://blog.csdn.net/major_zhang/article/details/52197538 2012天津区域赛最水之题: 题意容易读懂,然后就是分情况求出A得分的数学期望,所谓数学期望就是在该概率下的平均得分. 现在就是两种方案,Alice要根据输入给出的数据情况选出最优方案,也就是先选老虎,还是狼. 1.A先选老虎: a.B也先选老虎,则得分为Q(P*X+P*Y); //打完老虎还要打狼 b.B选狼,则两人可以直接获得猎物,则得分为(1-Q)*X 所以1方案