05 2016 档案

摘要:对于所有度数为2的点会使点数减1,边数减1 然而需要特判简单环 我们把询问和边都从大到小排序,然后冰炸鸡维护 Ans_N=n-出度为0的点-出度为2的点+简单环,Ans_M=添加的边数-出度为2的点+简单环 1 #include<cstdio> 2 #include<algorithm> 3 usi 阅读全文
posted @ 2016-05-30 20:48 Ngshily 阅读(354) 评论(0) 推荐(0) 编辑
摘要:A题题意:给定一个1到n的排列,可以交换其中某一对数,求1与n的距离最大值 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int n,x; 5 scanf("%d",&n); 6 int Min,Max; 7 for 阅读全文
posted @ 2016-05-30 16:42 Ngshily 阅读(246) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2016-05-29 10:29 Ngshily 阅读(2) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2016-05-29 10:21 Ngshily 阅读(1) 评论(0) 推荐(0) 编辑
摘要:抱佛脚... 首先想到查找第K大的异或值可以按为确定,方法类似平衡树查第K大 然后,就跑到前缀和上去死磕了... 然而明明一颗可持久化trie树就可以解决的... 然后n*p*32^2过了以后表示老夫怎么这么慢阿,,,于是发现别人是n*p*32的,每次记下来就好,不用再跑一遍的... 1 #incl 阅读全文
posted @ 2016-05-29 10:16 Ngshily 阅读(279) 评论(0) 推荐(0) 编辑
摘要:扔一个有m个面的骰子,每个面有一个数字,这些数字互不相同,求连续扔到n个数相同的期望步数或连续扔到n个数不同的期望步数 相同的: E[i]表示已经有i连续个相同,到达目标的期望步数 E[i]=E[i+1]/m+(1-1/m)E[1].................... 1 E[i+1]=E[i+ 阅读全文
posted @ 2016-05-26 21:17 Ngshily 阅读(309) 评论(0) 推荐(0) 编辑
摘要:被wsh大爷拉入坑,然而我会说他现在在睡觉? 题意:求一个循环同构的字符串的按字典序排序后末尾的字符的序列 飒飒飒 我们把这个字符串粘(nian)两遍,然后飒飒飒就好啦 可以这么轻易是因为对于一个倍长后的字符串,如果我们不能仅按前n位就将这个字符串排序, 当且仅当这个字符串的某些后缀的完全相同,然而 阅读全文
posted @ 2016-05-25 17:52 Ngshily 阅读(316) 评论(1) 推荐(0) 编辑
摘要:模拟,dp[i][j]表示第i局j获胜的概率 轻易~ 1 #include<cstdio> 2 using namespace std; 3 #define maxn 1000 4 double dp[10][maxn],p[maxn][maxn]; 5 int n; 6 void getdp(in 阅读全文
posted @ 2016-05-25 15:42 Ngshily 阅读(228) 评论(0) 推荐(0) 编辑
摘要:膜kuangbin大爷 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define eps 1e-10// 4 #define maxn 10005 5 int cnt,v[maxn<<1],Next[maxn<<1],first[maxn] 阅读全文
posted @ 2016-05-25 13:05 Ngshily 阅读(147) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2016-05-24 16:37 Ngshily 阅读(4) 评论(0) 推荐(0) 编辑
摘要:A题题意:给出一个等差数列的首项和公差,求x是否是该数列中的项 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int a,b,c; 5 scanf("%d%d%d",&a,&b,&c); 6 if(c>0&&b-a> 阅读全文
posted @ 2016-05-23 17:47 Ngshily 阅读(210) 评论(0) 推荐(1) 编辑
摘要:一堆人排队,初始队列为1,2...n,男主在第m个 有四个操作 1.保持原序列不变 2.队首到队尾,其余依此前移 3.队首狗带 4.整个队伍炸了 概率分别为p1,p2,p3,p4求爆炸时男主在队伍前K位的概率的期望 dp[i][j]表示当前队伍有i人,男主排在j的答案的期望 dp[i][1]=dp[ 阅读全文
posted @ 2016-05-23 15:29 Ngshily 阅读(204) 评论(0) 推荐(0) 编辑
摘要:有三个分别有K1,K2,K3个面的骰子,每个面上的值为[1,Ki] 设所投出的序列为{k1,k2,k3} 当投出{a,b,c}时得分清零,否则得分增加k1+k2+k3 求使得得分大于等于n的期望步数 设dp[i]表示当前得分为i,达成目标所需的期望步数 dp[i]=dp[i+k]*p[k]+dp[0 阅读全文
posted @ 2016-05-23 12:44 Ngshily 阅读(197) 评论(0) 推荐(0) 编辑
摘要:一个程序有无限个bugs,一天可以找到1个,这些bugs有两个不同关键字A,B,分别按这两个关键字被分成了n种和m种,求集齐所有类(召唤神龙)的期望天数 设dp[i][j]表示已经收集了i种A和j种B的期望天数 dp[i][j]=i/n*j/s*dp[i][j]+p p=(n-i)/n*j/s*dp 阅读全文
posted @ 2016-05-23 12:40 Ngshily 阅读(195) 评论(0) 推荐(0) 编辑
摘要:一条线段,起点为1,上面有一些点不能走,每次可以以p的概率向右走1步,或以(1-p)的概率向右走2步 求能安全走过整条线段的概率 首先,若1不能走则狗带,若有2个连续的点不能走则狗带 对于所有点都能走的情况,dp[i]表示走到i的概率,dp[i]=dp[i-1]*p+dp[i-1]*(p-2) 可构 阅读全文
posted @ 2016-05-23 12:26 Ngshily 阅读(182) 评论(0) 推荐(0) 编辑
摘要:题目:给出一个长度为n的数轴和一个初始方向,一个人一次可以走[1,m]步,走到头就会自动反弹回来,求给定起点X到Y的期望步数 E[x]表示x点到终点的期望,则E[x]=sigma(E[x+i]+i),E[Y]=0 因为还有方向问题,所以我们把n个点拆成2*n-2个,原数轴01234变成0123432 阅读全文
posted @ 2016-05-23 12:17 Ngshily 阅读(229) 评论(0) 推荐(0) 编辑
摘要:设dp[i]表示掷了i次的期望得分dp[1]=sigma(A[i])/N,dp[i]=dp[i-1]*M/N 可以看出dp数组构成了一个等比数列 ans=sigma(dp[i])=dp[1]*(1-(M/N)^n)/(1-M/N) 当n趋近+oo时(M/N)^n趋近于0,则ans=dp[1]/(1- 阅读全文
posted @ 2016-05-22 09:59 Ngshily 阅读(222) 评论(0) 推荐(0) 编辑
摘要:求所有满足要求的数的平方和 不只是统计个数,而是与每个数得具体取值有关 维护三个值 dp[dep][sum][num].num表示长度为dep的前面的数模7的余数为sum,前面几位数字之和模7为num的满足要求的数的个数 dp[dep][sum][num].sum表示长度为dep的前面的数模7的余数 阅读全文
posted @ 2016-05-19 13:40 Ngshily 阅读(450) 评论(0) 推荐(0) 编辑
摘要:dp[dep][rest]表示长度为dep的F(x)<=rest的数的个数 1 #include<bits/stdc++.h> 2 using namespace std; 3 int dig[15],dp[15][5000]; 4 int dfs(int dep,int rest,int flag 阅读全文
posted @ 2016-05-19 13:32 Ngshily 阅读(154) 评论(0) 推荐(0) 编辑
摘要:人生不止眼前的狗血,还有远方的狗带 A题B题一如既往的丝帛题 A题题意:询问按照12345678910111213...的顺序排列下去第n(n<=10^3)个数是多少 题解:打表,输出 1 #include<bits/stdc++.h> 2 using namespace std; 3 int di 阅读全文
posted @ 2016-05-13 22:16 Ngshily 阅读(206) 评论(0) 推荐(0) 编辑
摘要:dp[dep][ex][sta]表示长度为dep的,前面出现过的数的集合为ex,不满足要求的数字的集合为sta的满足要求的数的个数 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ll dp[20] 阅读全文
posted @ 2016-05-12 14:50 Ngshily 阅读(181) 评论(0) 推荐(0) 编辑
摘要:对于4139,支点为3,(4-2)*4+(3-2)*1+(2-2)*3+(1-2)*9=0 dp[dep][sum][zzz]表示长度为dep,之前的权值为sum,支点为zzz的平衡数的个数 枚举支点求值 注意0的情况 1 #include<bits/stdc++.h> 2 using namesp 阅读全文
posted @ 2016-05-12 14:19 Ngshily 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题目要求统计小于等于n的既含有子串13,又是13的倍数的数的个数 ans=n-小于等于n的不含子串13或不是13倍数的数的个数 dp[dep][one][thirteen][yu]表示长度为dep,上一个数是否为1,之前的数是否包含13,之前的数模13的余数为yu的数的个数 之前状态没考率全面,狗带 阅读全文
posted @ 2016-05-12 10:56 Ngshily 阅读(111) 评论(0) 推荐(0) 编辑
摘要:dp[dep][four]表示长度为dep的上一个是否为4的不含子串49的数的个数 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ll dp[20][2]; 5 int dig[20]; 6 ll 阅读全文
posted @ 2016-05-11 19:45 Ngshily 阅读(125) 评论(0) 推荐(0) 编辑
摘要:dp[dep][six]表示长度为dep的,上一位是否为6的不含62,不含4的数的个数 1 #include<bits/stdc++.h> 2 using namespace std; 3 int dp[10][2],dig[10]; 4 int dfs(int dep,int six,int fl 阅读全文
posted @ 2016-05-11 19:13 Ngshily 阅读(125) 评论(0) 推荐(0) 编辑
摘要:先考虑LIS的nlogn解法 我们用dp[len]记录LIS长度为len时的最后一个数的大小,然后不断更新这些值,让每一个值都尽可能小 比如我现在的LIS是1 2 4 6,这时候下一个数是3,那么我们就要更新成1 2 3 6,让前面的数尽可能的小,这样就能让后面的数有更多的机会被加入 因为数字只有1 阅读全文
posted @ 2016-05-11 18:41 Ngshily 阅读(203) 评论(0) 推荐(0) 编辑
摘要:若一个数n能被它的所有非零数位整除,则n能被它们的最小公倍数x整除 而由1到9中的数组成的最小公倍数最大为2520,且是离散的,实际上只有48个 为了判断这个数能否被它的所有数位整除,我们还需要这个数的值,显然要记录值是不可能的,其实我们只需记录它对2520的模即可 设dp[pos][lcm][mo 阅读全文
posted @ 2016-05-11 15:15 Ngshily 阅读(199) 评论(0) 推荐(0) 编辑