自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Apel_dey

一切都是命运石之门的选择

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

原创 BZOJ 4373 算术天才⑨与等差数列

算术天才⑨非常喜欢和等差数列玩耍。有一天,他给了你一个长度为n的序列,其中第i个数为a[i]。他想考考你,每次他会给出询问l,r,k,问区间[l,r]内的数从小到大排序后能否形成公差为k的等差数列。当然,他还会不断修改其中的某一项。为了不被他鄙视,你必须要快速并正确地回答完所有问题。注意:只有一个数的数列也是等差数列。Input第一行包含两个正整数n,m(1<=n,m<...

2019-05-30 02:11:36 466

原创 Havel-Hakimi定理

可图:一个非负整数组成的序列如果是某个无向图的度序列,则该序列是可图的。度序列:Sequence Degree,若把图G所有顶点的度数排成一个序列,责成该序列为图G的一个序列。该序列可以是非递增序的、可以是非递减序列、可以是任意无序的。由非负整数组成的非增序列s(度序列):d1,d2,…,dn(n>=2,d1>=1)是可图的,当且仅当序列:s1:d2 – 1,d3 – 1,…,d...

2019-05-06 17:54:12 227

原创 BZOJ1072-[SCOI2007]排列perm(暴力)

排列随便搞:输入一个长度小于等于10的数串,问这个串的所有排列被d整除的个数,T&lt;=15。 10!=3628800 3628800*10=36288000 3628800*10*15=544320000 不会dp,所以暴力代码:#include&lt;bits/stdc++.h&gt;using namespace std;int d;int main(){ ...

2018-09-04 15:31:51 189

原创 CodeForces 620E New Year Tree (DFS序+线段树)

做法:因为只有60种颜色,所以可以状压颜色,这样的话就可以把区间颜色合并的操作看为“或”,线段树随便维护一下就可以了。 WA了无数发才想起来 ”1LL &amp;lt;&amp;lt; 一个东西“ 和 “1 &amp;lt;&amp;lt; 一个long long 的东西” 是不一样的(打多校的时候还WA过一发)……贼气.代码:#include&amp;lt;bits/stdc++.h&amp;gt;using name...

2018-08-30 02:59:09 193

原创 BZOJ 1054移动玩具(BFS+哈希表)

搜索,哈希判重#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;bool vis[65540];int dx[4]={0,0,1,-1};int dy[4]={-1,1,0,0};struct sta{ int a[5][5]; int step;}bg,ed;int hash_ed;int ha(sta a)...

2018-08-29 15:09:49 256

原创 codeforces 461B 树形dp

做法:dp[i][0]表示以节点 i 为根的子树没有黑点的方案数,dp[i][1]表示以节点 i 为根的子树中有且仅有一个黑点的方案数。 转移的办法是对于这个树上的每一个节点,如果这个节点是白点,那么就会发现它的子树对dp[i][0]的影响就是不断把(dp[ e[i].to ][0]+dp[ e[i].to ][1])累乘起来,因为如果 i 的一个子树是个全白的树的话就是连边,不是全...

2018-08-20 01:29:43 222

原创 hdu6370 werewolf 缩点+搜索

把图画一画可以发现只能判断铁狼,没有确定的村民,铁狼会存在于一个环中,这个环里面如果只有一个人被认为是狼,那么他就是铁狼,可以很容易看出这是一个基环内向树的样子,所以就会发现,如果还有人说这个铁狼是村民的话,那说这个狼是村民的人就是狼。于是就可以想到有些环是没有用的环,如果有一个环上的边都是村民边,那这个环没有卵用,直接缩掉。至于如何搜答案,可以很快想到先确定环上的狼,然后向外扩展,于是就可以反向...

2018-08-10 15:56:33 265 1

原创 BZOJ1588[HNOI2002]营业额统计(Splay)

题目中“最小波动值”的意思是,之前的所有数中与当前数值的差的绝对值最小值是多少。 做法是Splay求前驱和后继:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;const int maxn=40005;struct node{ int fa,ch[2]; int cnt,siz; int val;}t[maxn...

2018-08-04 10:23:50 236

原创 BZOJ1012 ST表

链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1012 做法就是倒着做ST表,这样就可以实现log(n)更新,O(1)查询。 代码:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;const int maxn=200005;int stmax[maxn][20];int lo...

2018-07-31 16:02:30 165

原创 牛客多校2018四、A

题解:很显然地发现对于某个位置的一个1或2,它对答案的贡献与之前进行了多少秒有关,所以赶紧打个表看一看,就发现对于某一个1来说,它对答案的贡献就是(t*2+2),t是之前经过的时间,对于2的情况,打出假设输入的数列是“2”,“02”,“002”,“0002”的表,就发现答案分别是3,9,21,45,93……对这个答案数列做个差分,发现它的差分数列是等比数列,等比数列求和一下就是通项公式,就是3...

2018-07-30 01:05:22 182

原创 牛客多校一 A、D、E、J

因为太菜了,所以只能补到4题 A:题目描述:https://www.nowcoder.com/acm/contest/139/A 解法: 考虑0,1,2的分界线是可重叠但不相交的路径,所以将其中一条向左上或右下平移一格,然后套用LGV。 LGV的二阶简证:考虑两个起点两个终点,交换终点之后可使得两路径必定相交,对于此时的相交情况,交换终点,就是原路径的相交情况,因此答案就等...

2018-07-21 00:44:26 237

原创 POJ-3694 Network (桥)

题意是给一个无向图,q个询问,每次询问加上一条边之后剩余的桥的数量。 首先就是缩成一个只有桥的图,此时就会缩成一颗树,这时减少的桥就是询问的两点到他们的lca的距离,由于询问只有1000,所以LCA写暴力就可以实现。#include&amp;lt;cstdio&amp;gt;#include&amp;lt;iostream&amp;gt;#include&amp;lt;algorithm&amp;gt;#include&amp;lt;c

2018-07-13 12:40:36 407

原创 POJ-3281Dining 最大流

这题是挑战程序设计竞赛的例题,因为师兄讲了所以就补了做法:建图的方法是:加一个源点和汇点,讲饮料或食物分别连向源点、汇点,对于每一头牛,把它和它喜欢的食物和饮料连边,由于每一头牛在考虑的时候都是只能被一个边流入和流出(因为每一头牛都是只能吃一个食物喝一个饮料),所以把牛拆点(假如拆成牛1,牛2),就在牛1和牛2之间连一条边。然后源点到汇点跑一遍dinic就可以了。代码:#p...

2018-05-02 23:45:00 215

原创 BZOJ 1012线段树

[JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 12934 Solved: 5570 [Submit][Status][Discuss] Description  现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输...

2018-04-09 14:39:47 193

原创 wannafly挑战赛13A

链接:https://www.nowcoder.com/acm/contest/80/A来源:牛客网题目描述 学家zzy根据字体的特点,创建了一系列小号... I_Love_Chtholly!又到了打wannafly的时候,许许多多的大佬准备注册小号开始虐场,zzy也不例外,他发现他的电脑的字体有一个特点!某些不同的字符所显示的是一样的!满足以下四种情况之一,...

2018-04-09 00:49:51 180

原创 noip2006pj第四题 数列

题目描述给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:1,3,4,9,10,12,13,…(该序列实际上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…)请你求出这个序列的第N项的值(用10进制数表示)。例如,对于k=3,N=100,正确...

2018-04-07 00:23:41 293

原创 2016 Pacific Northwest Region Programming Contest—Division 2 Y - Zigzag

类似于LIS#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;int n;int f[55][2],a[55];int main(){ ios::sync_with_stdio(false); cin.tie(0); cin&amp;gt;&amp;gt;n; for(int i=1;i&amp;lt;=n;i++) cin...

2018-04-06 17:48:04 767

原创 牛客练习赛14 A、N的约数

题目描述: t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数 输入描述: 第一行一个正整数t 之后t行,每行一个正整数n 输出描述: 输出t行,每行一个整数,表示答案一个书的约数的个数等于把它素因数分解得到的素因数的指数都+1然后累乘。 小的素因数的指数大的话会更优。 now记录现在乘到了多少,ans统计答案,num...

2018-04-06 16:44:32 273

原创 2017多校(5) A、Rikka with Candies bitset

Rikka with Candies //bitsetbitset a、b分别保存a、b数组出现与否,a左移和右移就可以表示a(+/-)k。 把b的倍数在b1中做出来。#pragma GCC optimize(2)#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;gt;#include&amp;lt;bitset&amp;gt;using nam...

2018-04-06 16:32:04 172

原创 hdu1087 最大上升子串和

因为a[i]可以是负值,所以要把f[i]全都初始化成a[i]。#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;gt;#include&amp;lt;cstring&amp;gt;using namespace std;const int maxn=1005;long long f[maxn],a[maxn];int n;int main(){ io...

2018-03-13 20:44:24 232

原创 Hdu1863 最小生成树

最小生成树,Kruskal#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;int fa[105],gra[105][105];int n,m;const int maxn=100005;struct edge{ int u,v,w;...

2018-03-07 22:39:59 232

原创 hdu2181哈密顿回路(简单dfs)

单纯的dfs输出路径,主要是需要注意一下vis标记在dfs退栈的时候要取消。#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;using namespace std;const int maxn=25;int gra[maxn][3];bool vis[maxn];int ans[maxn...

2018-03-05 13:53:56 687

原创 Kattis clockpictures KMP

题目描述:You have two pictures of an unusual kind of clock. The clock has n hands, each having the same length and no kind of marking whatsoever. Also, the numbers on the clock are so faded that you can...

2018-03-03 12:44:17 413

原创 hdu5698 组合数学(求组合数)

这题真的是有点烦人。 首先可以想到相当于是在左上角区域内选0到min(m-2,n-2)个点,然后求和。 (假设m&lt;=n)也就是∑i=0m−2∁im−2∁in−2∑i=0m−2∁m−2i∁n−2i\sum_{i=0}^{m-2}\complement_{m-2}^{i}\complement_{n-2}^{i} 虽然这样已经可以AC了,但是这个式子是可以化简的。 ...

2018-02-28 03:11:22 451

原创 hdu4734 F(x) 数位dp

hdu4734题意描述是说每个十进制数都有个权值,这个权值F(x) = An * 2 ^(n-1) + A n-1 * 2 ^(n-2) + … + A 2 * 2 + A 1 * 1 (其中Ai代表每个十进制位),给出A、B两个十进制数,问在[0,B]区间内满足权值小于等于F(A) 的数的个数. 数位dp的状态dp[pos][sum] 表示pos位数,小于等于sum的方案数。 然而这个题...

2018-02-27 16:31:56 251

原创 Hdu3333树状数组&&离线查询

HDU3333 Turing Tree题意是说,给出N个数,有Q次询问,每次询问给出区间 [l,r] ,要求答出每次询问区间内所有不重复的数字的和,如果重复出现就只记录一次。 树状数组在线做会TLE,这个题用树状数组离线做。 做法是把所有区间按右端点排序,然后重复出现的数字就在上一次出现的位置减去,这样也就是说我们只要希望所有的数字都尽量在靠后的位置出现就可以了。#include&...

2018-02-26 20:31:55 212

原创 HDU6108小C的倍数问题

根据小学数学知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数。反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3的倍数。 根据基本的数学知识,我们能够知道上述规律的证明方式: (a0+a1∗101+a2∗102+......+an∗10n)mod9" role="presentation">(a0+a1∗101+a2∗10

2018-02-02 11:33:10 194

原创 POJ2299 逆序对(树状数组)

树状数组求逆序对裸题,先来个离散化,然后树状数组做逆序对,每把一个数字(a[i])处理之前,答案加上sum(a[i),然后再在树状数组中对于a[i]的位置上加1, 这样的话,每次树状数组取前缀和的时候,取到的前缀和就是在a[i]之前比a[i]大的数字的个数 贴代码:Problem: 2299 User: 76120114Memory: 7912K Time:

2018-02-01 20:03:05 238

原创 Codeforces652C

把点对映射成相应的区间,如果有相同左端点的区间就选择右端点靠左的,因为右端点靠右的区间实际上对于答案已经没有贡献了,然后再把区间从头到尾扫一遍即可 代码:#include#includeusing namespace std;const int maxn=300005;int a[maxn],t[maxn],tag[maxn];int r[maxn];int n,m;int m

2018-02-01 18:21:49 268

原创 51nod 1103-N的倍数(抽屉原理)

在这n个数的前缀和模N中,必定有一个前缀和模N为0或有两个前缀和模N相等,所以处理出所有前缀和模N的结果即可。 AC代码:#include#include#includeusing namespace std;const int maxn=50005;int n;int a[maxn],sum[maxn];int main(){ //freopen("in.txt",

2018-02-01 01:10:04 183

原创 hdu1728搜索bfs

hdu1728搜索bfs题目要求在规定的转弯次数内能不能到,所以状态就是转弯的次数和位置,直接bfs,到达目的地的时候判断一下转弯次数就OK了 直接上代码:#include#include#include#includeusing namespace std;const int maxn=105;int T,n,m,k;char gra[maxn][maxn];int s

2018-01-30 16:17:47 152

原创 uva10054

uva10054欧拉回路这个题的题目描述不是很明确,没有说必须要用到所有珠子,所以判断不判断联通没有影响,直接dfs删边找出路径就可以了 下面的代码第一个是判断联通的,第二个是不判断的,都能A,不过判断联通的代码会快一倍。#include#include#includeusing namespace std;const int maxn=55;int gra[maxn][max

2018-01-30 15:40:31 291

原创 UVA10047搜索

状态比较多,根据题目描述来看,是可以原地打转的,也是可以反向的,所以状态就是位置+颜色+方向,bfs,就是写起来比较糟心#include#include#include#includeusing namespace std;const int maxn=30;char gra[maxn][maxn];int sx,sy,tx,ty;int n,m;int pos[4][2

2018-01-26 16:09:40 246

原创 uva11624搜索

搜索,两次BFS,第一遍BFS处理出火烧的时间,第二次BFS逃跑路线,注意不只有一处火。#include#include#include#includeusing namespace std;const int maxn=1005;const int inf=0x3f3f3f3f;struct point{ int x,y;};int fire[maxn][ma

2018-01-25 00:59:14 192

原创 hdu1597二分查找

hdu1597二分查找先找出每一个“S[i]”的前缀和,再通过二分找到第n个阿拉伯数字所在的数。 代码:#include#includeusing namespace std;const int maxn=700005;long long pre[maxn];int tt[10]={0,1,2,3,4,5,6,7,8,9};int main(){ for(int

2018-01-22 02:25:23 238

原创 HDU1556

hdu1556 Color the ball(简单线段树)只需要支持区间修改操作,统计答案直接就把所有的区间下放,输出长度为1 的区间们#include#include#includeusing namespace std;const int maxn=100005;struct node{ int sum,add; int l,r;}tr[maxn2];

2018-01-15 23:44:09 229

原创 hdu1027 STL

next_permutation比当前排列大的下一个全排列prev_permutation比当前排列小的下一个全排列#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn=1005;int num[maxn];int n,m;int

2017-12-28 17:12:38 212

原创 POJ2676数独(DFS)

倒着搜,挺快的#include<iostream>#include<cstring>#include<cstdio>using namespace std;int gra[15][15];int t[10]={0,1,1,1,4,4,4,7,7,7};bool found;struct data{ int x,y;}nxt;bool check(int x,int y,i

2017-12-23 11:37:35 234

原创 hdu1024

hdu1024dp,滚动数组优化 方程:f[i][j]=max(f[i−1][j−1],f[i][k])+num[j];(k=1,2,...,j−1)f[i][j]=max(f[i-1][j-1],f[i][k])+num[j];(k=1,2,...,j-1) —>f[i][j]=max(f[i−1][j−1],f[i][j−1])+num[j]—>f[i][j]=max(f[i-1][j-1]

2017-11-13 02:36:15 271 1

原创 hdu2955

hdu2955比较清奇的一道01背包题,(英文题还是好难懂)题目意思就是说他每抢一个银行,就有一个收入和一个被抓住的几率,他想尽量抢多一点钱,还要让被抓住的可能性小于一个值。 emmmm,如果很直接地去想把概率当成背包里物品的重量,那么,一来没法计算,二来小数点这个问题也没法解决。 于是这个题。。。概率当价值,间接地把被抓的概率转换成逃跑的概率P(逃走)=1−P(被抓)P(逃走)=1

2017-10-18 01:04:47 515 3

空空如也

空空如也

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

TA关注的人

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