性质+数据结构
Tz_rain
需要做的事情
解题 总结 巩固
解题三个步骤
量化 分析 实现
需要改变的三个问题
性格 心态 思考方式
不要再后悔
展开
-
树状数组专题
基本原理由于线段树上的任意一个区间(根除外)均可以用父区间减去另一个子区间得到 所以只存左区间也可以维护数的所以信息 如果想求[1,7]的和 由于7=>0111 所以sum[0111]=a[0111]+a[0110]+a[0100] 即:a[7]+a[6]+a[4];基本工作函数void add(LL *A,int i,int x){ while(i<=n)=A[i]+=x原创 2016-10-17 11:19:31 · 407 阅读 · 0 评论 -
简单数学(关于素数判断和因数分解)
include原创 2017-03-20 19:03:53 · 453 阅读 · 0 评论 -
2017.3.10NOIP模拟赛题解及反思(伪)
我没有参加本次考试。。。。。。第一题我们发现对于一个{1~i}的序列有k个逆序对,如果想让它增加a(0<=a<=i)个其方案是唯一的 所以 我们用dp[i][j]dp[i][j]表示用了{1~i}的序列形成了j个逆序对的方案数 dp[i][j]=∑ja=0dp[i][j]=\sum_{a=0}^j dp[i−1][a]dp[i-1][a]#include<bits/stdc++.h>usi原创 2017-03-21 18:34:23 · 349 阅读 · 0 评论 -
SRM 562 Div1 500 CheckerFreeness
/* 通过枚举一对黑点(l,r)。 我们可以计算出其他所有白点和他们的相对位置(用叉积表示) 我们把剩余的白点以和直线(l,r)的左右位置分成两部分 我们用pos表示在线段l -> r左侧的点,其相对于l,相对于r,分别是顺时针第pos[i].fr, pos[i].sc个点。 lim表示在l -> r右侧的点,与它,选中的l,r,能形成凸多边形的原创 2017-05-04 20:13:03 · 402 阅读 · 0 评论 -
对弈(把九角距离转换为曼哈顿距离)
首先,可以知道,棋盘上A,B两点之间的距离(九向联通)等于max(|xA−xB|,|yA−yB|) max( \left| x_A-x_B \right| , \left| y_A-y_B \right| )。但是这个东西不好求和,需要对它做一个变形。设x′A=xA+yA2,y′A=xA−yA2x_A'= \frac {x_A+y_A}{2}, y_A'= \frac {x_A-y_A}{2}于原创 2017-07-12 18:35:03 · 273 阅读 · 0 评论 -
[NOIP2012]开车旅行
开车旅行关键字:链表,倍增结果和评价得分:70时间:40+60 评价 :代码功底很一般。我的思路量化我们需要处理的就是两个东西。 怎么快速的求出每个点对于的tA[i]tA[i],tB[i]tB[i]表示在i点不同的人开车会到达的点。然后就是怎么高效的模拟出开车过程了。分析70对于第一个问题。我们可以O(n2)O(n^2)扫一下void init(){ For(x,1,n)原创 2017-10-20 11:46:38 · 257 阅读 · 0 评论 -
简单数学(关于乘法逆元以及中国剩余定理)
逆元什么是逆元 对于a再(modP)下 如果有a*X%P=1则我们称a的逆元为X(即a−1a^{-1} ) 显然a*(a−1 ^ {-1} )=1; 逆元的求法 <1>使用拓展欧几里得。 int exgcd(int a,int b,int &X,int &Y){ if(!b){X=1,Y=0;return a;} int t=x-(a/b)*y; return原创 2017-03-20 22:13:18 · 1001 阅读 · 0 评论