关闭

[agc011e]Increasing Numbers

前言1min了我还不会一点思路都没有这正常? orz题解。题意把大整数n拆成若干个上升数之和,最小化上升数的个数。 上升数即从最高位往最低位是一个不下降的序列。做法发现任意上升数能表示成全1数的和。 如果你允许0的存在,那么每个上升数都能被拆成9个全1数的和。 全1数的位数假如是k,可以表示成10k+1−19\frac{10^{k+1}-1}{9} 刚好0是-1位,代入该式子也成立。 现...
阅读(68) 评论(0)

[agc015f]Kenus the Ancient Greek

前言结论题我只能orz。 题解错了很不舒服。题意找到(n,m)以内点对欧几里得步数最大的点对个数。做法设f(a,b)表示欧几里得步数。 我们先设斐波那契数F0=1,F1=1,Fi+2=Fi+1+FiF_0=1,F_1=1,F_{i+2}=F_{i+1}+F_i 容易发现f(Fk,Fk+1)=kf(F_k,F_{k+1})=k。 结论一:如果f(x,y)=kf(x,y)=k,且x<yx<y,则...
阅读(53) 评论(0)

通信

题目大意在树上随机选一个序号区间的点,求构成的虚树大小期望(类似这个意思,其实是2*虚树大小-2)做法可以想到枚举区间右端点,每个节点记录cnt表示存在多少k使得[k,i]构成虚树包含自己(i是当前右端),然后每次统计答案与修改cnt复杂度与树高有关。 这个暴力可以树剖优化,但数据随机所以暴力跑过去了。#include #include #define fo(...
阅读(80) 评论(0)

Create

题目大意一个序列,有很多询问,每个询问要问区间>=x的数的个数。 现有若干修改操作,区间赋值,每次修改后请你将所有询问得到的答案和输出。颜色段均摊分析颜色段! 可以用set维护颜色段。 然后只需要考虑一个区间全部由x变成y产生代价。 先把询问按x排序做可持久化线段树,然后就很好做。#pragma GCC optimize(2) #include #include<algori...
阅读(98) 评论(0)

神奇的玩具

题意一副无向图,第i条边连接ai和bi。现在你需要选择恰好k个点,对于第i条边,你必须让ai和bi至少一个被选择,如果ai被选择,付出pi的代价,否则付出qi的代价(pi<=qi),求最小代价。搜索可以发现pi是必然代价,qi-pi就是附加代价。 于是产不产生代价只与ai是否没有被选,这方便我们加上最优性剪枝。 一个不选会导致一堆必选。 判掉度数为0和自环,我们可以发现T(n)<=T(n-1)...
阅读(107) 评论(0)

[bzoj4849]Mole Tunnels

题目描述鼹鼠们在底下开凿了n个洞,由n-1条隧道连接,对于任意的i>1,第i个洞都会和第i/2(取下整)个洞间有一条隧 道,第i个洞内还有ci个食物能供最多ci只鼹鼠吃。一共有m只鼹鼠,第i只鼹鼠住在第pi个洞内,一天早晨,前k只 鼹鼠醒来了,而后n-k只鼹鼠均在睡觉,前k只鼹鼠就开始觅食,最终他们都会到达某一个洞,使得所有洞的ci均大 于等于该洞内醒着的鼹鼠个数,而且要求鼹鼠行动路径总长度最...
阅读(178) 评论(0)

三明治

题目描述做法对于每个格子(i,j)设L(i,j)表示先吃靠左边界的格子至少要吃多少格子,R意义类似。 然后你发现L(i,j)>=L(i,j-1)。 于是一行一行做,每行才清空一次标记数组。#include #include #define fo(i,a,b) for(i=a;i=b...
阅读(70) 评论(0)

[LibreOJ β Round]ZQC的树列

题目描述见LOJ。做法显然对于每一段数字,要么可选要么必选。 假如有t个,若必选,则方案为2^t-1,否则为2^t。 因此只有1、2、3就可以构造所有情况。 尝试把n拆分成2^t-1以及2^t的乘积。 这个用dfs即可。#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++...
阅读(235) 评论(0)

[CF538D]Weird Chess

题目大意懒得写做法暴力判断哪些走法要封死。 剩余走法都可以当做有效,判断每个应该攻击的位置是否被攻击了。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=100+10,mx=50; bool pd[maxn][maxn],bz[ma...
阅读(78) 评论(0)

[CF538C]Tourist's Notes

题目大意懒得写做法每一段内求个最高,列不等式。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=100000+10; int d[maxn],h[maxn]; int i,j,k,l,t,n,m,x,y,ans; bool czy;...
阅读(74) 评论(0)

[CF538B]Quasi Binary

题目大意懒得写做法这样的数只有2^6个。 因此暴力DP#include #include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; const int maxn=1000000+10...
阅读(88) 评论(0)

[CF538A]Cutting Banner

题目大意懒得写做法枚举分割位置暴力判#include #include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; const int maxn=100+10; char s[maxn]...
阅读(110) 评论(0)

说无可说

题目描述“What’s left to say when every word’s been spoken?” “若沉默再无休止,是否已经说无可说?” ——来自网易云音乐 沉默之中,我已不懂言语。 幻觉中,有人在轻声低吟。 那是谁? 我听见,那个人说了N句话,然而好多话都是重复或者类似,比沉默更加让人不堪。 打破不堪,我想。 每句话是由若干个小写字母组成的字符串。 字符串A和B的相...
阅读(225) 评论(0)

[bzoj4927][SDOI省队集训2017]diyiti

题目大意在一个长度为n的数列中找出六个数,使得可以把它们分成四组,每组的和均相等。求方案数。XJB做只有1+1+1+3或1+1+2+2两种拆分。 先预处理two[x]表示找出两个数和为x的方案数,以及one[x]表示有多少数是x。 对于1+1+1+3,枚举那个1是x,首先有一个C3one[x]C_{one[x]}^3。 对于那个3,我们先枚举一个ai,然后对应方案数是two[x-a[i]]。...
阅读(240) 评论(0)

[bzoj4835]遗忘之树

题目描述定义任意两点之间存在唯一路径的无向图是树。对于一棵n个点的树,如果删掉某个点u之后每个连通块的大小均不 超过n/2,那么称u为这棵树的重心。现在有一棵n个点的树T,利用过程P来构造一个n个点的有向图G,初始G没有边 。现在对T调用过程P,P的内容如下: 1:删去u,对每个连通块递归调用过程P; 2:对每个连通块,如果它的标号最小的重心为v,那么在图G中连一条u到v的有向边。 3:现...
阅读(124) 评论(0)
54条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:250677次
    • 积分:10085
    • 等级:
    • 排名:第1807名
    • 原创:743篇
    • 转载:4篇
    • 译文:0篇
    • 评论:187条
    最新评论
    文章分类