自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

浅笑~如夏

今天会有好事发生吗

  • 博客(295)
  • 收藏
  • 关注

原创 Gym102769I Interstellar Hunter

初始位置在 (0,0) 点,现在有两种操作:操作 1 :你获得一种能力向量 (x,y) ,你可以从当前位置 (a,b) 出发,沿着这个能力向量方向移动任意整数个单位,即可以从 (a,b) 移动至 (a+dx,b+dy) ;操作 2 :在二维平面上的某一点 (x,y) 上出现了一个价值为 w 的物品,如果你可以通过你当前拥有的能力向量移动至 (x,y) 就可以获得该物品。问最终你可以获得的最大价值是多少?简单分析即可发现,对于一个出现地物品,如果当前我能够取取得,就一定回去取,因为这对之后的操作没

2021-03-07 10:34:59 445

原创 bzoj5055

题目令人恐惧的一道题233。时间的力量。。。。其实我是不想写的,但看在AC人怎么少,而且还没题解,写一发吧。先枚举每一个数,看它前面有几个比它小,算一下和为sum1,后面有几个比它大,算一下和为sum2,对答案的贡献为A[i]*sum1*sum2。离散化后,树状数组就可以了。#include<bits/stdc++.h>#define N 300000using namespace std;i

2020-08-25 10:15:18 541

原创 bzoj5016 [Snoi2017]一个简单的询问

题目首先,可以确定的是,这一定是一道数据结构的题,但是,题目询问的式子过于复杂,我们要先考虑化简一下。首先,吧get(l,r,x)变成get(r,x)−get(l−1,x)是非常显然的,新的get(n,x),表示1…n有几个x首先,吧get(l,r,x)变成get(r,x)-get(l-1,x)是非常显然的,新的get(n,x),表示1\dots n 有几个xget(l1,r1,x)get(l2,r

2018-03-11 21:26:25 462 1

原创 bzoj5018 [Snoi2017]英雄联盟

题目嗯,其实吧,还是算比较显然的dp。 f[i][j]表示前i个英雄,用了j元钱的最多方案数,最后答案就是满足f[n][j]≥m最小的j了。f[i][j]表示前i个英雄,用了j元钱的最多方案数,最后答案就是满足f[n][j]\ge m最小的j了。 转移方法,首先,肯定要枚举i,然后枚举当前买几个皮肤j,再枚举l表示f[i][l]从什么转移过来。注意,每次l的上界是当前买所有皮肤的价格。转移方法,

2018-02-28 19:51:26 406 1

原创 WC2018 游记

有到了一年一度的ccf冬令营了,我也有幸参加了这次冬令营。其实去年也是来过的,但无奈暴力写挂了,与

2018-02-12 15:04:09 678

原创 bzoj4916 神犇和蒟蒻

题目首先,由μ\mu的性质知道,第一问的答案一定为1。考虑第二问。 φ(i2)=iφ(i)\varphi(i^2)=i\varphi(i) 令Φ(i)=∑ni=1iφ(i)\Phi(i)=\sum_{i=1}^{n}i\varphi(i) 则发现 ∑ni=1iΦ([ni])=∑ni=1i∑[ni]j=1jφ(j)\sum_{i=1}^{n}i\Phi([\frac{n}{i}])=\

2018-02-02 10:26:24 266

原创 loj125 杜教筛

题目由题目猜算法系列。已知f(n)=∑d|ng(d)与g(n)=2n2+3n+5,求∑ni=1f(i)已知f(n)=\sum_{d|n}g(d)与g(n)=2n^2+3n+5,求\sum_{i=1}^{n}f(i) 令F(i)=∑ni=1f(i)F(i)=\sum_{i=1}^{n}f(i) 则发现(前面的系数需要凑一凑) ∑ni=1μ(i)F([ni])=∑ni=1μ(i)∑[ni]j=1f

2018-02-02 10:14:41 391 1

原创 bzoj3944 Sum

题目杜教筛第一题。数学推导过程详见这里具体实现的时候要用一个hash表或者map存一下,其实感觉两个东西差不多快。想要提高速度应该调一调M的大小,可以三分试一试呀。#include<bits/stdc++.h>#define ll long long #define M 4500000using namespace std;int prime[M+5],notp[M+5],cnt;ll m

2018-02-02 10:01:53 284

原创 杜教筛学习笔记

考虑求解以下问题: ∑ni=1μ(i)\sum^{n}_{i=1}\mu(i) ∑ni=1φ(i)\sum^{n}_{i=1}\varphi(i) ∑n(i=1)μ(i)ik\sum^{n}_(i=1)\mu(i)i^k令M(i)=∑ni=1μ(i)M(i)=\sum^{n}_{i=1}\mu(i) 发现 ∑ni=1M([ni])=∑ni=1∑[ni]j=1μ(j)\sum^{n}_

2018-02-01 19:23:21 247

原创 莫比乌斯函数学习笔记

(1) 定义 e(n)=⟮1 n=10 n≠1e(n)=\lgroup^{1\ n=1}_{0\ n\neq1} I(n)=1I(n)=1 id(n)=nid(n)=n σ0(n)因子个数\sigma_{0}(n) 因子个数 σ1(n)因数和\sigma_{1}(n)因数和 μ(n)莫比乌斯函数\mu(n)莫比乌斯函数 φ(n)欧拉函数\varphi(n)欧拉函数 (2)

2018-02-01 16:07:00 1684

原创 bzoj3529 [Sdoi2014]数表

题目如果不考虑a的限制,这道题就简化了一下。令f(x)f(x)表示x的约数和,g(x)=∑ni=1∑mj=1[gcd(i,j)==x]g(x)=\sum^{n}_{i=1}\sum^{m}_{j=1}[gcd(i,j)==x] 那么,ans=∑ni=1f(i)g(i)ans=\sum^{n}_{i=1}f(i)g(i),由某道题可得g(i)g(i)的表达式。 YY的GCD g(i)=∑i|dμ

2018-02-01 14:17:34 207

原创 bzoj2440 [中山市选2011]完全平方数

题目首先,直接得出答案貌似不太可能,我们可以先二分一个答案,这样就成了计数问题了,就是求前n个数中,有多少个数没有平方因子。很显然的一点,就是μ\mu值不为0的数有多少个,但是,这样是算不出来的,因为太大了,所以我们就要想一想办法。考虑容斥原理,发现前面的系数刚好为μ\mu值,最后我们只需要算一个求和式子∑x√i=1[xi2]\sum^{\sqrt{x}}_{i=1}[\frac{x}{i^2}]就

2018-02-01 13:36:52 209

原创 bzoj2820 YY的GCD

题目这肯定要用卷积的,我们来推一推公式。我们先令n=min(n,m)n=min(n,m),m=max(m,n)m=max(m,n)则 ans=∑p∑ni=1∑mj=1gcd(i,j)==pans=\sum^{}_{p}\sum^{n}_{i=1}\sum^{m}_{j=1}gcd(i,j)==p ans=∑p∑[np]i=1∑[mp]j=1gcd(i,j)==1ans=\sum^{}_{p}\s

2018-02-01 11:49:25 253

原创 poj3683 Priest John's Busiest Day

题目2-sat问题,要求要输出方案。先考虑建模,把每个婚礼都拆成两个部分。对于两个婚礼,A,B,用A,B表示开始,A’,B’表示结束,如果A与B,B’都冲突的话,A就不能选,连向A’,否则只有一个冲突的话,A连B’,A’连B。这样图就建好了,那么如何输出方案呢,一般tarjan后跑一个拓扑序就好了,但是有更好的方案,tarjan相当于就是一个拓扑了,最后只要A与A’谁的强连通分量编号小就选谁就好了。

2018-01-27 08:56:07 196

原创 loj6157 A^B Problem

题目树上一条路径上边权的异或,显然相当于两个到根的异或再异或起来。 这样,相当于我们每次都知道到根的异或值。这样我们就可以并查集处理了,记录到根的异或值,每次判断一下就好了。#include<bits/stdc++.h>#define N 500000 using namespace std;int T,n,m,x,y,f[N+5],w[N+5],z,flg;int u[N+5],v[N+

2018-01-27 08:38:18 350

原创 bzoj1467 Pku3243 clever Y

题目扩展BSGS,模数改成任意数了,本质和一般的还是一样的,只是需要把X与K推一推公式让他们互质就好了。具体细节在代码中有体现。#include<bits/stdc++.h>#define ll long longusing namespace std;ll a,b,p;ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}ll BSGS(ll a

2018-01-27 08:24:48 691

原创 bzoj3331 [BeiJing2013]压力

题目显然,如果两个点之间要有一个必须到达的点,这个点必须是割点。只要我们求出点双联通分量,然后对图重构,在新得到的树上做就好了。我们在树上就可以差分了,最后求一个子树和就好了。#include<bits/stdc++.h>#define N 500000 using namespace std;int first[N+5],nxt[N+5],to[N+5],siz;int First[N+5

2018-01-27 08:17:12 498

原创 bzoj3337 ORZJRY I

题目哇,好繁琐的一道数据结构题,居然有11个丧心病狂的操作。据说正解是块状链表,但写起来特别麻烦,要接近400行才能写完,而且有些操作比较难维护。这个时候,就要用一些黑科技了,叫odt,,全名是什么我也不太清楚,在处理随机意义下的含区间覆盖操作的数据结构有奇效,大概思路就是用STL把相同值的一串合并在一起算。typedef pairint,int> pii;struct line

2018-01-27 08:08:58 433

原创 bzoj3028 食物

题目母函数,数学题,大概就是推公式吧。承德汉堡:1+x2+x4+⋯=11−x21+x^2+x^4+\dots=\frac{1}{1-x^2} 可乐:1+x1+x 鸡腿:1+x+x21+x+x^2 蜜桃多:x+x3+x5+⋯=x1−x2x+x^3+x^5+\dots=\frac{x}{1-x^2} 鸡块:1+x4+x8+⋯=11−x41+x^4+x^8+\dots=\frac{1}{1-x^4

2018-01-23 14:01:52 313

原创 bzoj3969 [WF2013]Low Power

题目看见最大值最小,明显可以看出这是一道二分答案的题。如何判断呢。首先,我们先对原数组排序,这样每次的差最小一定会在两个相邻的数之间。所以排好序之后,判断的时候,只要从前往后扫,只要相邻两个数的差小于二分的答案x,就把它们放入一个电池,然后把剩下的电池依次放入,判断每个时刻是否可行就好了。#include<bits/stdc++.h>#define N 1000005using namespac

2018-01-22 07:53:00 364

原创 codeforces438 D The Child and Sequence

题目一句话题意:支持区间取模,单点修改,区间求和的数据结构。后两个操作都是可以线段树操作的,但是第一个貌似就特别麻烦了。貌似不可做的样子呀,但是,我们可以发现一个性质如果x>yx>y那么xmody≤x2x\mod y\leq \frac{x}{2}的,这样的话,我们可以维护一下区间最大值,如果小于模数,就直接return,不然暴力做就好了。复杂度可以用势能分析得出是对的,我也不太会,就不多说了//区

2018-01-19 11:09:00 185

原创 bzoj4320 ShangHai2006 Homework

题目学习了一种新知识,根号分治,也叫bigsmall。其主旨思想就是把每个问题分成大于n  √  \sqrt{n}与小于n  √  \sqrt{n}的来考虑。对于这道题,我们可以对Y分类。记m=n  √  m=\sqrt{n} 1.如果Y≤m Y\leq m,可以用一个数组g[i],表示当前集合中%i最小的数,每次询问是O(1)的,修改是O(m)的。 2.如果Y>m Y>m,我们

2018-01-19 10:28:50 272

原创 hdu1542 Atlantis

题目矩形面积并基础题。考虑把每一个矩形按照边界分成小矩形,用扫描线就好了,然后就是统计另一个方向上的长度,这个用线段树维护一下就好了。比如这张图,大概就是这样分割的,对于x轴的一段,对应了y轴上的一部分。这样,就可以x轴扫面线,然后y轴线段树区间修改就好了。这个线段树也比较好写,不需要pushdown操作,因为每次我们只需要整个的长度。还有一点,这道题的坐标都是double类型的,就先离散化一下,至

2018-01-19 10:15:37 163

原创 hdu6031 Innumerable Ancestors

题目答案明显满足二分性质,所以我们可以先二分出答案的深度,然后判断的话,把A集合用倍增跳到那个深度,再对B集合做同样的操作,判断两个祖先集合的交是否为空集,只要用map就可以呢。还有另外一个解法,就是深度最大的LCA在DFS序中与它们两点距离最近,然后贪一贪就好了。#include<bits/stdc++.h>#define N 500000using namespace std;int n,

2018-01-17 22:27:45 386 1

原创 hdu 5927 Auxiliary Set

题目首先,我们先发现一下性质,先按照深度从大到小排序,对于每一个结点,只用考虑它的儿子结点为重要的点的个数,如果大于等于两个,那么这个点就是;等于一的话,对答案没有贡献,但是对于它的父亲可能会有贡献;为0的话,对父亲完全没有贡献,这就需要把父亲结点的儿子个数减一就好了。#include<bits/stdc++.h>#define N 500000using namespace std;int

2018-01-17 22:05:30 167

原创 hdu5929 Basic Data Structure

题目咋一看是很毒瘤的数据结构,但是仔细观察一下nand这个运算,可以得到一个结论:答案只和末尾的1的个数的奇偶性有关,这样的话,就可以随便做了。我写的是二分加树状数组,可能比较慢。实现的细节很多,比如处理只有一个数的情况,还有连续一段1后面还有几个数之类的,反正特别麻烦,练习码力吧。#include<bits/stdc++.h>#define N 1000000using namespace s

2018-01-17 20:40:09 406 1

原创 bzoj2480 Spoj3105 Mod

题目扩展BSGS,当时调了我很久,原因竟是p可以等于1,233。太惨了,这个可得好好注意一下呀。大致思路和一般BSGS差不多,就是要多推几步,然后就一样了。//ex_BSGS#include<bits/stdc++.h>#define ll long longusing namespace std;ll a,b,p;ll gcd(ll a,ll b){ return b?gcd(

2018-01-17 20:26:15 280

原创 bzoj3239 Discrete Logging

题目离散对数裸题,这道题中p是素数,所以用一般BSGS就好了,这个东西十分巧妙呀。ax≡b(mod p)a^x\equiv b(mod\ p)我们可以设x=Ap√+Bx=A\sqrt{p}+B,其中,0≤A≤p√0\leq A\leq \sqrt{p},0≤Bp√ 0 \leq B。 那么,我们可以得到aAp√≡ba−B(mod p)a^{A\sqrt{p}} \equiv ba^{-B

2018-01-17 20:11:14 264

原创 bzoj1823 [JSOI2010]满汉全席

题目2-sat裸题,最近刚刚学了这个东西,毕竟NOI考过呀。建边就是考虑限制条件如果x选什么,y就一定选什么之类的,然后跑一遍tarjan缩点,如果存在一个点和它的相反点在一个强连通分量中,那么就没解,否则一定有解。至于输出一个解,只要看mark的大小就好了,选小的就好了。#include<bits/stdc++.h>#define N 100000using namespace std;in

2018-01-15 21:46:31 460

原创 bzoj5090 组题

题目好久好久没有更新博客了,现在开始要好好学了。分数规划第一题吧,第一次听说这个东西是在冬令营,现在算是做过一道题了吧。二分最后的答案,之后把原数组每个数都减去这个答案,如果这个解成立的话,必须有一段区间和为正数,这样的话,我们把它转化为前缀和,只要找一个sum[j]>=sum[i]sum[j]>=sum[i]就好了。但是,这道题有一个问题,就是答案要求是分数,这样我们只能求出一个小数。我们就要在判

2018-01-15 20:11:53 339

原创 bzoj3406 [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵

题目BFS经典例题吧。从起点开始入队,就好了。值得注意的是,可以向八个方向拓展。。#include<cstdio>struct sb{ int x,y,day};const int dx[8]={1,0,-1,0,1,-1,-1,1};const int dy[8]={0,1,0,-1,1,-1,1,-1};int n,m,mx,my;int r,c;sb hs[20000];

2017-12-10 09:49:23 542

原创 bzoj2764 [JLOI2011]基因补全

题目大概又是一道dp题吧,把碱基先处理一下,就成为匹配方案数了,就是简单dp。f[i]表示前j个的方案数。转移就是:f[j]=f[j]+f[j−1](A[i]==B[j])f[j]=f[j]+f[j-1](A[i]==B[j])注意枚举顺序,m要从后面开始。比较麻烦的是,要用高精度才能过去。#include<bits/stdc++.h>using namespace std;struct big

2017-12-10 09:44:16 340

原创 bzoj3411 [Usaco2009 Dec]Bobsledding 高山滑雪

题目贪心题目。。如果知道一段路程的起始速度和终点的限制速度,那么最大速度就可以很轻松的求出来。但是,有一点值得注意,每一个点的速度限制可能是假的,因为如果到了最大速度,到下一个点速度可能降不下去。所以,就要先从后往前扫一遍来重新算速度。之后就是分类讨论了。#include<bits/stdc++.h>#define N 100000using namespace std;int n,L,v,a

2017-12-10 09:28:20 368

原创 bzoj3018 [Usaco2012 Nov]Distant Pastures

题目一开始还被吓了一跳,但是,仔细想想也很简单。题目翻译有毒。。 D(S,T)是S到T的最短距离。。这样,我们只需要枚举起点,然后跑一边最短路,求一下最大值就好了。#include<bits/stdc++.h>using namespace std;int n,A,B,id[35][35],ans,dis[1005],vis[1005];char mp[35][35];int first[

2017-12-10 09:18:57 377

原创 bzoj4742 [Usaco2016 Dec]Team Building

题目一眼dp题,对吧,然后就是考虑状态的表示与转移了。有两个数组,f[i][j]是肯定要有的,然后选k个,最终状态就为f[i][j][k]就好了。表示a中前i个与b中前j个,选出了k个的方案数。(当然顺序对于这道题没有影响,但是要先排一个序。)转移:f[i][j][k]=f[i−1][j][k]+f[i][j−1][k]−f[i−1][j−1][k]f[i][j][k]=f[i-1][j][k]+f

2017-12-10 09:08:30 315

原创 bzoj2760 [JLOI2011]小A的烦恼

题目大模拟题,这种题就是要细心才行,比如noip2017的d1t2就是这样的,没什么难度。对于这道题,可以用STL来优化,这也不失为一种好办法来加快代码速度。STL就是要多练。#include<bits/stdc++.h>#define N 1000using namespace std;int total,m;string ans[N+5],name;int cnt[N+5];int

2017-12-08 11:34:59 506

原创 bzoj3438 小M的作物

题目一眼最小割,其实和大多模型是一样的。也比较套路,就是用总价值减去最小割就好了,对于这道题。源点连向耕地再连向汇点,对于每一个额外收益,然后拆成两个点,之后的连法也就差不多了。#include<bits/stdc++.h>#define inf 100000000#define N 4100010 using namespace std;int dis[N+5],first[N+5],n

2017-12-03 19:37:24 264

原创 bzoj3994 [SDOI2015]约数个数和

题目反演的经典套路题目。对于这种题,套路无非就是先用狄利克雷卷积一下,然后交换求和顺序,最后就能化为一个 n√\sqrt n的求和了。对于交换顺序这个事,只要注意一下各个变量的依赖关系就好了。对于这道题来说:∑ni=1∑mj=1d(i,j)=∑ni=1∑mj=1[ni][mj][gcd(i,j)==1]\sum_{i=1}^n \sum_{j=1}^md(i,j)=\sum_{i=1}^n \sum

2017-12-03 19:27:53 411

原创 [poj2369]Permutations

一句话题意:求一个排列的所有循环的最小公倍数。正好前几天因为牛排序而知道了这个东西,做一做模板题练一练手。其主要思想就是两个数组互相迭代,可以用简单的例子来模拟一下也是可以的。#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>#include<string>#include<cstring>#includ

2017-12-03 18:58:23 263

原创 [hdu1599]find the mincost route

一句话题意:求无向图的最小环的长度。emm,这应该算是模板题或者叫floyd的经典应用吧。#include<bits/stdc++.h>#define inf 100000000using namespace std;int n,m,x,y,z;int f[105][105],g[105][105];inline void floyd(){ int mini=inf; f

2017-12-03 18:54:52 285

空空如也

空空如也

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

TA关注的人

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