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

  A题,水题。

  B题,给出 p个 第一个人的区间 和 q个第二个人的区间,问[l,r]中有多少个整数满足,第二个人的区间范围全部增加这个整数以后 和第一个人的区间有交集。以为是个数据结构题,后来才发现p和q的范围才50。那么暴力枚举位移dt,然后对第二个人的区间做差分标记然后看看有没有交集即可。代码如下(我发现数组越界了也能A...):

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
const int N = + ;
const int mod = 1e9 + ; int p,q,l,r;
int a[],b[],c[],d[];
int e[+],f[+]; int main()
{
cin >> p >> q >> l >> r;
for(int i=;i<=p;i++) scanf("%d%d",a+i,b+i);
for(int i=;i<=q;i++) scanf("%d%d",c+i,d+i);
for(int i=;i<=p;i++) e[a[i]]++, e[b[i]+]--;
for(int i=;i<=;i++) e[i] += e[i-];
int ans = ;
for(int dt=l;dt<=r;dt++)
{
memset(f,,sizeof f);
for(int i=;i<=q;i++) f[c[i]+dt]++, f[min(d[i]+dt+, )]--;
for(int i=;i<=;i++)
{
f[i] += f[i-];
if(f[i] > && e[i] > )
{
ans++;
break;
}
}
}
cout << ans << endl;
return ;
}

B

  C题,任意两个串交换 任意前缀,问第一个串能有多少种不同形式。等价于交换任意两个串的两个相同的位置。那么枚举每个位置,看看这个位置在n个串中有多少个不同的字母即可。代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <map>
using namespace std;
const int N = + ;
const int mod = 1e9 + ; int n,m;
char s[N][N]; int main()
{
cin >> n >> m;
for(int i=;i<=n;i++)
{
scanf("%s",s[i]+);
}
int ans = ;
for(int j=;j<=m;j++)
{
map<char,int> M;
for(int i=;i<=n;i++) M[s[i][j]]++;
ans = 1LL*ans * M.size() % mod;
}
cout << ans << endl;
return ;
}

C

  D题,之前的一场CF做过的,WA了N多发的那题。。

  E题,给出 m个点,问有多少个点可以到这m个点de最短距离都不超过d。做法是在m个点中找出距离最远的两个点,然后到这两个点的距离都不超过d的点就是可行点。树上找距离最远的两个点就相当于找直径了。从任意一个点出发dfs,找到最远的在m个点中的那个点,作为V,再对那个点dfs,找在m个点中的离V的最远点,作为U。那么U和V就是m个点中距离最远的两个点了。然后再从这两个点开始dfs计算出距离即可。代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
const int N = + ;
const int mod = 1e9 + ; int n,m,r;
bool can[N];
int U,V;
int max_deep;
vector<int> G[N];
void dfs(int u,int fa,int deep,int &who)
{
if(deep > max_deep && can[u])
{
who = u;
max_deep = deep;
}
for(int i=;i<G[u].size();i++)
{
int v = G[u][i];
if(v == fa) continue;
dfs(v,u,deep+,who);
}
}
int dis[][N];
void dfs2(int u,int fa,int op)
{
for(int i=;i<G[u].size();i++)
{
int v = G[u][i];
if(v == fa) continue;
dis[op][v] = dis[op][u] + ;
dfs2(v,u,op);
}
} int main()
{
cin >> n >> m >> r;
for(int i=;i<=m;i++)
{
int x;
scanf("%d",&x);
can[x] = ;
}
for(int i=;i<n;i++)
{
int u,v; scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
max_deep = -;
dfs(,-,,U);
max_deep = -;
dfs(U,-,,V);
dfs2(U,-,);
dfs2(V,-,);
int ans = ;
for(int i=;i<=n;i++) if(dis[][i] <= r && dis[][i] <= r) ans++;
cout << ans << endl;
return ;
}

E

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

  1. 2017 ZSTU寒假排位赛 #7

    题目链接:https://vjudge.net/contest/149498#overview. A题,水题,直接按照题意模拟一下即可. B题,我用的是线段树.大力用的差分标记(上次听zy说过,下次再 ...

  2. 2017 ZSTU寒假排位赛 #1

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

  3. 2017 ZSTU寒假排位赛 #2

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

  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. 怎样理解document节点

    1. document是七种文档节点中的一种, 是最顶级的一种节点; 2. 其他六种节点都包在document节点之内; 3. document既是一种节点的名字, 也是这种节点在DOM中的实例对象; ...

  2. Skywalking的增强与拦截机制

    整理自架构经理(汤哥)的分享 字节增强条件匹配 在 skywalking 中实现很多基于 byte-buddy 的关于链式匹配查询的实现, 代码如下所示: public abstract class ...

  3. sql server的循环语句

    WITH TEST_CTEAS(SELECT id,position,Parentid,Cast(Parentid AS NVARCHAR(4000)) AS PATHFROM op_client_s ...

  4. 关于如何查看 MySQL 信息、查看Oracle 版本

    方法一: 进入mysql cmd, mysql -u root status; 将显示当前mysql的version的各种信息. 方法二: 还是在mysql的cmd下,输入: select versi ...

  5. 7.使用EXPLAIN 来分析SQL和表结构_2

    possible_keys    ------   显示可能应用在这张表的索引,一个或多个 查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被实际查询使用 key   ------   实际使 ...

  6. PHP扩展模块php_igbinary和php_redis的安装

    php_igbinary : 在序列化和反序列化的效率上高于其自带的 php_redis      :效率是相当高有链表排序功能   详情略 安装之前要准备 百度网盘: wampserver2.5-A ...

  7. java——OOM内存泄漏

    资料: 一.什么是OOM OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个erro ...

  8. 牛客小白月赛19 E 「火」烈火燎原 (思维,树)

    牛客小白月赛19 E 「火」烈火燎原 (思维,树) 链接:https://ac.nowcoder.com/acm/contest/2272/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  9. Pycharm建立web2py项目

    web2py是一种免费的,开源的web开发框架,用于敏捷地开发安全的,数据库驱动的web应用:web2p采用Python语言编写,并且可以使用Python编程.web2py是一个完整的堆栈框架,也就是 ...

  10. SSE

    最近尝试了一下服务器端的推送,之前的做法都是客户端轮询,定时向服务器发送请求.但这造成了我的一些困扰: 1:轮询是由客户端发起的,那么在服务端就不能判别我要推送的内容是否已经过期,因为我很难判断某个信 ...