自定义博客皮肤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 99

原创 关于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 183

原创 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 125

原创 欧拉函数

rtint 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 238

转载 51nod 1010

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

2018-08-24 15:46:23 139

原创 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 200

原创 sdx-暑期总结1

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

2018-08-23 20:55:15 120

原创 线段树模板QAQ

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

2018-08-21 17:41:40 96

原创 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 103

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

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

2018-08-11 17:31:34 225

原创 拓朴排序

先来代码#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 163

转载 树的直径

#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 154

原创 链式前向星

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

2018-07-31 16:58:33 101

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

文章有问题/////////   快速幂取余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 239

原创 关于STL的一些理解

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

2018-07-21 20:57:50 346

原创 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 161

空空如也

空空如也

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

TA关注的人

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