2017 ZSTU寒假排位赛 #8
题目链接:https://vjudge.net/contest/149845#overview。
A题,水题。
B题,给出 p个 第一个人的区间 和 q个第二个人的区间,问[l,r]中有多少个整数满足,第二个人的区间范围全部增加这个整数以后 和第一个人的区间有交集。以为是个数据结构题,后来才发现p和q的范围才50。那么暴力枚举位移dt,然后对第二个人的区间做差分标记然后看看有没有交集即可。代码如下(我发现数组越界了也能A...):
1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #include <iostream> 5 #include <map> 6 #include <vector> 7 using namespace std; 8 const int N = 100000 + 5; 9 const int mod = 1e9 + 7; 10 11 int p,q,l,r; 12 int a[55],b[55],c[55],d[55]; 13 int e[1000+5],f[1000+5]; 14 15 int main() 16 { 17 cin >> p >> q >> l >> r; 18 for(int i=1;i<=p;i++) scanf("%d%d",a+i,b+i); 19 for(int i=1;i<=q;i++) scanf("%d%d",c+i,d+i); 20 for(int i=1;i<=p;i++) e[a[i]]++, e[b[i]+1]--; 21 for(int i=1;i<=1000;i++) e[i] += e[i-1]; 22 int ans = 0; 23 for(int dt=l;dt<=r;dt++) 24 { 25 memset(f,0,sizeof f); 26 for(int i=1;i<=q;i++) f[c[i]+dt]++, f[min(d[i]+dt+1, 1001)]--; 27 for(int i=1;i<=1000;i++) 28 { 29 f[i] += f[i-1]; 30 if(f[i] > 0 && e[i] > 0) 31 { 32 ans++; 33 break; 34 } 35 } 36 } 37 cout << ans << endl; 38 return 0; 39 }
B
C题,任意两个串交换 任意前缀,问第一个串能有多少种不同形式。等价于交换任意两个串的两个相同的位置。那么枚举每个位置,看看这个位置在n个串中有多少个不同的字母即可。代码如下:
1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #include <iostream> 5 #include <map> 6 using namespace std; 7 const int N = 100 + 5; 8 const int mod = 1e9 + 7; 9 10 int n,m; 11 char s[N][N]; 12 13 int main() 14 { 15 cin >> n >> m; 16 for(int i=1;i<=n;i++) 17 { 18 scanf("%s",s[i]+1); 19 } 20 int ans = 1; 21 for(int j=1;j<=m;j++) 22 { 23 map<char,int> M; 24 for(int i=1;i<=n;i++) M[s[i][j]]++; 25 ans = 1LL*ans * M.size() % mod; 26 } 27 cout << ans << endl; 28 return 0; 29 }
C
D题,之前的一场CF做过的,WA了N多发的那题。。
E题,给出 m个点,问有多少个点可以到这m个点de最短距离都不超过d。做法是在m个点中找出距离最远的两个点,然后到这两个点的距离都不超过d的点就是可行点。树上找距离最远的两个点就相当于找直径了。从任意一个点出发dfs,找到最远的在m个点中的那个点,作为V,再对那个点dfs,找在m个点中的离V的最远点,作为U。那么U和V就是m个点中距离最远的两个点了。然后再从这两个点开始dfs计算出距离即可。代码如下:
1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #include <iostream> 5 #include <map> 6 #include <vector> 7 using namespace std; 8 const int N = 100000 + 5; 9 const int mod = 1e9 + 7; 10 11 int n,m,r; 12 bool can[N]; 13 int U,V; 14 int max_deep; 15 vector<int> G[N]; 16 void dfs(int u,int fa,int deep,int &who) 17 { 18 if(deep > max_deep && can[u]) 19 { 20 who = u; 21 max_deep = deep; 22 } 23 for(int i=0;i<G[u].size();i++) 24 { 25 int v = G[u][i]; 26 if(v == fa) continue; 27 dfs(v,u,deep+1,who); 28 } 29 } 30 int dis[2][N]; 31 void dfs2(int u,int fa,int op) 32 { 33 for(int i=0;i<G[u].size();i++) 34 { 35 int v = G[u][i]; 36 if(v == fa) continue; 37 dis[op][v] = dis[op][u] + 1; 38 dfs2(v,u,op); 39 } 40 } 41 42 int main() 43 { 44 cin >> n >> m >> r; 45 for(int i=1;i<=m;i++) 46 { 47 int x; 48 scanf("%d",&x); 49 can[x] = 1; 50 } 51 for(int i=1;i<n;i++) 52 { 53 int u,v; scanf("%d%d",&u,&v); 54 G[u].push_back(v); 55 G[v].push_back(u); 56 } 57 max_deep = -1; 58 dfs(1,-1,0,U); 59 max_deep = -1; 60 dfs(U,-1,0,V); 61 dfs2(U,-1,0); 62 dfs2(V,-1,1); 63 int ans = 0; 64 for(int i=1;i<=n;i++) if(dis[0][i] <= r && dis[1][i] <= r) ans++; 65 cout << ans << endl; 66 return 0; 67 }
E
转载于:https://www.cnblogs.com/zzyDS/p/6372961.html
2017 ZSTU寒假排位赛 #8相关推荐
- 2017年寒假集训分组测试赛2 Ranklist
初级二十四点游戏 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 受李老师的影响,他4岁的孩 ...
- GDUT 寒假排位赛三
[题目链接:]http://codeforces.com/group/NVaJtLaLjS/contest/238202 感想 emmmm,这套题有个特点,代码量小的考思维,而那些一眼看过去思路就有了 ...
- GDUT 寒假排位赛二
直接看题 [题目链接]: http://codeforces.com/group/NVaJtLaLjS/contest/238204 A. Taming the Herd(签到题) 题意: 有一张表, ...
- 2017级寒假ACM集训结训赛--官方题解
博客地址 A:SDUTOJ4142 蚂蚁花呗 AC/SUBMIT : 25/245 by:郭小冉(徐红博) 考查知识点:栈 通过简单的栈模拟,对于向左走的蚂蚁如果没有向右走的蚂蚁直接加入进栈,如果有, ...
- 第一次随笔之寒假作业一
2017寒假作业一 前言 这是我第一次接触此类博客,也是第一次写博客,个人处于比较懵逼的状态.加之家里没有网络,不能边写边参考同学和老师的博客,更糟糕的是不能学习什么markdown,什么个git啊, ...
- SDUTOJ3771_数组计算机(线段树)
数组计算机 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description bLue 有一个神器的机器 ...
- Codeforces Round #341 (Div. 2)
在家都变的懒惰了,好久没写题解了,补补CF 模拟 A - Wet Shark and Odd and Even #include <bits/stdc++.h>typedef long l ...
- 大事 | 生活终于对我的联想Y430P下手了!
文章目录 写在前面 下手前 下手中 下手后 相关链接 写在前面 如果你是个职业维修人员,请忽略本文! 如果你使用的是超薄本,请忽略本文! 如果你的电脑正常,请忽略本文! 下手前 最近干了一件" ...
- 北航计算机考研经验_2018届考研
北航计算机考研经验 标签(空格分隔): 考研 我报的是计算机专硕,不分方向.初试347分,其中政治72,英语67,数学114,专业课94.2018年专硕复试线290分/学硕310分:我347分排在第6 ...
最新文章
- 都是套路:盘点 Java 面试中链表的几大解题模板方法!
- 用GDB调试程序(四)
- 前端获取浏览器标识_浏览器缓存机制
- Mozilla的Python3使用情况
- python客户价值分析_[Python数据挖掘]第7章、航空公司客户价值分析
- java创建一个图片_Java 创建一个简单的验证码图片
- servlet html登录,Servlet实现用户登录
- java学习(58):私有内部类后访问
- 霍尔电流传感器ACS712的性能参数和用法
- oracle如何规则显示,Oracle语句优化规则汇总
- 6大创新技术及2亿美元投入计划,这个活动有点料
- tensorflow2.3匹配python版本_Python 包安装和管理工具 pip 19.2 发布
- 拓端tecdat|Python随机波动率(SV)模型对标普500指数时间序列波动性预测
- 证券类私募主要需求及核心服务商
- php文件显示代码行数,php统计文件中的代码行数
- mysqldump关于--set-gtid-purged=OFF的使用(好文章!!)
- IDEA插件下载地址
- html5平板游戏列表
- 针对iPhone X和iPhone XS这些傻叉手机安全距离的设定
- pdf插入图片到指定坐标位置 亲测可用