在金中集训的时间快要耗尽了,接着暑假和高一这一年也就走到尾声了。
这一年在oi上是很失败的,毕竟投入时间没有保证。或许让所有关注这个博客亦或是关注我的人失望了。
不想让每一次的阶段总结变成持续努力的终点。所以,这一次就让它成为起点吧。
记录一下接下来的计划吧。慢慢添加,不断填坑。
【DP】
一定要满足一个状态需要调用到的状态在它之前已经全部求出且与后面无关
线性:正/倒
环形:注意循环顺序!!!(eg能量项链2006)
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=500; 7 int v[maxn],n; 8 int f[maxn][maxn]; 9 int main(){10 scanf("%d",&n);11 for (int i=1;i<=n;i++){12 scanf("%d",&v[i]);13 v[n+i]=v[i];14 }15 memset(f,0,sizeof(f));16 for (int i=1;i<=2*n;i++){17 f[i][i]=0;18 //f[i][i+1]=v[i]*v[i+1]*v[i+2];19 }20 for (int j=2;j<=2*n;j++){21 for (int i=j-1;i>0&&j-i
对比(
1.起点-终点-中间点//无法满足无后效性
2.终点-起点-中间点)
【贪心】
看出是贪心?
区间单调
涉及大小比较 满足无后效性
(某道模拟题)
一般是排序:Pi/Qi/Pi-Qi
枚举分割线?
【哈希】
1.映射 2.判重
字符串哈希
1 #include2 #include 3 #include 4 #include 5 #define mod 10000009 6 using namespace std; 7 const int maxn=10500; 8 const int maxl=2000; 9 unsigned long long hash;10 int n,ans=0;11 char s[maxl];12 int vis[mod+50];13 int num[maxn][maxl];14 bool diff(int x,int y){15 if (num[x][0]!=num[y][0]) return 1;16 if (num[x][num[x][0]-1]!=num[y][num[y][0]-1]) return 1;17 return 0;18 }19 int main(){20 scanf("%d\n",&n);21 memset(num,0,sizeof(num));22 for (int i=1;i<=n;i++){23 scanf("%s",s);24 int m=strlen(s);25 num[i][0]=m;26 hash=1;27 for (int j=0;j
unsigned long long
10e9+7/9
【对拍】
【图】
边数点数分清...
邻接表数组无向边开两倍!
一般可以乱搞
bfs很有用
【试题构成???】【关于部分分】【考试心态】
对自己的时间要清醒,认识到3.5h内3道题,时间就是思考+代码
不要发呆 勤上厕所/放松
把每个样例都模拟一遍
一定看完所有题目!!!!看清题意还有每个点的数据是用来提示什么的
d1:谨慎 稳
t1签到题细心,减少代码复杂度;
t2打好暴力 图?—>各种会的算法上 分段组合 暴力
t2一般会有奇技淫巧!!!想想有什么性质;一些巧妙的,算法不一定高级的方法
t3能拿分就拿分
没有思路先打暴力
d2:心态放好 稳
数论?质数
多想想前缀和什么的
【noip tips】
1.暴力一定好好打,不要放弃
2.部分分!!部分分!!
3.式子展开推一推(前缀和/...)
4.注意边界!!!那种开小开大一个0的错误就...
5.字符串(细节
6.long long-->%lld
7.随手% 比如输出的时候
8.不注意内存会死(一直以为不怎么会M 偏偏就在模拟赛M了一发
9.序‘ 奇偶 前缀和