学大伟业Day1解题报告

张炳琪

一.   时间分配

T1:30分钟  T2: 60分钟  T3:100分钟

二.答题情况及错因

T1:100         T2:55             T3:0

T1:刚开始想枚举的方法,后来发现时间复杂度好像是对的,就那样写了

T2:对数据范围判断不准确,刚开始打算用set盼重怕炸空间,后来又改成了数组结果改错了

T3:看到题目知道是树形dp,然后推了一个多小时的转移方程,写了一张多纸,没推出来

在有大题不会的情况下,要先保证能拿到的分拿到,不然做不出来大题就很吃亏

三.题目解析

T1:

暴力维护两个点的链接可以发现在两个英文字母形成的区间里面至多每个字母只能与他形成一个交叉点

那么我们从右到左枚举每个字母出现的区间直到发现与之交叉的或者右边界超出了控制范围(这个也可以二分,但是实际复杂度并不好)

T2:

增加了限制条件的最短路

首先数据范围是吓唬人的,两千条边用 100000000限速器没有任何用处

5000 * 2000 的visited数组用来判重

然后spfa 中间两种转移,队列中记录下当前用了多少加速器 ,一种转移耗费加速器  一种不耗费

T3:

四.代码

T1:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#define MAXN 101000
using namespace std;int ln[27][MAXN];
int rn[27][MAXN];
int top[27];
char s[MAXN];
int ans = 0;int main() {freopen("cross.in","r",stdin);freopen("cross.out","w",stdout);scanf("%s",s + 1);int len = strlen(s + 1);for(int i = 1; i <= len; i++) {s[i] = s[i] - 'a' + 1;if(ln[s[i]][top[s[i]]] == 0) {ln[s[i]][top[s[i]]] = i;} else if(rn[s[i]][top[s[i]]] == 0) {rn[s[i]][top[s[i]]] = i;for(int j = 1; j <= 26; j++) {if(j == s[i])continue;for(int k = top[j] - 1; k >= 0; k--) {if(ln[j][k] < ln[s[i]][top[s[i]]] && rn[j][k] > ln[s[i]][top[s[i]]]) {ans++;break;}if(rn[j][k] < ln[s[i]][top[s[i]]])break;}}top[s[i]]++;}}printf("%d",ans);return 0;
}

#include<queue>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define MAXN 5010
using namespace std;struct Edge {int vj;int wei;int nxt;
} edge1[MAXN * 4],edge2[MAXN * 4];
int now1,now2;
int head1[MAXN],head2[MAXN];struct Note {int now;int used;
} be;queue<Note>q;void push1(int vi,int vj,int wei) {now1++;edge1[now1].vj = vj;edge1[now1].wei = wei;edge1[now1].nxt = head1[vi];head1[vi] = now1;
}
void push2(int vi,int vj,int wei) {now2++;edge2[now2].vj = vj;edge2[now2].wei = wei;edge2[now2].nxt = head2[vi];head2[vi] = now2;
}
int read() {int nm = 0;char c = getchar();while(c < '0' || c > '9')c = getchar();while(c >= '0' && c <= '9') {nm *= 10;nm += c -'0';c = getchar();}return nm;
}int n,m,qq,k;int dis[MAXN][2050];
bool vis[MAXN][2050];int main() {freopen("move.in","r",stdin);freopen("move.out","w",stdout);n = read();m = read();qq = read();k = read();if(k > qq)k = qq;for(int i = 1; i <= m; i++) {int vi = read(),vj = read(),wei = read();push1(vi,vj,wei);}for(int i = 1; i <= qq; i++) {int vi = read(),vj = read(),wei = read();push2(vi,vj,wei);}memset(dis,0x3e,sizeof(dis));dis[1][0] = 0;be.now = 1;be.used = 0;q.push(be);while(!q.empty()) {Note op = q.front();q.pop();vis[op.now][op.used] = false;int now = op.now;int us = op.used;for(int i = head1[now]; i; i = edge1[i].nxt) {int vj = edge1[i].vj;if(dis[now][us] + edge1[i].wei < dis[vj][us]) {dis[vj][us] = dis[now][us] + edge1[i].wei;Note zz;zz.used = op.used;zz.now = vj;if(vis[zz.now][zz.used])continue;vis[zz.now][zz.used] = true;q.push(zz);}}if(op.used >= k)continue;for(int i = head2[now]; i; i = edge2[i].nxt) {int vj = edge2[i].vj;if(dis[now][us] + edge2[i].wei < dis[vj][us + 1]) {dis[vj][us + 1] = dis[now][us] + edge2[i].wei;Note zz;zz.used = op.used + 1;zz.now = vj;if(vis[zz.now][zz.used])continue;vis[zz.now][zz.used] = true;q.push(zz);}}}int ans = 0x3e3e3e3e;for(int i = 0; i <= min(k,qq); i++) {ans = min(ans,dis[n][i]);}printf("%d",ans == 0x3e3e3e3e ? -1:ans);return 0;
}

转载于:https://www.cnblogs.com/luoyibujue/p/7716620.html

学大伟业Day1解题报告相关推荐

  1. 学大伟业Day解题报告

    预计分数:30+30+0=60 实际分数:30+20+0=50 题解部分全部来自http://www.cnblogs.com/TheRoadToTheGold/p/7723564.html T1htt ...

  2. 2017-10-23学大伟业Day1

    T1 叉叉 题目名称 叉叉 程序文件名 cross 输入文件名 cross.in 输出文件名 cross.out 每个测试点时限 1秒 内存限制 128MB 测试点数目 10 每个测试点分值 10 是 ...

  3. 学大伟业:如何利用课余时间学习物理竞赛,搞定自主招生?

    今天撇开能力超强的学生不谈,仅针对目标自主招生的学生,谨慎的给出一些物理竞赛的学习建议. 高一 高中物理竞赛中力学.电磁学模块占据了70%的考试内容,这两个模块也是最难的模块,热学.光学.近代物理内容 ...

  4. 学大伟业:学长是如何对待数学竞赛的

    如果你是下定决心要学数竞,真的很认真地做了决定,那么你的自学能力必须要过关,专注度一定要够强.当然,这里的专注度不是指40分钟过去了,才连一条几何辅助线,也不是说60分钟过去了,你才完成了一试的填空题 ...

  5. 学大伟业:在数学竞赛学习中,你属于哪种类型?

    学习数学竞赛,在其他人眼中是一种什么存在,你知道么? 你在学习数学竞赛中属于什么类型的,你自己知道么? 下面几种类型, 赶紧看看自己,中枪了没. 做题狂魔型 这类人的主要特征就是喜欢做题,简直到了一种 ...

  6. 学大伟业2018-2019学年第二学期《自主招生集训课程》

    尊敬的校长.主任.老师: 您好! 北京学大伟业教育科技有限公司是专注学科奥林匹克竞赛.高校自主招生.高考培优.美加游学.艺术培训的高端品牌教育机构.我们秉承"共育人才,开创未来"的 ...

  7. 学大伟业:2019年数学竞赛学习经验分享

    学习是一个持之以恒的过程,需要不断探索.不断前行.在这路上,我认为最重要的是学习心态.每个人都不可避免地会遇到自己的学习困难,产生消极的想法.有区分度的是能否及时调整好自己,再重新投入到学习中去.身处 ...

  8. 学大伟业(杭州分校)数学联赛 GA3-1 国奥专题班

    北京学大伟业(bjxdwy)杭州分校2019课程于4月4日至4月7日开课,名师生齐聚课堂,助力2019五项学科竞赛!冲刺c9名校!

  9. 学大伟业 2017 国庆 Day1

    期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是 ...

最新文章

  1. 【小o地图Excel插件版】不止能做图表,还能抓58、大众点评网页数据...
  2. [leetcode] 141.环形链表
  3. C++编程连接string字符串和int数字的好方法
  4. abp.event.on与abp.event.off使用
  5. git commit -m 'comment' 遇到 'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  6. OpenSSL密码库算法笔记——第0章 大整数的表示及相关函数
  7. excel财务案例建模_Pro Excel财务建模:技术创业公司的构建模型
  8. 源码:winamp播放器 C++
  9. 程序的优化 文字的减法
  10. 【PYTHON】tkinter如何设置界面消失 当制作一个登陆界面时,登陆成功之后,如何让登陆界面本身消失...
  11. ghost系统后只有一个盘了别的分区的数据怎样恢复
  12. scada系统集成_设计 SCADA 应用程序软件
  13. VM虚拟机扩容centos8的硬盘
  14. 使用Yara规则静态扫描方法
  15. uniapp开发微信小程序-7.用户填写表单信息
  16. 2021年煤矿安全检查考试APP及煤矿安全检查找答案
  17. plc 滑台流程图_plc机械滑台控制
  18. 美通企业日报 | Shake Shack汉堡明年北京开店;万豪推出一价全包度假服务平台...
  19. [BUUCTF][极客大挑战 2019]Http
  20. [转]程序员的七种武器

热门文章

  1. 安卓电子书格式_Kindle的一个劲敌,小米多看电子书入手体验
  2. Linux 解压缩.xz
  3. 【等保实践】等级保护仅仅是合规吗?
  4. oracle中排序--拼音、笔画、偏旁部首
  5. git远程分支强制覆盖本地分支
  6. HTML英雄联盟 效果图代码结构 (多多指教,感谢)
  7. 字母异位词分组-LeetCode49
  8. 【愚公系列】2023年05月 攻防世界-MOBILE(Phishing is not a crime-2)
  9. 京东联盟自动转链php,求京东联盟php自动转链源码 请 ZenHaBit 继续帮忙
  10. 解决 openwrt/Lede pppoe拨号频繁掉线的问题