自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 暑期多校 HDU 6447(线段树+离散化)

排序之后按行枚举是显然的,那么我们枚举到i时,求小于yi的最大值就要用到线段树的区间求最值了,注意一点就是只有当xi不等于xi-1的时候才要更新它们。#include<bits/stdc++.h>using namespace std;#define ll long long#define pb push_back#define inf 0x3f3f3f3f#defin...

2018-08-29 10:22:51 208

原创 AIM Tech Round 5 (rated, Div. 1 + Div. 2)C Rectangles(枚举+前缀和)

解析:我们要找的点肯定在n-1个矩形的公共区域里,所以我们只要找出矩形的公共区域然后取任意一个顶点的值就好了,公共区域通过前缀和可以搞出来#include<bits/stdc++.h>using namespace std;#define ll long long#define pb push_back#define inf 0x3f3f3f3f#define mo...

2018-08-28 17:10:55 165

原创 HDU 6432 Problem G. Cyclic(容斥原理)

又见到容斥原理了,不过这道题OEIS也能搞出来 考虑使用容斥原理进行计数. 包含至少一个形如 [i, i + 1] 或 [n, 1] 这样的子串的环排列个数是 C(n,1)(n − 2)! 个; 可以推广为包含至少 k(0 ≤ k < n) 个的环排列个数是 C(n,k)(n − k − 1)!, 同时注意到,包含 n 个的环排列个数一定是 1 个. 所以最终答案就是 (−1)...

2018-08-24 18:33:14 370 2

原创 线性求欧拉函数

仅记录模板const int N=2e7;const int maxn=N+10;int primes,prime[maxn],phi[maxn];bool vis[maxn];void init(){ int i,j; phi[1]=1; for (i=2;i<=N;i++) { if (!vis[i]) { ...

2018-08-22 22:06:24 212

原创 HDU 多校 6434(欧拉函数)

解析: 其实规律比较好找 即对于每个 i, 求有多少个小于它的 a 满足 gcd(i, a) = 1 且 a 是奇数 当 i 是奇数时, 答案为 φ(i)/2 当 i 是偶数时, 答案为 φ(i). 注意 i = 1 时, 答案为 0. 记个前缀和就好了, 复杂度为 O(N + T)#include<bits/stdc++.h>using namespace std;...

2018-08-22 22:03:56 256

原创 HDU 多校 6435 Problem J. CSGO(思维

解析: 共有k维,每一维度仅有2个状态,所以一共有2^k个状态 枚举每个状态, n和m是独立存在的, 所以在此状态下对n和m分别取最大值即可#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e5+100;ll T,n,m,k,ar[N][10],ap[N][10],...

2018-08-22 21:22:45 284

原创 6298 Maximum Multiple (找规律

打表找规律 在n%3==0时 分三份 在n%4==0时分成n/2 n/4 n/4 #include<bits/stdc++.h>using namespace std;int T;long long n;int main(){ scanf("%d",&T); while (T--){ scanf("%lld",&n); ...

2018-08-21 20:55:26 126

原创 HDU多校第九次 1004 Rikka with Stone-Paper-Scissors (期望

则B出剪刀得分的期望是:aa*(c-b)/(a+b+c) 依次类推 所以B获胜的期望是:(aa*c-aa*b+bb*a-bb*c+cc*b-cc*a)/(a+b+c) 最后化简下分数 并且考虑为负数的情况#include<bits/stdc++.h>#define LL long longusing namespace std;int main(){ int ...

2018-08-21 20:23:32 187

原创 HDU多校第九次 6415 (dp

dp是不可能的,这辈子都写不出的。。。当放最大数字的时候只能占据一行一列 其余的数字 1. 只占据1行 2. 只占据1列 3. 填充在被占据过的行和列里面这里需要对取模优化 有两种方法吧 1. 减少取模次数 2. 结果值改成int,每次都存到int里面void update(int &k1,long long k2){//后面的数字用来存储可能爆int的乘...

2018-08-21 19:41:38 195

原创 HDU 多校 6400 Parentheses Matrix(分情况构造)

#include <bits/stdc++.h>#define ll long long#define rep(i, n) for (int i=0; i<(n); i++)using namespace std;int m, n;bool rev;char g[256][256];int main(){ //freopen("D://rush.txt...

2018-08-16 15:13:28 120

原创 多校 HDU 6397 Character Encoding (容斥原理

若x1,x2,…..xn均大于等于0,则x1+x2+…+xn=k的方案数是C(k+m-1,m-1)种若限制条件为n(即x1,x2….xn均小于n,假设有c个违反,则把k减掉c个n(相当于把c个超过n的数也变成大于等于0的),就可以套用知识1的公式了。则最后的答案为sum( (-1)^c * C(m , c) * C(m-1+k-n*c , m-1) ); 套用组合数模板进行计算即可...

2018-08-16 11:46:11 262

原创 多校 hdu 6406 Taotao Picks Apples(线段树)

设d1[ i ]为从a1开始到 ai 的最长递增子序列长度,设d2[ i ]为从ai开始到an的最长递增子序列长度,假设要把ap改为q,可以把序列分为1到p-1和p+1到n两段,可以用线段树找到1到p-1最大值下标cur,然后ans+=d1[cur],如果q大于那个a[ cur ],ans还要+1,然后在区间p+1到n找到第一个大于max( q , a[cur] )的数的下标cur2,ans+=d...

2018-08-16 01:15:18 509

原创 Codeforces Round #503 (by SIS, Div. 2) C. Elections(枚举+贪心)

题意:有n个学生,m个政党,每个学生有支持的政党,但是如果你给他一些钱,他就可以给你想让他投的党投票,现在想付出最少的钱使得1政党有绝对优势(票数严格大于其他党)。 分析:通过枚举政党 1 获取(1到n)票数所需花费的金币,对能获得票数最高的情况取最小花费即可。#include<bits/stdc++.h>#define INF 0x3f3f3f3f3f3f3f3f#de...

2018-08-14 17:38:58 148

原创 HDU 多校 6395 Sequence(分段矩阵快速幂

解析: 初始矩阵(B,A,1) 单位矩阵(1,1,0,2,0,0,K,0,1) 其中K可以分成好几段,分段具体看代码#include<bits/stdc++.h>#define ll long long#define inf 0x3f3f3f3f#define pb push_back#define mod 1000000007#define rep(i,a,b) ...

2018-08-13 19:23:13 195

原创 读入挂

#include<bits/stdc++.h>#define ll long long#define inf 0x3f3f3f3f#define pb push_back#define mod 1000000007#define rep(i,a,b) for(int i=a;i<b;i++)#define rep1(i,b,a) for(int i=b;i>=a...

2018-08-13 19:02:51 132

原创 HDU多校 6396 Swordsman(优先队列

Swordsman Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 188 Accepted Submission(s): 54Problem Description Lawson is a magic swordsm...

2018-08-13 19:02:05 150

原创 HDU 6321 Problem C. Dynamic Graph Matching (状压dp)

题意:给定一个N个点的零图,M次操作,添加或删除一条边,每一次操作以后,打印用1,2,…N/2条边构成的匹配数。 分析:因为N的范围很小,所以可以把点的枚举状态用二进制表示集合。用一维数组dp[S]表示二进制集合为S的点集的匹配数。 每次加边操作,从大到小遍历集合,dp[S]+=dp[S-u-v];删边操作,从小到大遍历集合,dp[S]-=dp[S-u-v]。 预处理出每个1024之内每个数...

2018-08-11 13:04:59 156

转载 hdu 6373 Pinball(物理题。。

Pinball Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 591 Accepted Submission(s): 254Problem Description There is a slope on the 2D...

2018-08-09 20:38:29 177

原创 杭电多校第六次 HDU6370 Werewolf(记忆化搜索)

大佬卡题,题卡我 这道题有思路,但却硬生生的WA了好多次。。 emmmmm… 解析: 全部是狼人满足所有情况 所以确定为村民的个数为0 所以可以想到通过dfs判断一定是狼的个数, 我们以村民为边建图,如果有狼回到了村民,那么就把前半部分设置为狼,后面则可以是村民 为了防止超时,还要记忆化一下,记忆化的过程代码中有注释#include<bits/stdc++.h>u...

2018-08-09 19:47:29 255

原创 Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2) D. The Wu(思维)

D. The Wu time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Childan is making up a legendary story and trying to sell his forgery — a neckl...

2018-08-09 09:53:56 186

原创 杭电多校第五次 1007 Glad You Came(线段树)

哇哇哇,这次榜是歪的。。 题意: 有一个长度为n的序列,初始值全为0,然后给定m个操作,每个操作指定区间[L,R]和值v,然后将该区间中所有小于v的值替换成v。其中每次操作的L、R和v由一个给定的“随机”函数生成。求经过m次操作以后序列中各个<值与其下标的乘积>的异或值(看原题中表达式更清楚)。 解析: 直接用线段树维护最小值即可,前段时间刚写过这样的题,这次这道题怎么写的人这...

2018-08-07 16:29:02 188

原创 杭电多校第五次 HDU 6354(计算几何)

两端的弧长可以通过公式 求出。现在我们则需要求出两个圆心角即可。而我们发现,两个圆心角分别可以用余弦公式求出,其中大圆的圆心角的一半的余弦为,每个小圆的圆心角的余弦的一半为,继而我们即可将问题转化为一个解三角形的问题。#include <bits/stdc++.h>#define maxn 100005using namespace std;const double eps...

2018-08-07 13:33:33 239

原创 杭电多校第五次 1002 Beautiful Now(dfs+贪心)

解析:将当前位与后面最小值交换为最优,但可能最小值有多个,比如 2311 交换两次 最小值为 1123 ,那么交换哪一个呢,我们dfs遍历一下所有最小值,然后求一个min,如果当前位是最小值,那么就不交换,由于最多交换9次所以复杂度不高。 求最大值同理 求最小值时不能将零换到首位#include <bits/stdc++.h>#define ll long long#d...

2018-08-07 11:50:42 196

原创 Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms(思维)

C. Vasya And The Mushrooms time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Vasya’s house is situated in a forest, and there is a mushroom...

2018-08-04 16:44:46 286

原创 KMP模板

#include<bits/stdc++.h>using namespace std;#define ll long long#define pb push_back#define inf 200000099999999#define mod 998244353#define rep(i,a,b) for(int i=a;i<=b;i++)#define rep1...

2018-08-04 08:53:14 109

原创 Educational Codeforces Round 48 (Rated for Div. 2) D. Vasya And The Matrix(构造

D. Vasya And The Matrix time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Now Vasya is taking an exam in mathematics. In order to get a goo...

2018-08-04 08:51:18 313

原创 杭电多校第四次 Problem J. Let Sudoku Rotate(dfs)

直接dfs,每旋转一次就要判断是否可行,这样感觉几乎纯暴力的办法竟然能过 另这个矩阵旋转代码写的挺精简的,值得借鉴一下#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=20;char ar[N][N];char p[N][N];int vis[N];int ans=0...

2018-08-03 20:48:14 107

原创 杭电多校第四次 Problem B. Harvest of Apples(莫队

思路: S(l,r)=S(l,r-1)+C(l,r) S(l,r)=2*S(l-1,r)-C(l-1,r); S(l,r)=S(l,r+1)-C(l,r+1) S(l,r)=(S(l+1,r)-C(l,r))/2; 先用组合数模板预处理出来所有的组合数 然后就可以用莫队来写了排序的时候 block是根号1e5 这样对询问的左端点进行分块,那么总共会分成1e5/block 大概=...

2018-08-03 17:31:35 122

原创 组合数模板

inv代表的逆元,逆元可以倒推出其他数的逆元 Comp(a,b) 就是C(a,b) X 关于 mod 的逆元为 x^(mod - 2);const int maxn=1e5+5;const int mod=1e9+7;ll inv[maxn],fac[maxn],ans[maxn],pos[maxn];ll qpow(ll a,int b){ ll ans=1; a...

2018-08-03 17:24:08 248

原创 杭电多校第四次 6336 ( Problem E. Matrix from Arrays 数学)

找个规律会发现 M[i][j] = M[i-2*L][j] = M[i][j-2*L] 也就是这是一个2L*2L的矩阵循环所得到的 让求x0,y0到x1,y1的和 我们就可以处理出来以x0,y0为左上角的2L*2L的矩阵 然后同时进行求和 代码中是一些简单的数学关系,大家仔细想想就明白了#include <bits/stdc++.h>#define ll long l...

2018-08-03 16:33:20 122

原创 poj2528(线段树,离散化)

题意 有一堵墙,往上面贴海报,每张海报有各自的范围,可以相互覆盖,求最后还能看见多少张海报? 解析 线段树,离散化 每张海报的粘贴就是一个区间操作,所以可以考虑用线段树来解决。但是题目中所给的墙的长度数据量太大,都存下来 肯定MLE,所以考虑利用离散化,将每张海报的端点存储下来。然后利用这些端点来建立一颗线段树。然后就是查询操作了,为了不让先后顺序相互影响...

2018-08-03 16:26:01 268 2

原创 将n划分成2的幂,有多少种划分方法

解析:当n是奇数时,只是每种情况比n-1多了一个1 当n是偶数时,包含一的情况是n-1多了一个1 不含1 的情况就是n/2的情况数#include<cstdio>const int N=1e7+10;const int mod=1e9+7;int s[N];void solve(){ s[1]=1; for(int i=2;i<=N;i+...

2018-08-02 09:29:28 460

原创 给你一个斐波那契数字,让你求出是第几项

解析:只需在预处理中将所有数字对1e9+7取模,然后将给定的数字取模,用map进行匹配即可

2018-08-02 09:15:36 1396

原创 杭电多校第三次 Problem A. Ascending Rating(单调队列)

【题意】 给你一个长为n的数组a 让你对于每个长度为m的窗口。 算出其中的最大值以及从左往右遍历的时候这个最大值更新的次数。 【题解】 单调队列。 从后往前滑动窗口。 会发现我们维护以这个窗口里面的值为元素的单调队列的时候。 这个单调队列的长度就是最大值更新的次数。 因为我们把a[i]加入队列的时候。 队列尾巴上,小于等于这个a[i]的元素都会被删掉. 每个都这么做的话。 ...

2018-08-01 09:44:33 502

空空如也

空空如也

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

TA关注的人

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