2009 Multi-University Training Contest 5 - Host by NUDT

Carry之路 三人组 队伍正式成立了。。。。QAQ
2016.11.3 打了第一场比赛
09年的第五场多校合练

当时我们最后过的题

在杭电的 题目列表是: 2853-2862
赛后补了下,1002、1008

1001 当时只有10多个人过的图论
熊神 用km算法跑二分带权匹配,用了一个cf上面学到的巧妙地算法过了。 先给所有权扩大1000倍,给想要走的边 +1 ,让每次都能选则这条边,具体不是很懂。。。 %panda

1002
md,最坑的就是这题, 这题感觉最难点就是题意。。。 一个then 表达了一万个意思,真的理解不了。。。
题意应该是这样的:
如果一个数n ,能够列举出a、b 满足条件1: a*a*b+1,并且a、b不满足条件二:a*a+b,那么这个数n就是NO,否则就是YES
然后我们预处理打个表,然后O(1)判断就好了
(表中a、b扫到1000 就可以了,甚至都不用扫到5000)

1003
斐波那契+组合数。。。 算了,数学看着头疼,交给小学弟搞了

1004
题解都没有,就先不补了
1006、1010 都同理 先不补了

1005
签到题,简单计算几何

1007
算一个dp?
我们在对角线上dp, 对于每一个点,我们都以他为矩阵的左下角,扫能够达到的最大的边长。然后对角线上会有很明显的关系。。而且dp[i-1][j+1]=5 的话,dp[i][j]最大也只可能是5+1了
然后,熊神写的代码显然要比我的简介很多啊,%panda

char mp[1010][1010];
int dp[1010][1010];

int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        if (n == 0)
            break;
        for (int i = 1; i <= n; i++) {
            scanf("%s", mp[i] + 1);
        }
        int ans = 1;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (i == 1 || j == n) {
                    dp[i][j] = 1;
                    continue;
                }
                int row = i;
                int col = j;
                while (row >= 1 && col <= n && mp[row][j] == mp[i][col]) {
                    row--;
                    col++;
                }
                int x = i - row;
                if (dp[i - 1][j + 1] + 1 <= x) {
                    dp[i][j] = dp[i - 1][j + 1] + 1;
                } else
                    dp[i][j] = x;
                ans = max(ans, dp[i][j]);
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}

1008 赛后发现是一个挺简答得并查集维护。。。。
但当时 不知为什么,没有去看。。。
只有一个坑点,当合并A、B的时候,如果A==B ,那么这个操作使非法的
并查集可以错的地方,我之前貌似都错过了,所以很快就敲完了,但没注意每个样例之后的换行PE了。。。

1009
dp
最坑的地方是: 预处理 ,然后O(1)输出,答案,否则就会TLE ,整个人都被T得不好了。。。
毕竟还是too naive ,这个都记不得了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值