codeforces
Rainbow6174
这个作者很懒,什么都没留下…
展开
-
Codeforces 383C Propagating tree 题解&代码
题意: 给出一个以1为根节点的n个节点的树,有两个操作: 1、操作为1 x val,给x节点增加val 2、操作为2 x,查询x节点当前的值 每次给一个节点的值增加val,这个节点的孩子的值将会增加-val 如此,给一个节点增加val就相当于它的子节点增加-val,它的子节点的子节点增加val…如此直到叶子节点思路: 每次都是给修改节点子树中与修改节点深度奇偶性相同的节点增加val,给与原创 2015-12-15 17:12:26 · 483 阅读 · 0 评论 -
Codeforces 392C Yet Another Number Sequence 题解&代码
这道题!我推了四个小时!公式! 不是这题真的好打击智商啊…实话,我看着别人十几分钟推完一脸轻松就觉得该AFO 好悲伤啊…数学能力果然差没得救(i+1)^k=C(k,k)(i^k)+C(k,k-1)(i^(k-1))……+C(k,0)(i^0) Ai(k)=Fi×(i^k)=F(i-1)(i^k)+F(i-2)(i^k) 设: u(i,k)=F(i)(i^k)=∑C(k,j)((i-1)^j原创 2016-01-20 16:39:36 · 723 阅读 · 0 评论 -
Codeforces 492E Vanya and Field 题解&代码
嘛,从最开始的gcd(n,dx)=gcd(n,dy)=1可以发现互素性质 这样的话很容易脑补出在n×n的方格中,存在着的我们找到的苹果树【?】一定是一列而不是多列【有点绕口 这样的话我们只要算偏移量就行啦 比如将经过(0,0)的一列斜率为dy/dx的直线偏移量设为0 那么经过(1,0)的直线偏移量为1 这样可以把二维的统计计算转化为一维 That’s all#include<iostre原创 2016-01-20 13:31:23 · 551 阅读 · 0 评论 -
Codeforces 570D Tree Requests 题解&代码
上周的最后一道题解!补!完!了! 啊补题解补到想吐是什么体验…我现在算是了解了题意:给出一颗n个点的多叉树,每个点都有一个对应字母(不唯一)和一个对应编号(唯一)。然后有m组询问,每一组询问给出一个v和一个h,表示节点v所在的子树中深度是h的节点【深度是说从根节点向下计算的总深度】中包含的字母,如果这些字母可以组成回文串,输出Yes,否则输出No思路:dfs处理一遍dfs序,按照深度一遍一遍加树状原创 2016-01-20 18:05:26 · 517 阅读 · 0 评论 -
Codeforces 111C Petya and Spiders 题解&代码
题意:给出一个n×m的网格,每个网格里有一只蜘蛛,每只蜘蛛一秒都可以向四个方向跳一格【不可以跳出网格】(当然它也可以选择不跳)。问一秒之后【每只蜘蛛都行动至多一次】网格上有至多多少个位置没有蜘蛛思路:dp啦dp啦= = dp方程是当存在某种转移条件时,dp[i][sta][stb]=max(dp[i-1][stc][sta]+s[sta],dp[i][sta][stb]) 其中i是行数【其实是最原创 2016-01-20 17:40:16 · 748 阅读 · 0 评论 -
Codeforces 367D Sereja and Sets 题解&代码
题意:有1-n共n个正整数被分成了m个非空集合(m个集合的并是n个正整数,交总是空集),从m个集合中选最少的集合数,使得对于给定的d,选出的集合中的所有数从小到大排列后满足对于[1, n]这个区间中任意长度为d的连续子区间都至少有一个数在选出的集合中 (1<=d<=n<=100000,1<=m<=20)这个题意是看网上的转化= =原题意比这个抽象很多,这样转化之后整个问题都简化了 思路: 如果要原创 2016-01-20 17:21:45 · 610 阅读 · 0 评论 -
Codeforces 165E Compatible Numbers 题解&代码
题意:输入长度为n的数组A[],对于每个数A[i]对应输出一个当前数组中与A[i]&运算后为0的数,如果不存在这样的数那么输出-1思路:如果有a[i]&y=0,那么有y=a[i]^((1<<22)-1),那么我们就使dp[y]=i。然后对于一个数x,如果dp[x | (1 << j)]存在的话,那么说明对于数字x一定有a[dp[x | (1 << j)]]&x=0,那么dp[x]=dp[x | (1原创 2016-01-20 17:07:29 · 622 阅读 · 0 评论 -
CodeForces 333A Secrets 题解&代码
你可以选择一种是三的次方的硬币,满足: 1、用的硬币的总面值要大于n并且最接近n 2、用的硬币数量要尽量多(满足条件1的情况下) 问需要消耗多少个硬币。#include<iostream>#include<stdio.h>using namespace std;long long n,a;int main(void){ cin>>n; a=3LL; while原创 2016-01-20 16:53:39 · 779 阅读 · 0 评论 -
CodeForces 327C Magic Five 题解&代码
其实挺水的?【并不 反正代码不长思路: 对于一个串,我们很容易知道对于某一位i是0或5,有2^i种选法【字符串从第0位开始,第i位确定】 一个串的选法也很容易求出,按顺序求出每一位的选法,加起来【设一个串有k种选法 对于多个串,第二个串的某一位i【对于该串的第i位】,有2^(strlen(s)+i)种选法,即(2^i)×(2^strlen(s))种选法。这样的话,选法之和可以提取为(2^st原创 2016-01-19 21:32:14 · 815 阅读 · 0 评论 -
Codeforces 338D GCD Table 题解&代码
来自中国剩余定理的恶意 我其实什么都不知道…直接看题解思路: 我们需要得到的是一个(x,y)组 其中x满足x%a[i]=0,y满足y%a[i]=1-i(对于所有a[]),这样就可以保证x是a[i]的最小公倍数且y+i-1是所有a[i]的倍数(同条件下得到的将是最小的y) 然后检验一下x和y是不是满足gcd(x,y+i-1)=ai…不满足说明我们求出的x和y是无效的,既然已得到的x和y无效,那原创 2016-01-19 21:08:23 · 898 阅读 · 0 评论 -
Codeforces 343D Water Tree 题解&代码
其实是树剖QwQ不过个人感觉和线段树还是很像的…所以树剖的本质大约就是dfs序+线段树?in[]记录节点的节点的dfs编号 out[]记录节点的控制范围 (in[i]<=in[j]<=out[i]当且仅当j节点属于以i为根节点的子树) pos[i]记录i节点的父亲节点 这样就能用[1,n]表示一颗以1为根节点的树了1、每次要给i节点加水的时候就把[in[i],out[i]]的值修改为1,用l原创 2015-12-09 17:48:12 · 642 阅读 · 0 评论