自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 收藏
  • 关注

原创 文章标题

A题题意中文题,就不解释了思路回溯法直接搜就行了,当前行可以不放所以要加一句dfs(cur-1,num)代码#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int maxn = 20;char maze[maxn][maxn];bool vis[maxn];int ans =

2016-12-29 21:03:21 330

原创 2016中国大学生程序设计竞赛 - 网络选拔赛 1004 Danganronpa

题意n种礼物,每种有a[i]个,所有的礼物可以作为普通礼物,也可以作为神秘礼物放在桌子上,相邻的桌子上不能放同样的普通礼物,问最多能拜几张桌子。思路这题当时的做法有问题,正解是用优先队列来存礼物数,取出最大的两个a,b(a>b),然后放2b个,剩下a-b个放回队列中,求出来一个sum1;把所有的数量累加起来得到sum2,ans = min(sum1,sum2/2);代码#include <bits/

2016-09-09 13:22:41 462

原创 2016中国大学生程序设计竞赛 - 网络选拔赛 1011 Lweb and String

题意给出一串字符,字符可以任意映射到一个数字,问能构成的最长上升子序列个数是。思路因为是任意映射,所以最长上升子序列的长度就是字符的种类数。统计一下就好了。代码#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;const int mod = 1e9+7;typedef long long ll;char

2016-09-09 13:10:14 267

原创 2016中国大学生程序设计竞赛 - 网络选拔赛 1001 A water problem

题意问一个数是否能同时被73和137除尽,输入很大思路大数取余就行了,很简单的做法;代码#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N=1e7+10;char s[N];int main(){ int cnt=0; int d,r1,r2;

2016-09-09 13:04:37 309

原创 2016 Multi-University Training Contest 8 1011 Rikka with Parenthesis II(模拟)

题意给出一堆括号,要求必须交换其中的两个,问交换后是否合法。思路很显然,当恰好有一对错位时,交换合法,当原来本身合法 且数量大于4时。可以合法交换,如()是不合法的。扫描的同时记录待匹配的(的个数为cnt,遇到)则减1,若min(cnt) <= -2 则无解。输入为奇数也无解,最后()的数量不匹配也无解。细心模拟就好了代码#include <bits/stdc++.h>using namespac

2016-09-09 12:56:09 239

原创 2016 Multi-University Training Contest 8 1006 physics (物理+数学)

题意有一堆球,他们在一条线上运动,有各自的初速度,加速度和速度的变化满足Ai⋅Vi=CA_i\cdot V_i = C,如果碰撞,是完全弹性碰撞,然后给出一些询问(t,k),问t时刻时,速度第k小的球的速度。思路因为是完全弹性碰撞,最后的询问又和具体的小球没有关系,所以直接当成无碰撞来处理就好了,对初始速度排序,然后只要知道第k小的球在t时刻的速度就行了,这就是高数的活了,过程如下 v⋅a=cv⋅

2016-09-09 12:47:55 234

原创 2016 Multi-University Training Contest 8 1001 Ball

题意给出两个序列,和一堆区间,每次能把A序列区间中的值任意交换,问全部操作完成后,是否能变成B序列。思路在A序列中标记每个数再B序列中的位置,每次操作都是要让数,靠近他的最终位置,所以只要对区间中的数按照他在B序列中的位置排序就行了。代码#include <bits/stdc++.h>using namespace std;const int maxn = 1e3+10;int A[maxn]

2016-09-09 09:18:19 220

原创 2016 Multi-University Training Contest 7 1010 Joint Stacks (模拟)

题意有两个栈,可以进行一种合并操作,合并后,栈内的顺序是按入栈时间排的。思路用一个新栈C,当AB合并时,压入C中,并清空AB,因为题目保证不会对空栈弹出操作,所以当对空的AB弹出时直接操作C就行了。代码//HDU爆炸中。。。。

2016-09-08 22:01:25 180

原创 2016 Multi-University Training Contest 7 1002 Balls and Boxes (数学)

题意一堆球,放到一堆盒子中,每个球到每个盒子的概率是一致的,求每个盒子中球数量的方差。思路二项分布求方差,直接上公式就好了。 D(x)=n∗p∗(1−p)D(x)=n*p*(1-p)代码#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll n,m; while(~scan

2016-09-08 21:52:42 260

原创 2016 Multi-University Training Contest 6 1003 A Simple Nim (博弈sg函数)

题意有几堆糖果,两个人轮流取,可在某一堆中取任意个,或者选择一堆分成三堆,取走最后一个糖果的人输了。思路对于某一堆来说所有状况的后继的糖果数量都小于当前的糖果数量(如果分堆则是三个小的SG的异或值),所以可以地推打一个小范围的SG表,发现当i%8 == 7 时sg[i] = i+1,同时,sg[i+1] = i; 直接根据这个结论就可以算出所有糖果数量的SG值,直接异或即可。代码#include

2016-09-08 21:39:22 223

原创 2016 Multi-University Training Contest 6 1001 Boring Question (快速幂)

题意按题目给的要求算出所有的结果之和。思路打表发现是等比数列。。。 ans=mn+1−1m−1ans = \frac{m^{n+1} - 1}{m - 1} \\代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod = 1e9 + 7;ll t, n, m, ans;ll modMul(

2016-09-08 21:26:46 290

原创 2016 Multi-University Training Contest 5 1012 World is Exploding (数学+离散化)

题意给出一个序列A,问能找出多少个四元组(a,b,c,d)(a,b,c,d),满足a≠b≠c≠d,1≤a<b≤n,1≤c<d≤n,Aa<Ab,Ac>Ada \neq b \neq c \neq d, 1 \leq a < b \leq n, 1 \leq c < d \leq n, A_{a} < A_{b}, A_{c} > A_{d}。思路先把输入离散化一下,然后,对于每个数,我们统计他前面比他

2016-09-08 21:16:33 173

原创 2016 Multi-University Training Contest 5 1011 Two(DP)

题意给出两个序列,计算两个序列的子序列相同的组合有多少种。思路明显是动规做, dp[i][k]表示分别以i结尾和以k结尾的序列相同的子序列的组合 如果i和k不相等 dp[i][k] = dp[i-1][k]+dp[i][k-1]-dp[i-1][k-1], 如果i和k相等,则 dp[i][k] = dp[i-1][k]+dp[i][k-1] + 1,代码#include<bits/stdc

2016-09-08 20:58:19 179

原创 2016 Multi-University Training Contest 5 1003 Divide the Sequence (贪心)

题意给出一个序列,要求把他分成多段,要求每一段的所有前缀和都不小于0,求最多分成几段。思路肯定不能以负数开头,而包含负数的前缀和必须为零,所以只要从后往前找,当找到负数时,往前一直找到使某一小段的和不为零,则这一小段是不可再细分的,找出所有的不可细分的小段个数就是答案。当时的代码里是求出所有被合并成一块的数的个数,然后再用总数去减,稍微麻烦点(当时肯定是脑抽了才这么搞。。。)代码#include<b

2016-09-08 16:24:51 227

原创 2016 Multi-University Training Contest 4 1012 Bubble Sort (线段树)

题意给出一个序列,问在冒泡排序的过程中,每个数到达的最左和最优位置之差是多少。思路观察发现,根据题目给的算法,每个数的最左位置就是他的最终位置,最右位置是他的初始位置加上他右边所有比他小的数的个数,因为这些数会先被换到他的左侧。所以只用统计每个数右边比他小的数的个数就行了,这里我用的是线段树的办法。代码#include <bits/stdc++.h>using namespace std;con

2016-09-08 16:10:21 210

原创 2016 Multi-University Training Contest 4 1011 Where Amazing Happens(模拟)

题意给出每一年nba夺冠队伍的名字,然后给出询问,回答该队得过几次冠军。思路简单模拟就好代码#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+10;map<string,int> M;string team[75] = {"Cleveland Cavaliers","Golden State Warriors

2016-09-08 16:03:18 294

原创 2016 Multi-University Training Contest 4 1010 The All-purpose Zero(变形LIS)

题意给一个序列,其中的0可以变为任意数,求这个序列能构成的最长上升子序列长度思路我当时想法有点怪,把他全部转化成了负数再到过来求,原理上并没有什么差别使用最长上升子序列的nlog(n)的算法,当下一个数为0时,直接将记录所有长度结尾数字的数组全部右移并把数字加一,再把1置为无穷小,继续即可,注意要处理一开始就都是0,和全为0的情况。代码#include <cstdio>#include <cstr

2016-09-08 15:59:51 212

原创 2016 Multi-University Training Contest 4 1006 Substring(后缀数组)

题意给出一个字符X和一个字符串,求字符串的字串中,包含字符的不同字串有多少个。思路很明显的后缀数组,但是要做一些变化,因为必须至少包含一个字符X,所以我们就记录一下对于每个sa[i],离他最近的X的位置为Loc[sa[i]],这个位置到sa[i]的距离和height[i]的最大值就是不可取的数量,然后用n减去sa[i]和上面那个值就是这个sa的可选数量,累加就是答案。代码#include<cstdi

2016-09-08 15:47:42 186

原创 2016 Multi-University Training Contest 4 1001 Another Meaning (DP)

题意给出两个字符串,第二个字符串整体可以有两种意思,问第一个字符串能够构成多少种不同的意思?思路很快就想到了动态规划,肯定是信用KMP找出所有的匹配的位置,但是之后具体的转移我们想了很久,最后推出的转移方程是,用f[i]表示以第i个字符为结尾的字符串的意义数,则 f[i]+=f[i−1],第i个字符不是某个匹配的结尾f[i]+=f[i−len(str)],第i个字符是某个匹配str的结尾f[i]

2016-09-08 15:38:26 186

原创 7_22_T题 Constructing Roads(最小生成树)

7_22_T题 Constructing Roads题意现在有一些顶点,顶点之间连线的花费给出,有些顶点之间已经连了线,求把所有点连通的最小花费。思路最小生成树,先把已经连通的点连起来,再跑最小生成树就行了。代码#include <cstdio>#include <algorithm>using namespace std;const int maxm = 1e6 + 10;const in

2016-09-05 10:02:01 239

原创 7_22_S题 Borg Maze(最小生成树)

7_22_S题 Borg Maze题意给出一个矩阵,求将其中的A和S全部连通的最小距离。思路最小生成树,先BFS处理出所有字母两两之间的最短距离。然后跑一遍最小生成树即可,这题输入数据神坑。。。代码#include <cmath>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>using name

2016-09-05 10:01:33 297

原创 7_22_R题 Building a Space Station(最小生成树)

7_22_R题 Building a Space Station题意给出一些空间站的坐标和半径,求把所有空间站链接起来的最小距离思路最小生成树,计算出空间站两两之间的距离,如果距离小于两半径之和,则标记为已连接,生成图之后在跑一次最小生成树即可。代码#include <cmath>#include <cstdio>#include <algorithm>using namespace std;

2016-09-05 10:01:09 243

原创 7_22_Q题 Jungle Roads(最小生成树)

7_22_Q题 Jungle Roads题意给出一张图,要求能把所有顶点链接起来的最短路径思路裸的最小生成树,就是输入比较怪代码#include <cstdio>#include <algorithm>using namespace std;const int maxm = 1e6 + 10;const int maxn = 1e5 + 10;typedef long long ll;s

2016-09-05 10:00:50 269

原创 7_22_O题 敌兵布阵(线段树)

7_22_O题 敌兵布阵题意Lily 特别喜欢养花,但是由于她的花特别多,所以照料这些花就变得不太容易。她把她的花依次排成一行,每盆花都有一个美观值。如果Lily把某盆花照料的好的话,这盆花的美观值就会上升,如果照料的不好的话,这盆花的美观值就会下降。有时,Lily想知道某段连续的花的美观值之和是多少,但是,Lily的算术不是很好,你能快速地告诉她结果吗?思路区间求和以及区间更新,线段树代码#inc

2016-09-05 10:00:26 202

原创 7_22_N题 I Hate It(线段树)

7_22_N题 I Hate It题意给出一些学生的成绩,老师会询问,某一段学生中最高的成绩,或修改某同学的成绩。思路求区间最大值和单点更新,线段树##include <bits/stdc++.h>#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1const int maxn = 2e5+10;using namespace std;ch

2016-09-05 10:00:03 295

原创 7_22_G Yet another Number Sequence(矩阵快速幂)

7_22_G Yet another Number Sequence题意给出数列前两项,按斐波那契数列的方式计算,求第n个数的后几位。思路裸的矩阵快速幂取模代码#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 4;const int mod[5] = {0, 1

2016-09-05 09:59:36 681

原创 7_22_F题 Recurrences(矩阵快速幂)

7_22_F题 Recurrences(矩阵快速幂)题意当n > d 时有 f(n)=∑ni=1ai⋅f(n−i)f(n) = \sum_{i = 1 }^ n a_i \cdot f(n - i) 给出n,a1~ad,f[1]~f[n]n,a_1\text{~}a_d,f[1]\text{~}f[n],求 f[n]%modf[n]\%mod思路很明显的矩阵快速幂,转移矩阵如下 ⎡⎣⎢⎢⎢⎢⎢⎢

2016-09-05 09:59:08 334

原创 7_22_E题 Power of Matrix(矩阵快速幂+倍增)

7_22_E题 Power of Matrix题意给出一个矩阵,求他的前k次幂之和。思路倍增法 ∑i=1nAi=(E+An2)⋅∑i=1n2Ai\sum_{i=1}^n A^i = (E + A^{\frac{n}{2}})\cdot \sum_{i=1}^\frac{n}{2} A^i 持续分治下去即可代码mobu#include <cstdio>#include <cstring>usin

2016-09-04 15:42:18 238

原创 7_22_D题 Race to 1 Again(求期望)

7_22_D题 Race to 1 Again题意一个数用他自己的因数(包括它本身)去除他自己,求除到一的期望次数。思路很明显一个数被除到一的期望次数,就是他所有因数除到一期望次数的和除以因数的数量再加一,化简得到递推式,预处理出来就可以了。代码#include <iostream>#include <cstdio>#include <cstring>using namespace std;c

2016-09-04 15:41:59 162

原创 7_22_C题 Batting Practice(求期望)

7_22_C题 Batting Practice题意连续投进若干球或连续不投进若干球则游戏结束,问游戏结束时的投球数的期望。思路设投进n球,投丢m球游戏结束,投不进的概率为p,进概率为q = 1-p,已连续投进x个球时剩余投球数的期望为in[x],已连续不进x个时剩余投球数期望为out[x],则有 in[x]=q∗(in[x+1]+1)+p∗(out[1]+1)in[x] = q * (in[x+

2016-09-04 15:41:44 209

原创 7_22_A题 Island of Survival(概率DP)

7_22_A题 Island of Survival(概率DP)题意一个岛上有老虎,鹿和人,给出老虎和鹿的数量,三种生物的碰面是随机的,两个老虎碰面都会死,老虎和其他生物碰面,其他生物被吃掉,问人活下来的概率。思路很显然,鹿在人和虎的生存中完全没有影响,可以直接不考虑,问题就变成了,一个人和一堆虎,一直是虎两两碰面的概率,当虎数为奇数时,概率为零。 当虎数为偶数时,设当前有n只虎,则当前两虎碰面

2016-09-04 15:41:16 209

原创 7_13_J题 Perfect Permutation(构造)

7_13_J题 Perfect Permutation题意要求构造一个由1~n组成的数列,,使每个位置上的数减去他所在位置的编号,可以构成一个0~n-1的集合。思路好难啊,暴搜也不好找规律,看了解法之后才会做,知道结论以后反向验证很好证,但是正向好难想。。。 结论: 当n=4k+2或4k+3时无解 当n=4k时,构造数列:2k+1, [4k ~ 3k+2], [3k ~ 2k+2],

2016-09-04 15:41:00 237

原创 7_13_R题 yy math problem(数学、模拟)

7_13_R题 yy math problem简单题意分子恒为一,给出分母,要求给出小数部分的循环节长度和非循环部分长度思路模拟除法,每次记录余数出现的位置,如果余数出现过,则第一次出现余数的位置到当前位置的差就是循环节长度,余数第一次出现的位置就是非循环节长度。代码#include <cstdio>#include <cstring>#include <algorithm>using nam

2016-09-04 15:40:41 291

原创 7_13_P题 Hack it!(数学)

7_13_P题 Hack it!简单题意设f(x)f(x),是x每一位上的数之和,求一个区间l,r,使∑ri=lf(i) mod n=0\sum_{i=l}^r f(i)\ mod\ n=0, n为输入思路很显然f(1018+x)−f(x)=1f(10^{18} + x) - f(x) = 1 所以有∑1018+xi=xf(i)=∑1018i=1f(i)+∑xi=1f(1018+i)−f(i)\s

2016-09-04 15:40:24 217

原创 7_13_M题 Expedition(贪心、优先队列)

7_13_M题 Expedition简单题意一辆车开始有一些油量,往前走一单位消耗一单位油量,路上有些加油站,能获取一些油,油箱容量无限,问能否到达终点,如果能,最少加几次油。思路可以转化为先一口气把油跑完,把路过的加油站的油量记录下来,油用完以后再选取一个最多的油量,加一次油,循环直至终点,或耗尽所有油量,记录加油站的油量可以用优先队列来做。代码#include<cstdio>#include

2016-09-04 15:40:05 253

原创 7_13_K题 Palindromes(模拟)

7_13_K题 Palindromes题意根据题目给出的条件判断一个字符串是否为回文串,镜像串,回文镜像串等思路按题意模拟判断就好代码#include <cstdio>#include <vector>#include <cstring>#include <algorithm>#include <cctype>using namespace std;char chart[] = {'A'

2016-09-04 15:39:46 416

原创 7_13_G题 Median(二分)

7_13_G题 Median题意给出一堆数,要求出他们两两之间差值的中位数是多少思路二分中位数,然后去判定这个中位数,判定的方式是看能构成的比这个中位数大的的差值有多少,判定的方法是加上原数列中的数再在原数列中二分找他的位置,可以用STL的函数搞定,如果比他大的差值的数量大于(n*(n-1)/2)/2,则这个中位数小了,否则这个中位数大了,持续二出答案即可。代码#include <cstdio>#

2016-09-04 15:39:25 250

原创 7_13_F题 K Best(二分、最大化平均值)

7_13_F题 K Best题意有n个物品的重量和价值分别是w[i]和v[i],从中选出K个物品使得单位重量的价值最大思路二分目标平均值,然后用这个平均值去更新各个宝石的权值,再排序,取前k个判定这个目标是否合法即可,这是最大化平均值的标准做法代码#include <cstdio>#include <cstring>#include <vector>#include <algorithm>u

2016-09-04 15:39:04 301

原创 7_13_E题 Pie(二分)

7_13_E题 Pie题意给出一些大小不同蛋糕,要分给一些人,每个人的蛋糕不能来自不同蛋糕,每个人的蛋糕大小要是一样的,分给每个人的蛋糕大小最大为多少思路二分蛋糕大小,然后O(n)判定就行了下界为零上界为最大的蛋糕大小代码#include <cstdio>#include <vector>#include <cstring>#include <algorithm>#include <ccty

2016-09-04 15:38:33 293

原创 7_13_B题 Boonie and Clyde(tarjan求割点)

7_13_B题 Boonie and Clyde题意给出一张图,要求删去两个点,使图不连通,问有多少种删法。思路先tarjan求出所有割点,然后枚举要删去的第一个点,如果该点不是割点,则下一个点必须是割点,如果该点是割点,则要分类讨论,如果形成了三个或三个以上的连通块,则可任选下一点,如果形成了两个连通块,要分别考虑两边都只有一个点,有一边只有一个点的情况,再分别更新答案就行了代码#include

2016-09-04 15:38:13 277

空空如也

空空如也

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

TA关注的人

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