自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 快速幂

long long aaa(long long x,long long y){ long long ans=1; while(y){ if(y&1){ ans=ans*x%998244353; } x=x*x%998244353; y>>=1; } return ans%998244353; }

2019-09-21 14:46:53 132

原创 关于dp的学习

一 二进制优化 假设背包问题一个物品有8个,我们可以发现可以把这八个分为 1,2,4,1;无论最后选几个(1—8)都可以从这几个数字中选出,也就不需要1,2,3,4,5,6,7,8个一次次的dp了。 也就是把n个分为2的零次方,2的一次方,……和多出来的。这样复杂度减少了很多。 二 状态压缩dp 通俗的说,即用0010100(二进制)的第n位表示第n个东...

2019-07-18 21:13:49 216

原创 dp—zoj 3747 Attack on Titans

1.题意是给n个士兵排队,每个士兵三种G、R、P可选,求至少有m个连续G士兵,最多有k个连续R士兵的排列的种数。 思路: 至少m个这种情况不好求出,把他转化为最多n个减去最多m-1个,所以问题转化为: 最多k个连续r,最多n个连续g 减去 最多k个连续r,最多m-1个连续g。 dp[ ] [ ]; dp[ i] [ 0 ]是第i个为 g 的情况。 dp[ i] [ 1...

2019-04-16 22:45:44 159

原创 欧拉函数

rt int aaa(int n) { int ret=1,i; for(i=2;i*i<=n;i++){ if(n%i==0) { n/=i,ret*=i-1; while(n%i==0) n/=i,ret*=i; } } if(n>1) ret*=n-1; return ret;  

2018-09-11 16:44:55 253

转载 51nod 1010

从网上找的一种思路,,打表的方法很棒   #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> using namespace std; #define N 200000 long long int a[N]...

2018-08-24 15:46:23 150

原创 sdx-暑期总结2

同余定理 (a + b) % m = (a % m + b % m) % m (a * b) % m = ((a % m) * (b % m)) % m 在前面的快速幂中用到。以及在高精度取模中用到。 高精度取模即把高精度数看成各位数的权值与个位数乘积的和。     比如1234 = ((1 * 10 + 2) * 10 + 3) * 10 + 4,对这个数进行取余运算就是上面基本加和乘...

2018-08-24 15:24:07 227

原创 sdx-暑期总结1

1. gcd     lcm    素数打表    快速幂 gcd int gcd(int x,int y){ if(y==0){ return x; } x=x%y; gcd(y,x); } lcm int lcm(int x,int y){ return x*y/gcd(x,y); } 素数打表 #include &l...

2018-08-23 20:55:15 137

原创 线段树模板QAQ

两道水题,都抄的模板QAQ HDU 1166 敌兵布阵 #include<iostream> #include<cstdio> using namespace std; #define maxn 50005 int tree[maxn<<2]; void build(int left,int right,int root) { if(left==...

2018-08-21 17:41:40 112

原创 KMP模板(暂无讲解)

如题: #include<iostream> #include<cstring> #include<stdio.h> using namespace std; char str[1002000]; char temp[10200]; int Next[10200],L,l,coun; void getnext() { int i=0,j=-1; ...

2018-08-17 19:55:49 118

原创 矩阵取数问题 V2 51nod-1084

这道题要求正着走一遍,倒着走一遍,收益最高,并且一个位置只能收一回。 那么,很容易想清楚,矩阵中除去临界位置,我们都可以有多种路径到达,所以想要收益最高,每一个位置只能到达一次,那么不妨想成正着来两遍,可是我们却不能分为两次dp,因为如果第一遍最优,那么第二遍也找最优,加起来可能就不是最优了,所以我们需要同步处理,也就是多路dp,相当于两个人同时从起点出发,并且保证两个人路径不重叠,那么我们可以...

2018-08-11 17:31:34 235

原创 拓朴排序

先来代码 #include <iostream> #include<algorithm> #include<queue> #include<stdio.h> #include<string.h> using namespace std; int n,m; int in[550]; int map[550][550]; int a[5...

2018-08-04 20:34:14 178

转载 树的直径

#include <iostream> #include <cstring> #include <queue> #include <vector> const int maxn =100020; using namespace std; int dis[ maxn ],ans; bool vis[ maxn ]; vector <pair &...

2018-08-04 20:30:34 169

原创 链式前向星

先给出代码 #include<bits/stdc++.h> using namespace std; #define MAXN 10050 struct EDGE { int w;//权值 int next;//与该边同起点的上一条边的位置 int e;//边的终点 }edge[MAXN]; int cnt; int head[MAXN];//以i为起点的最后一条边 ...

2018-07-31 16:58:33 115

原创 逆元和同余定理的记忆

文章有问题/////////       快速幂取余 ll ksm(long long x,long long a,long long p){//快速幂取余 ll ans=1; x=x%p; while(a>0){ if(a&1){ ans=(ans*x)%p; } x=(x*...

2018-07-24 11:27:00 274

原创 关于STL的一些理解

1.   集合set。定义: set<int> s1; 类型可选。 se.begin() 返回指向第一个元素的迭代器 se.clear() 清除所有元素  //常用 se.count() 返回某个值元素的个数  //常用,一般用来查这个元素在不在集合中 se.empty() 如果集合为空,返回true se.end() 返回指向最后一个元素之后的迭代器,不是最后一个元素 se.e...

2018-07-21 20:57:50 381

原创 2018-7-21STL题目理解

C - {A} + {B}  HDU1412 给你两个集合,要求{A} + {B}.  注:同一个集合中不会有两个相同的元素. Input 每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范围的整数,每个元素之间有一个空格隔开. Output 针对每组数据输出一行...

2018-07-21 19:58:10 183

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除