题目链接:https://vjudge.net/contest/149498#overview

  A题,水题,直接按照题意模拟一下即可。

  B题,我用的是线段树。大力用的差分标记(上次听zy说过,下次再做些类似的题目好了),lyf的方法也不错。

  C题,不难发现,00是不能变成其他的,而11可以变成10或者01,01/10也可以变成11。那么,如果字符串a中全是0,而b中有1,那么a是不能变成b的;同理,如果b全是0,而a中有1存在,也是不能够转化的。

  D题,floyd即可。具体见代码:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <map>
#include <vector>
#include <set>
#include <queue>
#define t_mid (l+r>>1)
#define ls (o<<1)
#define rs (o<<1|1)
#define lson ls,l,t_mid
#define rson rs,t_mid+1,r
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = + ;
const int inf = 0x3f3f3f3f; int d[N][N];
int a[N];
int on[N];
ll ans[N]; int main()
{
int n;
cin >> n;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
scanf("%d",&d[i][j]);
}
}
for(int i=;i<=n;i++) scanf("%d",a+i);
for(int k=n;k>=;k--)
{
on[a[k]] = ;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
d[i][j] = min(d[i][j], d[i][a[k]]+d[a[k]][j]);
if(on[i] && on[j]) ans[k] += d[i][j];
}
}
}
for(int i=;i<=n;i++) printf("%I64d%c",ans[i],i==n?'\n':' ');
return ;
}

D

  E题,依稀记得以前做过不能换行的DP。现在整个模型全部温故了一遍=。=思路参见:这里。能换行,那么保存下同一列中每一行能够向左延伸的最大距离,排序一遍,再按照之前的做法dp一下即可。那么如果是能够换列,道理也是类似的。AC代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <map>
#include <vector>
#include <set>
#include <queue>
#define t_mid (l+r>>1)
#define ls (o<<1)
#define rs (o<<1|1)
#define lson ls,l,t_mid
#define rson rs,t_mid+1,r
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = + ;
const int inf = 0x3f3f3f3f; int n,m;
char s[N][N];
int dp[N][N]; int main()
{
cin >> n >> m;
for(int i=;i<=n;i++) scanf("%s",s[i]+);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(s[i][j] == '') dp[j][i] = dp[j-][i] + ;
else dp[j][i] = ;
}
}
int ans = ;
for(int j=;j<=m;j++)
{
sort(dp[j]+,dp[j]++n);
for(int i=n;i>=;i--) ans = max(ans, dp[j][i]*(n-i+));
}
cout << ans << endl;
return ;
}

E

——————————————————2017.2.4分割线——————————————————

  注意!上面这个人的博客中第一个问题的解法是错误的,正确做法参照后面一篇博客中的两种解法。

2017 ZSTU寒假排位赛 #7的更多相关文章

  1. 2017 ZSTU寒假排位赛 #1

    题目链接:https://vjudge.net/contest/147102#overview. A题:给出一堆的点,要找出两条垂直的直线,一条与x轴呈45度.-->使得所有的点到任意一条直线的 ...

  2. 2017 ZSTU寒假排位赛 #2

    题目链接:https://vjudge.net/contest/147632#overview. A题,状态压缩一下然后暴力即可. B题,水题,略过. C题,有负数,前缀和不是单调的,因此不能用尺取法 ...

  3. 2017 ZSTU寒假排位赛 #8

    题目链接:https://vjudge.net/contest/149845#overview. A题,水题. B题,给出 p个 第一个人的区间 和 q个第二个人的区间,问[l,r]中有多少个整数满足 ...

  4. 2017 ZSTU寒假排位赛 #6

    题目链接:https://vjudge.net/contest/149212#overview. A题,水题,略过. B题,水题,读清题意即可. C题,数学题,如果把x表示成x=nb+m,则k=n/m ...

  5. 2017 ZSTU寒假排位赛 #5

    题目链接:https://vjudge.net/contest/148901#overview. A题,排序以后xjbg即可. B题,弄个数组记录当前列是不是删除以及当前行是不是已经大于下一行然后乱搞 ...

  6. 2017 ZSTU寒假排位赛 #4

    题目链接:https://vjudge.net/contest/148543#overview. A题:n个罪犯,每个人有一个犯罪值,现在要从里面选出连续的c个人,每个人的犯罪值都不能超过t,问选法的 ...

  7. 2017 ZSTU寒假排位赛 #3

    题目链接:https://vjudge.net/contest/147974#overview. A题,费用流,不会..跳过了. B题,给一个图,问至少添加几条边能成为强连通图.显然缩点,要使得成为一 ...

  8. Codeforces Round #341 (Div. 2)

    在家都变的懒惰了,好久没写题解了,补补CF 模拟 A - Wet Shark and Odd and Even #include <bits/stdc++.h> typedef long ...

  9. 2017杭电ACM集训队单人排位赛 - 6

    2017杭电ACM集训队单人排位赛 - 6 排名 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 59 1 X X 1 1 X X 0 1 ...

随机推荐

  1. python 画3D的高斯曲线

    用python画3D的高斯曲线,我想如果有多个峰怎么画? import numpy as npimport matplotlib.pyplot as pltimport mathimport mpl_ ...

  2. luogu题解 P3763 【[TJOI2017]DNA】

    题目链接: https://www.luogu.org/problemnew/show/P3763 思路: 首先我们要用到Rabin-Karp哈希,其实就是这个: 若\(w_{str}\)=(\(a_ ...

  3. 支持向量机通俗导论 ——理解SVM的三层境界 总结

    1.什么是支持向量机(SVM) 所谓支持向量机,顾名思义,分为两部分了解:一,什么是支持向量(简单来说,就是支持或支撑平面上把两类类别划分开来的超平面的向量点):二,这里的“机(machine,机器) ...

  4. (十四)Android NDK混淆

    1.ollvm下载编译 我的是macbook环境. 参考obfuscator官网:https://github.com/obfuscator-llvm/obfuscator/wiki 执行下面的命令下 ...

  5. C# Winform 禁止一个进程运行多次

    禁止一个进程运行多次 using System; using System.Windows.Forms; namespace StartExe { static class Program { /// ...

  6. linux 设备驱动与应用程序异步通知

    一.异步通知机制简介 异步通知机制的意思:一旦设备准备就绪,可以主动的通知应用程序进行相应的操作,从而使得应用程序不必去查询设备的状态. 异步通知比较准确的称谓是"信号驱动的异步IO&quo ...

  7. 生成器(generator) 详解

    1. 生成器是什么? 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成 ...

  8. git 忽略部分文件

    忽略:  git update-index --assume-unchanged .mymetadata    取消忽略: git update-index --no-assume-unchanged

  9. 端口与服务-ftp服务

    端口与服务-ftp服务 1概述 1.1.从先知和乌云上爬取端口历史漏洞报告,总结报告 1.2.全面总结,出具一个表格之类的汇总表 2.ftp # -*- coding: utf-8 -*- impor ...

  10. 使用 Live CD 修复 Ubuntu GRUB

    用 Ubuntu 的 Live CD 试用 Ubuntu 启动后,打开终端 假如你的Ubuntu的 / 分区是sdc1,又假如 /boot 分区是 sdc1,在终端下输入 sudo -i mount ...