帝都Day7——解放篇
昨天晚上的problems:
songfen
坠大子段和,要把[l,r]其中一个数变成P,我们要把最小的数变成p。
当L,R没有取满整个区间,P可以在[L,R]外面!!!!!!!
这种情况真是令人绝望。就因为这种情况,爆零。
(换浏览器,现存下)
dp做法:
dp[i][0/1]:到i为止,R=I,当前是否有数被修改过
dp[i][0]=max(dp[i-1][0]+a[i],a[i]);
dp[i][1]=max(dp[i-1][1]+a[i],dp[i-1][0]+p,p);
O(n)
lowbit
异或,lowbit,求和。
ai<=1 ai<=3 ai<10
AC自动机:踹kmp
problems:
poj 3080 poj2752
manacher
分治。踹树。
70分:1024之内的,枚举数值,而不枚举下标。
number
剪枝:
由于A递增,
if(a>R)return;
把3个位置压成1个位置,高端打表orz
钦定的随机程序:
#include <bits/stdc++.h> using namespace std; int a[105]; int main() { srand(time(NULL)); for(int i=1;i<=88;i++) a[i]=i; rand_shuffle(a+1,a+89);//打乱a[1]...a[88]的排列顺序 int i; for(i=1;i<=88;i++)//找11号所对应的下标 if(a[i]==11) break; if(i>14)//如果11号不再前14个数 a[5]=11;//让11号成为第5个数 for(i=1;i<=14;i++) printf("%d ",a[i]); return 0; }
我们讲字符串~
踹树
通过字符串,构建成一棵树,节点个数一定是最少的
询问:每个节点表示字符串前缀,
problems
1.给定n个互不相同的串,求存在多少对数i,j满足i是j的前缀
2.给定n个串,重排字符之间的大小关系,问那些船有可能成为字典序最小的串
所有字符串长度之和<=100000(我去好难啊,没听懂。。。)
看毛片!
给定两个字符串S,T,判断T是否是S的子串
KMP是怎么工作的:
i表示S到哪里,j表示找到最大的B的前缀和A的后缀相等
bool kmp
========================
对拍:
先运行做数据的代码
然后分别运行两个代码
然后fc bubblesort.out quick.out
%errorlevel%==0:找不到差异
%errorlevel%是上一个命令的返回值
(仅限于Windows NT)
但是多叉树??!?!??!?!?!?!?!深度恨随机!!!!!???!??!?!??!?!
随机一棵长毛的链
for(int i=2;i<=n/2;i++)cout << i-1 << ' ' << i <<endl;
for(int i=n/2+1;i<=n;i++) cout<<rand()%(i-1)+1<<' ' <<i<<endl;
随机生成图
生字符串 自己YY
稻花香里说丰年
听取人生经验
比赛策略:
比赛成绩=比赛经验*自身实力
积累人生经验
照着数据范围判断算法
比赛经验:
1.平时多打比赛,避免出现。。。。。。那种。。。
张三/test.cpp - 551B
李四/test.cpp - 551B
2333
文件名!爆内存!
千万不要copy代码
写对拍,试一下大数据,比较***钻的数据。
lowbit 开long long 试一下大数据 发现 根本不该犯的错误!
andthen 拿到所有能拿到的分数!
不要慌,有信心。。
problems
NOIP2012 D2T2 借教室
NOIP2015 运输计划 可以将某一条边边权变为0 使得max{dis(ai,bi)}最小
NOIP2013 华容道
打怪兽
先打加血的,再打掉血的