自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lambda QAQ

fmap :: (q -> a) -> f q -> f a

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

原创 Codeforces 349C - Mafia

Codeforces 349C - Mafia有nn个小朋友玩游戏。每一次游戏都必须有一个小朋友坐庄,其他的人作为playerplayer参加。对于小朋友ii,他希望至少有aia_i次游戏作为playerplayer参加,问至少需要多少次游戏才能满足所有小朋友的条件。二分游戏的次数,计算每个小朋友可以坐庄的次数,加和判断是否大于总次数即可#include<bits/stdc++.h>using n

2016-10-31 13:45:35 490

原创 Codeforces 347E - Number Transformation II

给出nn个数字xix_i,两个整数AA,BB(A−B≤106)(A-B \le 10^6)每一步可以做两个操作其中一个1 将AA变成A−1A-12 将AA变成 A−A(modx1)A - A \pmod{x_1}问将AA变成BB的最小步数。每次贪心的找到能减到的最小的大于等于BB的AA即可。如果一个A−A(modxi)<BA -A\pmod{x_i} < B ,那就可以将这个xix_i删掉。#inc

2016-10-31 13:44:13 546

原创 Codeforces 347D - Lucky Common Subsequence

给出两个长100100的字符串aa,bb。再额外给出一个长100100的字符串 virusvirus。询问aa和bb最长的没有字串是virusvirus的公共子序列。输出这个子序列。在经典的LCSLCS的dpdp解法上再加一维,记录当前的最长公共子序列匹配virusvirus的长度。第三维转移可以用KMPKMP或者ACAC自动机。#include<bits/stdc++.h>using names

2016-10-31 13:39:36 480

原创 Codeforces 347C - Alice and Bob

每一回合挑选集合中的两个数x,yx,y, 满足|x−y||x-y|不在集合中,然后把|x−y||x-y|加到集合里。给出集合最初的nn个数问是否先手必胜。游戏结束的时候最小的数就是这nn个数的gcdgcd,最大的数就是一开始给出的集合的最大的数。游戏结束的时候的集合的大小就是结束时最大的数最小的数\frac{最大的数}{最小的数}这样就可以得出游戏进行的步数,然后就可以得到结果了#include<b

2016-10-31 13:37:24 413

原创 Codeforces 344E - Read Time

二分后贪心#include<bits/stdc++.h>using namespace std;#define LL long long const int maxn = 112345;const LL INFF = 0x3f3f3f3f3f3f3f3fll;LL h[maxn],p[maxn];int n,m;bool check(LL x){ int pos = 0;

2016-10-31 13:35:39 260

原创 Codeforces 344D - Alternating Current

桌上有两根相互缠绕的电线,问能否在符合题目要求的移动下将这两根电线解开不难看出相邻的两个同色线结是可以消去的,那么能否解开就等价于能否把线结消空。这样用一个栈模拟即可。#include<bits/stdc++.h>using namespace std;const int maxn = 112345;char arr[maxn];stack<char> S;int main(){ sca

2016-10-30 22:10:33 275

原创 Codeforces 344C - Rational Resistance

刚开始有一个阻值为1的电阻。每次可以将一个电阻和某个阻值为1的电阻串联或者并联来获得一个新的电阻,问至少需要多少个阻值为1的电阻能凑出阻值为ab(1≤a,b≤1018)\frac{a}{b}(1 \le a,b\le 10^{18})的电阻假设当前手头上有xy\frac{x}{y}的电阻,那么每一次加电阻可以将其变为xx+y\frac{x}{x+y}或者x+yy\frac{x+y}{y}的电阻。通过

2016-10-30 22:07:31 299

原创 Hdu 4416 Good Article Good sentence

给出一个的字符串A,|A|≤100,000A,|A| \le 100,000,nn个字符串,分别为Bi,∑i=1n|Bi|≤100,000B_i,\sum\limits_{i=1}^n|B_i| \le 100,000,求AA中没有在任何一个BiB_i中出现的字串的个数。对AA建立SAMSAM,将每一个BiB_i都放在SAMSAM上运行,记录SAMSAM中的每个节点对应的Bi中最长的匹配长度。对于S

2016-10-25 22:05:24 260

原创 Hdu 5890 Eighty seven

有50个数,每次拿走至多三个数询问是否存在十个数满足和等于87。可以用bitset压位跑一个背包抠一抠常数就能过去惹#include<bits/stdc++.h>using namespace std;const int maxn = 55;int var[maxn];int n;int ans[maxn][maxn][maxn];bitset<88>dp[10];bool cal(){

2016-10-19 17:37:19 290

原创 Poj 3208 Apocalypse Someday

求第nn小的数位中含有三个连续的6的数。考虑小于xx的数位中含有连续三个6的数的个数,可以数位dp。状态为之前连续的6的个数,如果已经有三个6了,无论加什么数字都是合法状态,否则加一个不为6的数就重置个数为0。然后二分就好了#include<cstdio>#include<cstring>using namespace std;#define LL long long const int ma

2016-10-19 17:12:10 404

原创 Codeforces 55D - Beautiful numbers

统计[L,R][L,R]内能被自己每一非零位整除的数的个数。一眼数位dp考虑到LCM(1,2...9)=2520LCM(1,2...9) = 2520可以用前缀mod2520和前缀非0数的LCM做为状态注意到由1到9组成的lcm其实是很稀疏的,可以离散化一下。具体就见代码吧。#include<bits/stdc++.h>using namespace std;const int maxn = 20

2016-10-12 17:57:21 335

原创 Hdu 2243 考研路茫茫——单词情结

求长度小于n(1≤n<231)n(1 \le n < 2^{31})的串中包含至少一个模式串的个数。模式串总长度不超过25。市面上的题解几乎都是反着考虑。但是其实正着考虑也是可以的。我们在AC自动机的状态上额外添加一个状态AcpAcp,也就是接受态。对于两个状态St→cxSt \xrightarrow c x如果xx是某一个模式串的结尾,那么重定向St→cAcpSt \xrightarrow c A

2016-10-11 17:35:36 435

原创 Bzoj 3530 数数

求[1,n](n≤101000)[1,n](n\le 10^{1000})中不包含给定数字作为字串的数字个数(mod109+7)\pmod{10^9+7},给定数字总长度≤1500\le 1500。一眼看过去是一个用AC自动机表示状态,用数位dp的模板题注意前导零是不会被统计到的具体见代码#include<bits/stdc++.h>using namespace std;const int ma

2016-10-11 16:54:04 286

原创 Hdu 4507 吉哥系列故事——恨7不成妻

Hdu 4507 吉哥系列故事——恨7不成妻求[L,R][L,R]中不满足以下任意一条的数的平方和1 整数中某一位是72 整数的每一位加起来的和是7的整数倍3 这个整数是7的整数倍;一眼看去又是一个数位dp,但是怎么统计平方和呢?假设我们在统计最高位为x的n个数的平方和有∑i=1n(x+a)2=n×x2+2x×∑i=1nai+∑i=1na2i\sum\limits_{i=1}^n ( x + a )

2016-10-09 10:15:56 332

原创 Lonlife 1016 Change of Life

定义f(x)f(x)为LIS(a0,a1...am)(n=a0+a1×10+...+am×10m,0≤ai≤9,am≠0)LIS(a_0,a_1...a_m)(n = a_0 + a_1\times 10+...+a_m\times 10^m,0\le a_i\le 9,a_m\neq 0)求∑ni=1f(i)\sum_{i=1}^nf(i)1≤n≤10151 \le n \le 10^{15}一眼

2016-10-09 09:56:36 288

原创 Codeforces 258B - Little Elephant and Elections

从[1,m][1,m]中依次选择77个数,满足前六个数中44和77的个数之和小于最后一个数的44和77的个数的方案数(mod1e9+7)\pmod{1e9+7}我们按照4和7的个数对[1,m]的数做等价类划分。然后dfs就好。前半部分可以用数位dp解决。#include<bits/stdc++.h>using namespace std;const int maxn = 12,mod = 1e9+

2016-10-08 08:40:15 364

原创 Hdu 5456 Matches Puzzle Game

问有多少个等式满足使用的火柴棍个数恰好为nn个输出等式个数(modm)\pmod{m}5≤n≤500,3≤m≤2×1095\le n \le 500,3 \le m \le 2\times 10^9就是求满足a+b=ca + b = c,并且a,b,ca,b,c每一位按照使用的火柴棍个数加权之后恰好等于n−3n-3的等式个数考虑到这个题的状态和之前使用了多少位无关并且保证剩下的火柴棍是单调递减的可以

2016-10-06 17:20:36 531

原创 Hdu 5921 Binary Indexed Tree

题解链接题意搬运: 用树状数组维护一个序列,在给区间 [l,r][l,r] 加上一个tt的时候,要给 [1,r][1,r]加上 tt,给 [1,l−1][1,l−1] 减去 tt,两次操作后值真正发生变化的节点个数就是这一次区间修改的代价,现在要修改每一个[1,n][1,n]的子区间,求总代价对 109+710^9+7取模后的结果。题解搬运 记cnticnt_i表示ii的二进制表达式中11

2016-10-05 21:53:14 1528

原创 Hackerrank Coprime Conundrum

计算小于乘积小于nn的互质二元组的个数具体的,计算\sum_\limits{i=1}^n\sum\limits_{j=i}^n[i \times j \le n][gcd(i,j)=1]\sum_\limits{i=1}^n\sum\limits_{j=i}^n[i \times j \le n][gcd(i,j)=1]其中n≤109n\le 10^9可以考虑枚举ii,计算和ii互质大于ii并且和i

2016-10-05 12:40:29 336

原创 计蒜客 青云的机房组网方案

题面: 有一棵点数10510^5的树,每个节点有一个权值,权值范围是[1,105][1,10^5]的,问所有两个权值互质的节点之间距离的和题解关于虚树,记下一些key point以后要是忘了可以回来看看虚树是保留原树的所选定的一些节点,保留这些选定节点两两的LCALCA,按照这些保留点在原树中的关系所建的一个新树。可以保证如果选定节点是kk个,那么虚树的节点不会超过2×k2 \times k。

2016-10-03 13:47:12 598 2

原创 Hdu 5909 Tree Cutting

n(n≤1000)n(n\le 1000)个点的树上每个点有一个权值(0≤Ci<m,m≤210)(0\le C_i < m,m\le 2^{10}),定义一个子树的权值为这个子树节点的权值的异或。分别求权值为[0,m−1][0,m-1]的子树的个数mod(109+7)mod(10^9+7)对于一个无根树的子树,如果我们钦定一个点作为无根树的根,那么对于这个树的所有子树都可以钦定出唯一的一个点作为根。

2016-10-02 23:20:15 950

空空如也

空空如也

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

TA关注的人

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