自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2017计蒜之道 第四场 商汤科技的安全令牌

题意:给你一个n*m的矩阵,然后把某些行和列扣掉,没被扣掉的元素中,相邻的两个元素可以造一个芯片(只能横着或竖着相邻),求对给定的矩阵和已知扣掉了哪几行哪几列,问能最多能造几个芯片。思路:之前做过类似的题目,是一个很巧妙的数学题,但是竟然忘了,所以写一个博客记录一下。。。对每个完整的小矩阵,如果行和列不同时为奇数,那么所以的点都可以用来造芯片,相反,会剩一个点用不上。#include #

2017-05-31 22:53:11 202

原创 2017计蒜之道 第三场 腾讯狼人杀(简单)

题意:一共有n个人,某些两两的组合可以产生战斗力,一个人可以分别和很多人组合且战斗力叠加,需要花费的资金为k*(n*2-k),k为你选的人的个数,求一个选择方案,使得资金利用率最大(利用率:战斗力/花费的资金)。思路:简单版本n的最大个数为20,所以可以用二进制枚举,时间复杂度为:2的20次方*n*n;#include #include using namespace std;in

2017-05-31 22:42:12 271

原创 poj3349

题意:给n个长度为6的序列环,求是否有相同的环,能通过旋转和翻面而重合则相同。即顺时针或逆时针序列相同。思路:直接暴力两两比较的话,时间复杂度O(6*6*n*n)超时了,用hash表牺牲内存来减少时间复杂度,没学过hash表的同学可以看这个博客,http://kb.cnblogs.com/page/189480/#include #include #include usin

2017-05-27 21:14:15 331

原创 codeforces round #415 C.Do you want a Date?

题意:给n个坐标,你可以挑选任意组合,每个组合的距离为该组合的最大值-最小值,求所有组合的值的和思路:按坐标从大到小排序后,从0~n-2往后取相邻两点,求这段距离用了多少次*该距离差值,求用的次数:每段距离左边和右边至少个选一个点,即(2的x(左边点的个数)次方-1)*2的y(右边点的个数)次方-1),用快速幂维护一个枚举数组(2的x(点的个数)次方)即可(刚开始忘了快速幂,真的菜)#in

2017-05-24 23:38:21 308

原创 2017 计蒜之道 初赛 第一场 阿里的天池任务(简单)

题意:给你一个主串,和一个子串,求主串中子串出现的次数思路:暴力算的时间复杂度太大,所以用kmp,PS:刚开始做的时候只会暴力,后面学了KMP,给和我一样还不会KMP的小伙伴推荐两篇博客:http://blog.csdn.net/yutianzuijin/article/details/11954939/

2017-05-23 22:17:47 322

原创 POJ1836

题意:给你一群士兵的身高,求剔除最少多少名士兵 ,使得每个士兵都能够看到左边或者右边的无穷远处(有身高大于等于他的就看不到远处了)。方法:最长上升子序列;思路1(WA):枚举两两士兵,对每个组合求左边最大士兵数+右边士兵数;错误原因:i之前和i+1之后的dp数组都重复计算了,导致复杂度为O(n*n*n)超时;#include #include using namespace st

2017-05-20 21:38:10 328

原创 codeforces round #413 C. Fountains

题意:你有两种货币,分别可以买两种类型的喷泉,每个喷泉都有美观度,给你c个1货币和d个2货币,让你买两个喷泉,求最大美观度;思路1:暴力,对于每个喷泉,买完这个喷泉后,剩下的钱来买另一个喷泉(这个喷泉的美观度要最大),时间:1700ms;#include #include using namespace std;const int maxn = 100000+10;st

2017-05-14 22:39:07 313

原创 poj3267

思路1:对前i个单词,更新第j到第L字符需要删除的最小字符;但是WA了··(不知道为什么)#include #include #include using namespace std;const int maxn = 600+10;int dp[maxn];int main(){    int w,l;    while(~scanf("%d%d",&w

2017-05-14 13:58:50 193

原创 POJ1276

DescriptionA Bank plans to install a machine for cash withdrawal. The machine is able to deliver appropriate @ bills for a requested cash amount. The machine uses exactly N distinct bill denominatio

2017-05-12 20:58:52 293

原创 codeforces round #412 B. T-shirt buying

题意: 商店有n个价格完全不一样的衣服,正反两面都有颜色,颜色可以为(1,2,3),m个客户依次来买衣服,分别给出他们想要的颜色,只要正反至少其中一个包含这个颜色,然后客户在选定颜色情况下买最便宜的,分别输出他们应付的钱,没有这个颜色的衣服就输出-1;思路:定义三个优先队列,分别存1,2,3颜色的衣服,在用set映射记录哪些衣服被选了(因为衣服价格是完全不同的);#includ

2017-05-12 12:31:23 245

原创 POJ 1837 Balance

题意:有一个天平,给你n个挂钩和m个重物,求所以重物都放完时恰好天平平衡的方法数;思路:如果m个重物每个都枚举n次的话,时间复杂度是m的n次方,不可行,动态规划,dp[i][j],令i为放重物的个数,j为天平的倾斜状态,这样时间复杂度就是i*j*n,#include #include using namespace std;int main(){    in

2017-05-10 23:10:21 255

原创 Codeforces Round #411 (Div. 2) D. Minimum number of steps

题意:给你一个只含若干个 a 和 b 的字符串,你进行一个操作(把字符串ab变成bba),让你求把所给字符串变成不含 子串ab 的字符串的最小次数。思路:从后往前遍历,从遇到第一个b开始记录b出现的次数ans,当出现a后,通过变换把a移到第一个b后面需要ans次操作,同时b的个数*2,即ans*=2,一直遍历到头即可,注意,sum和ans都要mod1e9+7;#include

2017-05-05 22:19:05 224

原创 codeforces round #408 C. Bank Hacking

题意:太复杂···思路:每个银行最多只能加两次,起点一次都不加,起点相邻的点只加一次,剩下的加两次,所以只需要二分法最小化最大值。。。坑点有点多,代码自行体会···#include #include #include using namespace std;const int maxn = 300000+10;const long long INF = 1e

2017-05-03 22:54:25 228

空空如也

空空如也

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

TA关注的人

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