![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学
Tz_rain
需要做的事情
解题 总结 巩固
解题三个步骤
量化 分析 实现
需要改变的三个问题
性格 心态 思考方式
不要再后悔
展开
-
SRM 586 DIV2 1000 StringWeightDiv2
给出序列长度len,要你用26个字母将其填满,填满后该序列的代价即为每一个字母最右边的位置IDR减去最左边的位置IDL,比如序列ABCACAZ的代价就是(6-1)+(2-2)+(5-3)+(7-7)=7先求使得代价最小的方案数;思路当序列长度大于26时显然最优的方法是把一样的字符放在一起 可以使用插空法把整个序列分为26份 但是这时我们考虑到此时每一种方案都是由26!种排列构成的 所以总方案数原创 2017-01-24 09:54:01 · 338 阅读 · 0 评论 -
专题:强大的运算工具——矩阵
什么是矩阵对于 矩阵的的初步认识这里有一些讲解。一开始我对矩阵奇葩的运算方式感到奇怪,它有什么用。。。 DPDP问题的加速可以利用矩阵的结合律来实现。同时一些图论问题,利用矩阵有关图的联通和边权问题我们又有了一个新招了。(讲道理,要用到矩阵的题目似乎都是为它专门设计的。)同时还有其他的作用可以参考大牛的博客十个利用矩阵乘法解决的经典题目,codecode矩阵乘法在图联通中的原创 2017-07-10 09:45:38 · 994 阅读 · 0 评论 -
矩阵的的初步认识
矩阵的乘法运算 typedef vector<int> vitypedef vector<vi> matmat mul(mat A,mat B){ mat C(sz(A),vi(sz(B[0])); for(int i=0;i<sz(A);i++) for(int k=0;k<sz(B);k++) for(int j=0;j<sz(B[0原创 2017-03-27 22:32:10 · 259 阅读 · 0 评论 -
专题:有关容斥原理和子集枚举的一些问题
容斥原理意义:有些问题中经常会出现这样一些烦人的限制条件如: 每个物品有一个额外的权如11011101,10011001, 我们最终答案的状态种一定要满足所取的物品,它们的权或后为11111111。此时如果这个值的位数很大我们之前学习过的知识对其就没有办法了。此时我们不妨分析一下最终的答案是怎么得到的。只要最终四个位上都有11就满足了对吧,不难发现如果我们把条件放宽一点:即最终得到的答案是1原创 2017-07-10 15:04:49 · 1086 阅读 · 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 · 389 阅读 · 0 评论 -
判断一个点与直线的相对位置
定义:平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3) S(P1,P2,P3)= (x1-x3)* (y2-y3) - (y1-y3)*(x2-x3) 令矢量的起点为A,终点为B,判断的点为C, 如果S(A,B,C)为正数,则C在矢量AB的左侧; 如果S(A,B,C)为负数,则C在矢量AB的右侧; 如果S(A,B,C)为 0,则C在直线AB上。double s(原创 2017-05-03 19:34:56 · 3038 阅读 · 0 评论 -
SRM556 Div1 555
/* 终态分析:最终有i个横排被翻了奇数次,j个纵排被翻了奇数次*/ #include<bits/stdc++.h>#define For(i,x,y)for(int i=(x);i<=(y);++i)using namespace std;const int M=3200,P=555555555;int w,h,c,r,s,ans,C[M][M];int d(int x,in原创 2017-04-16 22:20:34 · 243 阅读 · 0 评论 -
SRM574 Div1 450
#include<bits/stdc++.h>using namespace std;typedef long long ll;int n,m,S,T,A[18];ll dp[1<<18][18];ll dfs(int s,int a){ if(s==T){ int b=(a+1)%n,c=(a+n-1)%n; return b!=A[0]&&c!=原创 2017-04-11 19:11:13 · 203 阅读 · 0 评论 -
SRM593 Div1 450
令SS和TT为分成的两个集合。答案为 max(∑i∈Sbi−∑i∈Tai,∑i∈Tbi−∑i∈Sai) =max(∑i=0n−1bi−∑i∈T(ai+bi),∑i∈T(ai+bi)−∑i=0n−1ai) \begin{align} \max(\sum_{i \in S} b_i - \sum_{i \in T} a_i, \sum_{i \in T} b_i - \sum_{i \in S} a_原创 2017-04-12 20:48:24 · 268 阅读 · 0 评论 -
高斯消元
const double EPS =1e-8;typedef vector<double> vd;typedef vector<vd> mat;vd gauss(const mat &A,const vec& b){ int n=sz(A); mat B(n,vec(n+1)); for(int i=0;i<n;i++) for(int j=0;j<n;原创 2017-03-28 22:33:20 · 220 阅读 · 0 评论 -
简单数学(关于素数判断和因数分解)
include原创 2017-03-20 19:03:53 · 445 阅读 · 0 评论 -
2017.3.18NOIP模拟赛题解及反思
第一题解题思路: 假设我们有n个桶每个桶中有A[i]个元素如果我们的要求取出给定的序列(序列的中的每个元素分别来自不同的桶)的可能性; 我们有两种求法: 1.每个桶里取一个答案为1/∏ni=1Ai1 / \prod_{i=1}^{n} A_i; 2.由于答案是无序的,我们也可以把取出所有的给定为有序的序列的可能性相加->即为要求的结果 反思 首先我没有很快地把题目搞懂,很慌浪费了20多分原创 2017-03-19 21:55:03 · 326 阅读 · 0 评论 -
Kingdom of Obsession
题意:n 个人编号为[s+1,s+n],有 n个座位编号为[1,n],编号为 i 的人只能坐到编号为它的约数的座位,问每个人是否都有位置坐。 思路: <1>对于S < n的情况我们发现 于是可以将红框中的数和它的位置对应相等,于是可以直接交换s,n使其变为 <2>我们发现如果满足<1>后,只要是质数它必须放在“1”上即只能有一个质数。由于两个相邻质数不会超过500于是在n > 500时我们可原创 2017-03-04 09:32:34 · 206 阅读 · 0 评论 -
SRM 691 Undiv2
s(i)表示第二个不能整除i的数。求1~n所有s(i)的和(1<=n<=1000,000,000).思路<1>显然对于一个X如果第一个不能整除它的数为z(X)所以lcm(1,2,…z(X)-1)必为X的一个因子 <2>同理对于一个X如果前两个不能整除它的数分别为z(X),s(X),lcm(1,2,…z(X)-1,z(x)+1,…s(x)-2,s(x)-1)必为X的一个因子,于是直接枚举即可z(i)原创 2017-02-03 10:16:32 · 402 阅读 · 0 评论 -
SRM 585 EnclosingTriangleColorful
题目大意: 平面内有一个边长为m的正方形。正方形内部有n个黑色的点(不包含边界)。现在要在正方形的边上选取三个点组成三角形(不能选择顶点,且任意两个点不在同一条边上),要求所有的黑点都在三角形的内部或边上。问有多少种选择三角形的方案。(m<=300, n<=50)三角形顶点以及黑点坐标皆为整数先是两两枚举出所有点对,判断所有的黑点是否在同一侧 然后枚举所有三角形,O(1)判断 预处理O(m*m原创 2017-01-24 09:07:46 · 263 阅读 · 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 · 980 阅读 · 0 评论