![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
luogu
hhuhao
这个作者很懒,什么都没留下…
展开
-
Luogu P1709 [USACO5.5]隐藏口令Hidden Password
.原创 2017-05-01 20:57:21 · 537 阅读 · 0 评论 -
LuoguP3938斐波那契
这是一道好题。首先,我们先将兔子分组。⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪1234,56,7,89,10,11,12,13\begin{cases}1 \\ 2 \\ 3 \\ 4,5 \\ 6,7,8 \\ 9,10,11,12,13\end{cases}就是按出生时间分组,记ri,jr_{i,j}表示第ii月第jj只出生的兔子,fkf_k表示第kk只兔子的父亲,febi={1febi−1+febi原创 2017-11-04 16:32:47 · 300 阅读 · 0 评论 -
LuoguP2827 蚯蚓
这道题去年看了一下题解,今年没有看题解做,只记得单调队列,然后十分尴尬。代码并不长(短)//说明在程序下面#define N 100010#define M 7000010long long n,m,q,u,v,t,topb,lsta,lstb,lstc,topc;long long a[N],b[M],c[M];bool cmp(long long a,long long b){原创 2017-11-04 14:56:43 · 193 阅读 · 0 评论 -
Luogu3931
这是一道月赛题(PJ)显然是树形DPansi=∑fu=imin{ansu,wu,i}ans_i=\sum_{f_u=i}\min\{ans_u,w_{u,i}\}#define N 500010int e,t[N],n[N],b[N],w[N],m,r,p[N];#define fo(i,a) for(int i=b[a];i;i=n[i])void add(int u,int v,int w原创 2017-11-04 14:54:57 · 311 阅读 · 0 评论 -
Luogu3927
就是一个十分简单的数论题。来自LuoguNOIP模拟赛TG首先,我们设pp为质数,q,kq,k为正整数,fi,jf_{i,j}表示i!(j)i!_{(j)}末尾的00的个数(a(b)a_{(b)}表示aa转为bb进制后的数)可以推知fq,p=∑logq,pi=1(qpi−qpi+1)×i=∑logq,pi=1qpif_{q,p}=\sum_{i=1}^{log_{q,p}}(\dfrac{q}{p^原创 2017-11-04 14:54:32 · 222 阅读 · 0 评论 -
LuoguP1031 均分纸牌
假如当前不是标准纸牌,就++。 PS: !!x表示把x转换为2进制,具体:!!x={01x=0x≠0!!x=\begin{cases}0&x=0\\1&x\not=0\end{cases} 代码复杂度--,时间复杂度++int n,p,ans,g[110],k;int main(){ n=read(); fr(i,1,n) p+=g[i]=read();原创 2017-08-21 16:14:19 · 245 阅读 · 0 评论 -
LuoguP1306 斐波那契公约数
通项公式:fn=5√5[(1+5√2)n−(1−5√2)n]f_n=\dfrac{\sqrt5}{5}[(\dfrac{1+\sqrt5}{2})^n-(\dfrac{1-\sqrt5}{2})^n] 其实没用。 先给代码吧。int f[10000010];int gcd(int x,int y){ return y?gcd(y,x%y):x;}int main(){原创 2017-08-26 14:52:24 · 194 阅读 · 0 评论 -
LuoguP1890 gcd区间
这道题,只要会gcd,都可以过啊。 (a,b)=(b,a mod b)(a,b)=(b,a\ mod\ b)int gcd(int a,int b){ return b?gcd(b,a%b):a;}然后,RMQ比暴力还慢。。。。。。。。。。。(此处省略tanπ2rad个。(众:那不是不存在的吗)tan \dfrac{\pi}2rad个。(众:那不是不存在的吗))int gcd(int原创 2017-08-21 15:52:16 · 249 阅读 · 0 评论 -
LuoguP1820 寻找AP数
设p1,p2,p3⋯p_1,p_2,p_3\cdots为从小到大的素数集合,k1,k2,k3⋯k_1,k_2,k_3\cdots为它们的指数,APAP数有:∀i,ki>ki+1\forall i,k_i>k_{i+1}所以根据这个性质枚举,还有就是找在指数一样多(计算公式为∏(ki+1)\prod (k_i+1))的情况下,要求最小的!!!long long z[20]={2,3,5,7,11,13原创 2017-08-21 15:40:42 · 499 阅读 · 0 评论 -
LuoguP1637 三元上升子序列
表不喜欢离散化,因为 美丽 丑陋,人人都会的东西,为什么要考呢QAQ 就是BIT 正一次反一次,相乘#include<map>map<int,int>ap;#define N 30010int bit[N<<2],a[N],b[N];int n,f[N],g[N];long long ans;void add(int x){ while(x<=n) {原创 2017-08-20 14:12:35 · 243 阅读 · 0 评论 -
LuoguP1338 末日的传说
这应该是比较容易的一道数论题了。 枚举一些: 发现一个大事情:[1,6]+1=[7,12][1,6]+1=[7,12] 还有更多:[1,2]+1=[3,4]=[5,6]−1⋯[1,2]+1=[3,4]=[5,6]-1\cdots 于是发现:aka_k的贡献为:k−1−∑ki=1[ai<ak]k-1-\sum_{i=1}^k[a_i<a_k] 于是,稍微变以下再模拟一下。。long lo原创 2017-08-19 14:50:58 · 381 阅读 · 0 评论 -
LUOGUP1739 表达式括号匹配
判断是否匹配。。。 模拟char c;int s;int main(){ c=getchar(); while(c!='@') { if(c=='(') s++; if(c==')') s--; if(s<0) { puts("NO"原创 2017-08-19 11:33:26 · 162 阅读 · 0 评论 -
LuoguP1996约瑟夫问题
模拟即可int n,m,l,ne[110];int main(){ n=read(); m=read(); fr(i,1,n-1) ne[i]=i+1; ne[n]=1;//设置下一个人 l=n; while(n--) { fr(i,2,m) l=ne[l]; prin原创 2017-08-19 11:24:32 · 348 阅读 · 0 评论 -
LuoguP1115最大字段和
看到这道题,第一反应:前缀和 BUT,前缀和貌似过不了QAQ 看了看难度:感觉我省一白拿了QAQ 然后,仔细想了想,写了一个看似对的算法,结果竟然。。。 时间复杂度:O(n)O(n)空间:O(1)O(1)int n,k,ans=-23333333;int main(){ n=read(); fr(i,1,n) { k=k+read();//当前的子原创 2017-08-19 11:18:59 · 250 阅读 · 0 评论 -
Luogu P1970 花匠
我们可以看出:连续上升或下降,只可能留两侧的数。然后就是:因为要求最多的盆数,所以:每个连续上升或下降的两侧,都要取原创 2017-07-30 20:35:35 · 256 阅读 · 0 评论 -
LuoguP3908
求1 xor 2 xor… xor n1\ xor\ 2\ xor\dots\ xor\ n按位计算:第一位特别点计算方法:(n&1) xor ((n>>1)&1)(n\&1)\ xor\ ((n>>1)\&1)每四个数异或和末尾为00然后就可以得出末二位值相等时才得出一后面的位数从高到低算我们可以发现xor_sum1..2k−1=0xor\_sum_{1..2^k-1}=0然后我们就根据这个原创 2017-11-05 11:58:37 · 202 阅读 · 0 评论