
2016寒假集训
只玩三国的程序猿
23333333333
展开
-
Codeforces 13C
题意:意思就是给你一个序列,每次可以让其中一个元素加1或者减1,问你最少需要多少步,使得这个序列变成非递减序列。有一个猜想,就是把其中的数字变成这个序列中原有的数字是最少的,具体为什么,我也不清楚。考虑DP,dp[i][j]表示把前i个数变成非降序列,并且第i个数变成原序列中从小到大第j个数所用的最少步数。所以dp[i][j]=min(abs(a[i]-b[j]),dp[i][j-1]).具原创 2016-01-20 21:25:18 · 1198 阅读 · 0 评论 -
Codeforces 148E Porcelain (dp)
题意:给定n个序列,每次可以从序列的一个序列的某一段拿一个物品,问最后拿到物品的价值总和最大是多少。略机智的dp,需要预处理出每一个序列拿i个物品能拿到的最大值,然后就变成了一个类似多重背包的东西。我一开始以为是区间DP,发现状态太多不好搞。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli.原创 2016-01-31 23:59:23 · 425 阅读 · 0 评论 -
Codeforces 70C Lucky Tickets(数学+机智)
题意:给你一个maxx和maxy,让你选择一个上限x和y是的对于每一个a<=x,在b<=y的范围下,满足a*b==rev(a)*rev(b)>=w的个数总和最大,并且x*y最小(具体的看题目意思吧)。这个题首先要知道一个性质,那就是x越大,符合条件的越多,y也是一样的,也就是这个是递增的。首先,我们把等式改变一下,变成a/rev(a)==rev(b)/b,那么就可以单独的考虑一个数了。之后原创 2016-02-01 22:41:40 · 823 阅读 · 0 评论 -
Codeforces 24A
有向环的遍历//// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #include<bits/stdc++.h>#include <iostream>#include <cstring>#include <cstdio>#include <cstd原创 2016-02-01 22:51:09 · 362 阅读 · 0 评论 -
Codeforces 222D Olympiad(贪心)
题意:给你两组分数,让你在每一组中选择一个相加,在分数总和大于等于x的情况下,选手的最好最坏名次。这个真是xjb贪心,完全不知道为什么回过。我是这么搞得:最好的名次是第一毋庸置疑。然后,两组分数进行排序,一个升序,一个降序。之后进行匹配,尽量将第一组最小的和第二组最大的结合来算第一次最坏名次,这是一个答案。然后将两组分数翻转,再次进行一次同样的匹配,两次答案比较即可。我也不知道为啥这样原创 2016-02-01 23:09:09 · 648 阅读 · 0 评论 -
UVa 11402 - Ahoy, Pirates!(线段树)
题意:给你一个01串,分别是两种操作:1、将区间内的0变1,1变02、将区间内全变成1或03、询问区间内1的个数典型的线段树的题目,但是。。。。因为翻转和覆盖操作两种操作在01夹杂的区间内会互相影响,所以一直wa。。同学用splay直接裸过了- -,难道splay有什么奇巧淫技?线段是的解决方案是这样的。对于翻转操作,如果所操作的区间是一个杂色区间,那么我们就把这个操作继续向下,知道原创 2016-02-01 23:16:26 · 486 阅读 · 0 评论 -
HDU 4429 Split the Rectangle(暴力)
题意:给你一个矩形,然后里面会根据规则画一些线段把这个矩形进行分割。但是某些线条之间会有依赖关系。然后给你两个点,为你至少删除多少条线段们能够使这两个点在一个矩形内。我们知道两个点是可以确定一个矩形的,那么只需要把和这个矩形相交的线段都删除就好了,再删除这条线段是,还要删除依赖这条线段的所有线段。所以一开始就对有依赖关系的线段用边连起来,然后删除时dfs就好了。代码://// Cre原创 2016-02-01 23:31:00 · 515 阅读 · 0 评论 -
SGU 531 Bonnie and Clyde(二分)
题意很见到就不说,只要预处理一下就行,不知道为什么有的用线段树写wa的那么惨。。。。。。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #include<bits/stdc++.h>#include <iostream>#include <原创 2016-02-01 23:34:46 · 812 阅读 · 0 评论 -
SGU 532 Building Foundation(组合计数)
题意:给你一些线段,问你能够组成多少个矩形。一开始想到四方的枚举,果断T,然后被提醒发现只需要先枚举两条竖线,然后在寻找所有与这两个竖线相交的横线,ans+=n*(n-1)/2。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #includ原创 2016-02-01 23:38:48 · 433 阅读 · 0 评论 -
SGU 536 Berland Chess(状压+BFS)
题意:给你一个期盼,你可以移动白皇来吃掉其他的黑棋,每种黑棋有攻击范围,白皇不能走进去,问最少需要几步全部吃完。很恶心的一个搜索,因为黑棋弧不动的,所有我们可以预处理处所有与的被吃掉某些棋之后棋盘的情况。这个预处理实在太恶心了,处理完之后,就是单纯的搜索了。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_原创 2016-02-01 23:43:10 · 548 阅读 · 0 评论 -
UVa 11323 Satisfying Constraints
我就判了一下是否每一个都有整数解就完了,居然过了。。。。。//// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #include<bits/stdc++.h>#include <iostream>#include <cstring>#include原创 2016-02-01 23:47:40 · 399 阅读 · 0 评论 -
Codeforces 202B Brand New Easy Problem(模拟)
题意:让你在m个序列中看是否存在给定序列的一个排列,并且计算逆序对数最大值。在找的时候我已开始想通过状压来枚举所有的排列,但是发现效率太慢了,于是听了队友的建议,对于给定序列的每一个排列,对所有的搜索串中进行搜索,这样就快多了。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All righ原创 2016-01-31 23:54:06 · 441 阅读 · 0 评论 -
Codeforces 264B Good Sequences (dp)
题意:在给定序列中找一个最长的序列,使得相邻的数相互不互质。这个DP非常的机智,也是看了大牛的解法才知道。dp[i]表示以有i这个因数的数结尾的序列的长度。这个状态有点绕,但是仔细想想还是很有道理的,因为相邻两个数的关系是通过因数来限制的。具体再看代码说吧。看不懂多想想。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015原创 2016-01-31 23:48:24 · 409 阅读 · 1 评论 -
Codeforces 18D Seller Bob
题意:题目告诉你你能够按顺序获得一些价值为2^x的硬盘,你可以保留一个并且在之后的几天卖掉,但是你在卖掉当前这个之前是不能保留其他的硬盘的,在已经知道什么时候会有人买什么类型的硬盘的前提下,问你能获得的最大收益是多少。那么对于这个题,一开始以为是dp,后来发现不用,贪心即可,因为2^n大于sigma2^i (i<n) 这个2次幂的性质,所以我们只需要先卖掉能过获得的最高次幂肯定能获得最大原创 2016-01-31 16:09:02 · 725 阅读 · 0 评论 -
Codeforces 69D Dot (博弈)
题意:题意就是给你一些向量,再给你一个起点,两个人轮流选择一个向量,用来改变当前点到起点的距离,两个人各有一次机会将当前位置通过y=x这条线对称过去。谁在距离起点超过k的地方移动了点,那么就算输。问你最后谁赢。这是比较典型的博弈,只要有人先到超过k的地方,肯定是赢的,因为对称这个操作双方都有,会抵消,没有影响。所以我们只需要根据先手必胜和必败的条件搜索即可。具体看代码;=。代码:////原创 2016-01-31 16:20:24 · 1117 阅读 · 0 评论 -
HDU 4560 我是歌手(最大流)
题意:有n个歌手和m个流派,问你能够符合要求的最大匹配数是多少。类似于二分图匹配,所以用最大流可以做。既然是最大流,那么拆点是肯定的。我们把流派拆成两个点,两个点之间流量为k,前面的是不擅长的点,后面是擅长的点。如果歌手擅长某个流派,就连擅长的点,流量为1,否则连不擅长的点,流量为1。然后源点向每个歌手连边,擅长的点向汇点连边。这两组边上的流量是待定的,这关系到如何求最大匹配数。我们可原创 2016-01-31 16:29:19 · 502 阅读 · 0 评论 -
Codeforces 166E Tetrahedron(dp)
题意:给你一个正四面体,问你从定点出发走k步后回到定点有几种走法。我反正是不会做,看了CF的题解才明白具体怎么写。我们只需要两个变量,记录当前步数下,走到定点和到其他三个点的种数就好。具体看代码理解。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved./原创 2016-01-31 20:42:51 · 561 阅读 · 0 评论 -
Codeforces 118D Caesar's Legions (dp)
题意:有n1个步兵和n2个骑兵,问你有多少种排列满足排列中没有超过k1个连续步兵和k2个连续骑兵。dp[i][j][k]表示有i个步兵和j个骑兵最后面的是步兵还是骑兵的种数。转移时,就可以考虑最后面放连续的步兵或骑兵的个数,即k=1 to k1 dp[i][j][0]+=dp[i-k][j][1];k=1 to k2 dp[i][j][1]+=dp[i][j-k][0];为何这样转移原创 2016-01-31 20:50:42 · 501 阅读 · 0 评论 -
Codeforces 204A Little Elephant and Interval(数位统计)
题意:这题其实是一个弱化的数位DP,为你在一个区间内首位数字和末尾数字相同的数有多少个。我是这么做的,首先先打表,发现没一个长度的符合条件的数是有规律的。1位数有9个:1 2 3 4 5 6 7 8 92位数有9个:11 22 33 44 55 66 77 88 99大于等于三位数: 9*10^(len-2)比如axxxxb,这个数中间的四位可以有10^4种,所以只要首尾两位相同有九种原创 2016-01-31 21:14:44 · 551 阅读 · 0 评论 -
HDU 4475 Downward paths (找规律)
题意就不解释了,很简单,只要把规律找到就行。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #include<bits/stdc++.h>#include <iostream>#include <cstring>#include <cst原创 2016-01-31 21:17:01 · 412 阅读 · 0 评论 -
HDU 4479 Shortest path(最短路)
题意:这是一道图论好题,从某种意义上来说摆脱了固有算法模板。题目就是让你选择一条最短路,并且保证这条最短路上的边的权值是递增的。具体的做法是这样的:首先,我们先把边按权值升序排序。从小到大开始考虑,这样开始来增长我们的最短路,如果某一条边的某个端点在之前的最短路中,那么肯定是符合要求的。因为权值是从小到大,之前添加进最短路集合中的肯定比这条边小。所以这样的话就可以符合题目的要求。这样又有原创 2016-01-31 22:19:45 · 761 阅读 · 0 评论 -
Codeforces 234F (dp)
题意:题意就是给你一些栅栏,每一个栅栏有一个高度h[i],你有n单位的红和绿颜料,每隔一高度为h[i]的栅栏需要h[i]的燃料。但是有一个限制,红颜料不能超过a,绿颜料不能超过b,问你最少需要多少颜料能够涂满所有的栅栏。很明显是一个线性的dp,但是状态有点难想。dp[i][j][2]表示前i个栅栏,用了j个红色颜料,最后一个是红色或者绿色(0,1)。转移的话类似于多重背包。for (原创 2016-01-31 23:27:49 · 425 阅读 · 0 评论 -
Codeforces 197C (脑洞)
题意:题意就是让你找一个字符串中字典序最大的符合条件的子串,这个子串要求前面的字母大于等于后面的字母。其实注意观察会发现,如果当前位置的字母是之后位置中最大的字母,那么这个字母就在这个子序列中。代码://// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.///原创 2016-01-31 23:37:25 · 403 阅读 · 0 评论 -
UVa 11379 Chichi's Home Work
我就是来贴个题解,我没看懂,如果有人看懂了,求指教//// Created by CQU_CST_WuErli// Copyright (c) 2015 CQU_CST_WuErli. All rights reserved.//// #include<bits/stdc++.h>#include <iostream>#include <cstring>#include <cst原创 2016-02-01 23:49:52 · 648 阅读 · 0 评论