自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (1)
  • 收藏
  • 关注

原创 一道谷歌测试题 背包变体

有n个桶,每个桶里有a[i]个硬币,不能同时取相邻两个桶里的硬币,一个桶里的硬币要么取完,要么不取,背包容量为num,也就是最多取num个硬币。输出最多能取多少个硬币范围:1<=n<=10000, 1<=a[i]<=1000,0<=num<=1000bool dp[1005][2];dp[0][0]=true;for(int i=1;i&...

2019-11-08 21:05:44 210

原创 C++ STL常用操作

定时更新1.排序以后使用unique()函数:unique函数比较的时相邻的两个元素,重复的放到vector尾部sort(vector.begin(),vector.end());vector.erase(unique(vector.begin(),vector.end()), vector.end());2.对vector进行二分查找,返回下标vector<int&gt...

2019-09-28 23:48:05 246

原创 二进制枚举子集的方法

//枚举S的子集for (int x = S; x; x = (x-1)&S)

2019-09-27 18:34:57 611

原创 Codeforces 1208E Let Them Slide 单调栈

传送门思路:对于每一行的第i个数字,记录左边第一个大于它的数字下标j, 右边第一个大于等于它的数字下标k. 这个数字可以贡献的区间范围受到了j和k的限制. 例如,如果某一个区域j可以移动到这,i也可以移动到这,那么肯定优先选j. 所以相当于i可以影响的范围缩小.#include <algorithm>#include <iostream>#inclu...

2019-09-02 14:35:45 420

原创 微软面试题

给定一个字符串串A,A中只包含小写字母再给定一个串B,B中包含小写字母和' . '和' * ', 其中' . '可以替换为任意字符,' * '必定跟在一个' . '或者一个字母的后面,代表'.'或者字母可以重复0或多次。问B去匹配A,输出第一次匹配的开头下标。例如:A:aab B:ab 输出1A:cabc B:b.输出2A:aaab B:a*b输出0A:bbcd...

2019-08-28 15:40:18 400

原创 hdu6703 2019CCPC网络选拔赛 1002 array

我对主席树的理解再次升华了不难看出对于每次2操作,答案最大是n+1(因为每次更新是+10000000, 永远不会占用n+1,而且k是保证<=n的). 如果某个数字被进行过1操作, 那么就代表这个数字可以用于2类操作的查询,把这个数字加到set里.对于找2类询问的答案,第一种是从a[r+1,n]里找>=k的最小值(主席树实现),第二种是从这个set里找>=k的最小值(对set进...

2019-08-23 17:46:56 1285 6

原创 Codeforces 1203F2 Complete the Projects (hard version) 贪心

传送门思路:首先b>=0的项目不难处理,根据a值从小到大排序,能完成则r+=b[i]即可.关键是在于处理b<0的项目.对于b<0的项目采用贪心策略:先根据a值从大到小排序,每遍历到一个,就看它是否可以完成,如果可以,r+=b[i]并且标记i为完成状态. 如果不可以,看它是否可以替换之前已经完成的项目.假设j是某个之前已经完成的项目,i为当前不可完成项目,替换的条件...

2019-08-18 20:23:44 317

原创 Codeforces 1201D Treasure Hunting 动态规划

传送门思路: dp[i][0]代表由原点到达第i行最左边(y坐标最小)所需要的最小步数, dp[i][1]代表由远点到达第i行最右边(y坐标最大)所需要的最小步数. 第i行如何往第i+1行进行状态转移呢? 这里拿从第i行最左边出发为例.例如dp[i][0]所对应的位置的纵坐标为x,那么从i上到i+1只需要走最大的且<x的可以上升的列,或走最小的且>=x的可以上升的列,这里可以通过二...

2019-08-06 12:38:00 494

原创 Codeforces 1198D Rectangle Painting 1

传送门思路: 一个比较简单的记忆化搜索,f[x][y][xx][yy]记录涂白以(x,y)为左上角且以(xx,yy)为右下角的矩形的最小花费.#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio&g...

2019-08-04 13:25:04 350

原创 Codeforces 1198C Matching vs Independent Set

传送门思路: 找matching集合的方法就是贪心, 对于边(u,v),如果u和v都没被其他已在集合中的边覆盖,那么将边(u,v)加到集合中,最后判断集合中的个数是否大于等于n,若大于等于n直接输出其中n条边即可.若小于n则一定存在一个independent set. 除了matching集合中的边所覆盖的点,其他的点要么是一些孤立的点,要么是跟matching集合中边所覆盖的点相连的点,由于...

2019-08-04 13:20:11 269

原创 CF 1198B Welfare State 思维

传送门题意:给定n个数字,q次操作,操作分为两种(且称之为1类操作和2类操作),1 p x为把a[p]改为x, 2 x为把数组中所有小于x的数字全部改为x.思路:对于有1类操作1 p x更新的p,我们只关心它最后一次的1类更新以及它最后一次1类更新之后有无可以改变它的2类更新(例如最后一次对a[3]的操作为a[3]=10,那么我们可以看这次更新后面有无2 x 且x>10.). 于是...

2019-08-01 14:04:08 438

原创 CF 1198A MP3 离散化+前缀和

传送门思路:为了让改变的个数最小化,肯定是磁盘利用越多越好,于是每个数字可以用I*8/n位来表示,那么表示的种类数就是2^k种.若2^k大于等于总种类数,直接输出0即可.若小于,则利用前缀和(sum[i]代表1-i种数字总共有sum[i]个),计算最小值即可.#include <algorithm>#include <iostream>#include ...

2019-08-01 13:52:07 318

原创 Kick Start 2019 Round D Latest Guests 队列

ProblemThe city of Circleburg has a large circular street withNconsulates along it. The consulates are numbered 1, 2, ...,Nin clockwise order.TodayGguests, numbered 1, 2, ...,Gwill drive a...

2019-07-30 17:19:37 567

原创 Codeforces 1195E OpenStreetMap 单调栈

思路:对于某一行来说,我们只需要维护[1,b],[2,b+1],[3,b+2]...[m-b+1,m]的最小值,然后再对列进行维护即可,最后的矩阵的和就是答案。如何维护[1,b],[2,b+1],[3,b+2]...[m-b+1,m]的最小值呢?我一开始的思路是把区间的数字放到multiset中,然后set.begin()存的就是最小值,每次区间向右移,则增加新元素,删掉之前区间最左边的元素,但是...

2019-07-19 18:04:02 275

原创 CF 1190D Tokitsukaze and Strange Rectangle 离散化+线段树

思路: 将横纵坐标进行离散化,然后纵坐标由大到小就行枚举(由小到大枚举会让代码变得极其麻烦),对于出现的新点,包含新点的集合则对答案有贡献.我们考虑有哪些区间不包含新点:假设共有x种横坐标,那么总区间个数为x*(x+1)/2,设对于某一特定的y,出现了m个新点,那么新点的横坐标之间的区间则为不包含新点的区间,例如,新点的横坐标分别为 3,5,8 那么不包含新点的区间则为[1,2]的所有子区间, [...

2019-07-13 02:57:11 336

原创 Codeforces 1187E Tree Painting

传送门题意:给定一棵树,确定一个根,使得所有子树的大小之和最大思路:设u是v的父亲,设val为以u为根的子树大小之和,那么以v为根的子树大小之和为val-siz[v]+(n-siz[v]),当根变成v时,siz[v]大小的子树则消失,但多了一棵以u为根,大小为(n-siz[v])的子树.D题链接:https://blog.csdn.net/Frozensmile/article/det...

2019-07-02 16:47:01 640

原创 Codeforces 1187D Subarray Sorting 线段树

传送门题意: 给一个数组a,一个数组b,每次可以选择数组a的一个区间并从小到大排序,问是否可以将数组a变成数组b.思路: 其实相当于每次可以选择相邻的两个数字,将其从小到大排序.因为任何区间进行排序后的结果,都可以由每次选两个进行多次而得到.我们来看这个样例:a: 159 7 10 8b:78 9 15 10对于操作a数组, 很明显第一步我们要把7挪到第一个位置,能把...

2019-07-01 01:28:44 507

原创 Codeforces 1185F Two Pizzas 状态压缩

传送门思路: 首先不难想到,每个人的喜好和每个pizza的成分都可以用一个长度为9的01串表示,也就是用一个1~511之间的数字来表示. 然后对于具有相同数字表示(相同成分)的pizza,我们只需要记录价格最小的即可.这样,我们就把m个披萨,压缩到了最多511个披萨,这样就可以511*511的复杂度进行枚举了.对于每个人的喜好,我们可以暴力dfs,找出哪些披萨可以满足他.例如 000001...

2019-06-22 18:56:32 399

原创 Codeforces 1181D Irrigation 离线+权值线段树求第k大

传送门思路: 首先根据举办次数从小到大排序,然后对询问进行离线(按照ki的权值从小到大排序), 对于每个k询问,我们去看是否满足cnt[i+1].num*i-sum[i]<=k, (sum[i]代表1到i的举办总次数,cnt[i+1].num*i代表从1到i这i个地点举办次数都达到cnt[i+1].num而举办的总场数), 若<=k则将k%i,然后在权值线段树中查询第k大的数字(注...

2019-06-18 19:00:36 517

原创 Codeforces 1176D Recover it!

传送门思路:每次考虑最大的数字即可。最大的数字如果是质数,那么它肯定输入后来附加到数组b的,那么他在质数中的位置下标肯定就是数组a的元素。最大的数字如果不是质数,那么他肯定在数组a,因为它不可能是任何数的因子。#include <algorithm>#include <iostream>#include <cstdlib>#include ...

2019-06-10 19:50:32 343

原创 Codeforces 1176E Cover it!

传送门题意:给定一张图,最多给⌊n/2⌋个点上色,使得每个未被涂色的点,都与至少一个涂色的点相邻。思路:直接将图生成一棵树,第一种涂色方法是将奇数层全涂色,若这种方法涂色节点数大于⌊n/2⌋,那么将偶数层全涂色肯定可行#include <algorithm>#include <iostream>#include <cstdlib>#in...

2019-06-10 19:07:44 523

原创 Codeforces 1175E Minimal Segment Cover

传送门思路:没想到这道题竟然可以用倍增思想!f[x][j]代表从x到开始使用2^j条线段最远可以到达的坐标。#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include &l...

2019-06-09 22:20:48 150

原创 Codeforces 1175D Array Splitting

传送门题意:给定一个数组a,将a分成k段,每一段都非空。其中如果一个数字a[i]在第j段中,那么它的贡献为a[i]*j,现在需要最大化每个数字的贡献之和。思路:相当于在n-1个空中切k-1刀,设sum[i]为i到n的后缀和。如果在a[i]之前切一刀,那么贡献值则会增加sum[i],所以我们将后缀和排序,取最大的前k-1个即可。#include <algorithm>...

2019-06-09 22:12:40 152

原创 Codeforces 1172B Nauuo and Circle

传送门题意:圆上有n个坐标,现在有n个结点形成了一棵树,现在要把这n个结点指派到n个坐标中,问有多少种指派方法,使得这棵树的边互不相交。思路:考虑一个结点v,假设他有x个儿子以及它的父结点是u,那么它与儿子的连线必须在线段uv的上方或者下方,所以其实共有x+1条线,共有(x+1)!种方法,再乘上每个子节点的方法数即可。注意:根节点没有父亲节点,故只有x!种方法。#inclu...

2019-06-09 22:05:10 217

原创 Codeforces 1172A Nauuo and Cards

传送门题意:A和B两个长度为n的数组,1-n这n个数字与n个数字0共同组成这两个数组。A数组在小明手中,B数组在桌子上叠放着。小明每次可以将A中的其中一个数字放到B数组的末尾,并且将B数组的第一个数字拿到手中。问经过最少多少次操作,可以使得B数组中没有0且递增。思路:二分1是在第mid轮放到数组末尾的,之后进行模拟即可。一种特殊情况:1并没有被放到数组末尾 例如 A:3 0 ...

2019-06-09 21:57:00 226

原创 有关二叉树的递归算法

此二叉树可实现一下功能:判断二叉树是否为完全二叉树计算度为1的结点的个数计算度为2的结点的个数计算度为0(叶子结点)的结点的个数统计二叉树的高度(默认根的高度为1)统计二叉树的宽度计算各结点中最大元素的值交换每个结点的左孩子和右孩子从二叉树中删去所有叶子结点建树按照先序建树 输入0结束输入样例:1 3 6 8 0 0 0 4 0 0 2 7

2017-11-21 16:03:37 2642

原创 最小割-方格取数总结

总结的题型在这里:http://blog.csdn.net/u013368721/article/details/38312229写的不错的建图方法:http://blog.csdn.net/xjh_shin/article/details/77658833

2017-11-18 23:42:10 319

原创 实现由先序、中序序列构造二叉树的算法,实现由后序、中序序列构造二叉树的算法

一道上机题 思想是递归如果不理解原理可以看这个博客 注释里的说明很详细:http://blog.csdn.net/yunzhongguwu005/article/details/9270085在代码的注释部分有测试样例先序和后序:#include#include#include#include#include#include#include#include

2017-11-14 14:33:23 3645

原创 codeforces 888D.Almost Identity Permutations

一道很简单的数学组合题直接上代码#include#include#include#include#include#include#include#include#include#include#include#include#include#define lson i<<1#define rson i<<1|1#define up(i,x,y) for(i=x;i

2017-11-10 13:52:23 414

原创 简易计算中缀表达式 支持+-*/以及()运算

输入一个表达式 并且以#结束具体原理讲解见:http://www.cnblogs.com/dolphin0520/p/3708602.html#include#include#include#include#include#include#include#include#include#include#include#include#includetype

2017-10-08 23:58:45 1158

原创 poj2528 线段树+离散化

不清楚为什么数组开小了是wa而不是re这题其实主要在离散化的操作离散化完成后 其实就是zoj1610染色覆盖一个题意了 希望大家在做这道题之间先把zoj1610做了看了kuangbin的博客知道了离散的特殊之处例子一:1-10 1-4 5-10例子二:1-10 1-4 6-10普通离散化后都变成了[1,4][1,2][3,4]线段2覆盖了[1,2],线段3覆盖了

2017-09-30 00:32:00 303

原创 Codeforces Round #436 (Div. 2) A.Fair Game B.Polycarp and Letters C. Bus D.Make a Permutation!

c题掉了... 有时间再把代码补上首先A 很水的题  看看键入的是不是两个数 不是的话no 如果是两个数 但是两个数的个数不同 no 否则符合条件yesint a[105];int main(){ int i,j,k,m,n; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&k); a[k]++; } i

2017-09-25 20:59:21 558

原创 假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对

栈的应用stack <char> Q;char s[11000];int main(){ int T,i; Q.push('#'); scanf("%d",&T); while(T--) { scanf("%s",s); int len=strlen(s); ...

2017-09-24 12:50:08 23451

原创 设计算法把一个十进制的整数转换成二至九进制之间的任意进制输出

数据结构 考察栈的应用int main(){ int i,j,k,m,n; while(scanf("%d",&n)==1) { cout<<"请输入进制数"<<endl; scanf("%d",&m); stacks; while(n) { int t=n

2017-09-24 12:46:36 9901

原创 FZU 1704 高斯消元

这题其实就是求自由变量的个数n 然后就有2^n种方法注意要用到高精度 一开始不知道错在哪 wa了一天 最后得知是高精度的问题...#include#include#include#include#includetypedef long long ll;#define exp 1e-8#define up(i,x,y) for(i=x;i<=y;i++)#define dow

2017-09-16 11:42:52 379

原创 Codeforces Round #433 B.Maxim Buys an Apartment

想法题 小明要买房子 买的这个房子要满足至少有一个邻居 如果没人居住(k==0)或者已经住满了(k==n) 那么小明买不到符合条件的房子 最大最小都是0其他情况最小的都为1 这个好理解吧 就是样例解释中的情况下面看最大的可能 1代表有人居住 0代表没人居住首先我们来看 已经有一个人居住了  010   1可以让自己边上的两个房子符合条件同理 如果有两个人居住了 01

2017-09-07 11:04:29 294

原创 poj1330 lca倍增算法模板

上一套基于二分搜索的lca倍增算法模板#include#include#include#include#include#include#include#include#include#include#include#include#includetypedef long long ll;#define exp 1e-8#define up(i,x,

2017-09-05 21:46:27 665

原创 Codeforces Round #430 (Div. 2) B. Gleb And Pizza

比较水的题一开始想多了 加了几个特判 反倒是过不了了#include#include#include#include#include#include#include#include#include#include#include#include#includetypedef long long ll;#define exp 1e-8#define up

2017-08-30 01:08:18 513

原创 codefroces 841B Godsend

想法题如果数的和为奇数 那么first直接全部拿走如果数的和为偶数,分两种情况:1.如果每个数都是偶数 那么first无法拿走任何数 second赢                                                            2.如果存在奇数(肯定是偶数个):    ①如果某个奇数在第一个位置或者在最后一个位置

2017-08-19 11:44:53 422

原创 2017百度之星复赛1001 Arithmetic of Bomb

算是想法题吧  写的有点乱#include#include#include#include#include#include#include#include#include#include#include#include#includetypedef long long ll;using namespace std;const int MAXN=1005;

2017-08-18 17:04:14 379

QT开发基于C++的即时通讯工具代码+文档+答辩ppt

QT开发基于C++的局域网即时通讯工具代码+文档+答辩ppt,适合学生大作业课程

2019-09-20

空空如也

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

TA关注的人

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