自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HeadFirst读书笔记

1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起,好让其他部分不会受到影响。代码引起的不经意后果变少,系统变得更有弹性。每次新需求一来,都会使某方面的代码发生变化,那么就可以确定,这部分代码需要抽出来和其他稳定的代码有所区分。1、使用模式最好的方式“把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们”。以往是代码复用,现在是经验复用。2、软件开发的一个不变的真理就是变化。

2024-02-25 12:37:11 541

原创 2019 Multi-University Training Contest 10 1005:Welcome Party

Welcome Party题意:有n个学生,每个学生都有歌唱和相声能力。选择一个集合A,一个集合B。使得集合A里面的最大值与集合B的最大值的差值最小。思路:按歌唱能力从大到小枚举,枚举到当前学生的歌唱能力,那么比该学生歌唱能力强的都应该去表演相声,用multiset维护一下。同时其他的还没有枚举到的找到当前学生唱歌能力的最接近的值。最后对答案取下min即可。代码:#inc...

2019-08-22 10:00:12 352

原创 2019 Multi-University Training Contest 10 1003:Valentine's Day

Valentine's Day题意:任选k个礼物,求能使得女朋友高兴一次的最大概率。思路:枚举能使得概率变大的p即可。代码:#include<bits/stdc++.h>using namespace std;double p[10005];const double eps=1e-7;int main(){ int T; scanf("%d",&a...

2019-08-21 20:30:51 252

原创 2019牛客暑期多校训练营(第十场)J:Wood Processing

Wood Processing题意:n块木板拼成k块。拼接的方式是横向连接,纵向选择一个不高于最高高度的h使得所有块里面的高度相等。去掉的高度是浪费的东西,求最小的浪费量。思路:设dp[i][j]表示前i块木板拼接成j块的最少花费。dp[i][j]=min(dp[k][j-1]+sum[i]-sum[k]-(sumw[i]-sumw[k])*h[k+1]) k从0枚举到i-1。...

2019-08-20 17:01:00 390

原创 2019牛客暑期多校训练营(第十场)F:Popping Balloons

Popping Balloons题意:选3条横线,3条竖线,相邻线之间的距离不超过r,求能穿过的最大点数。思路:考虑只有一条横线,一条竖线的情况。利用竖线权值线段树维护该横坐标能通过的点数,枚举竖线,考虑该点会重复计算,所以先取出来,计算完后再加回去。3条横线,3条竖线类似。代码:#include<bits/stdc++.h>using namespace ...

2019-08-20 15:27:09 206

原创 2019牛客暑期多校训练营(第十场)E:Hilbert Sort

Hilbert Sort参考博客:https://blog.csdn.net/qq_41117236/article/details/99694107#commentsedit代码:#include<bits/stdc++.h>using namespace std;struct node{ int x,y,num;}a[1000005];int cmp(nod...

2019-08-20 10:43:01 110

原创 2019牛客暑期多校训练营(第十场)D:Han Xin and His Troops

Han Xin and His Troops扩展中国剩余定理模板题,但是会爆long long。java大数代码import java.math.BigInteger;import java.util.Scanner;import java.util.*;import java.io.*;public class Main { static BigInteger a[]=n...

2019-08-20 08:51:16 119

原创 2019牛客暑期多校训练营(第十场)B:Coffee Chicken

Coffee Chicken题意:给定两个字符串构成斐波拉契数列,问第n个字符串的从第k个字符开始的10个字符。思路:因为k最大是1e12。所以预处理500个即可,然后递归求解。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll f[510],k;const ll ...

2019-08-20 08:35:02 110

原创 Codeforces 835D-Palindromic characteristics(DP)

Palindromic characteristics题意:给你一个字符串,求出它的k阶回文子串有多少。k阶回文子串的定义,它本身是回文串,左半部分和右半部分相等,且都是k-1阶回文子串。思路:dp[i][j]表示字符s[i...j]最大是几阶,当si ! = sj 或 dp[i+1][j-1]=0 时它不是回文串。否则 dp[i][j] = dp[i][i+len/2-1] + ...

2019-08-16 10:21:31 161

原创 The Bakery(DP+线段树)

The Bakery题意:将一些数分成k段,每段的价值是里面不同数的个数,求能分得的最大值。思路:设dp方程 dp[i][j] 表示前 j个数分成 i段的最大值。转移方程 dp[i][j]=dp[i-1][x]+val[x]。1<=x<=j 。那么我们用线段树维护1到 j 的最大价值。对于每一个位置,找到前面最后一个与它数字相同的的位置,把这之间线段树的值都加上1。...

2019-08-15 10:27:36 179

原创 2019杭电多校第七场1010:Just Repeat

Just Repeat题意:两个人轮流出牌,规定出的牌的颜色不能和对方已经出过的牌一致,谁不能出牌,谁就输了。思路:每个人优先出的牌的颜色肯定是场上没出过的,对方也持有的,并且两个人手中持有数量最多的牌.对方持有的越多意味着可以封掉更多的牌,而自己手里的越多意味着可以防止自己更多的牌被封掉.因此将手里的牌统计好,从大到小分配,最后看手里牌数量即可判断输赢。可能会卡m...

2019-08-14 10:36:23 183

原创 2019杭电多校第七场1001:A + B = C

A + B = C题意:给定 a b c 求出 x y z 使得 a * 10^x + b * 10^y = c * 10 ^z 。思路:a + b = c,要么a+b有进位,要么没有进位。那么判断题目是否有解只要判断 b | ( c - a ) (|)是整除符号。 b | ( c*10 - a ) ,a | ( c*10 - b ) ,a | ( c- b ) 四种情...

2019-08-13 17:02:03 220

原创 2019杭电多校第七场1006:Final Exam

Final Exam题意:有n个题目,总共m分,每个题目可能的分值为 0--m 。答对一道题最少要复习分值加1的时间,问答对k题需要的最少复习时间。思路:出题人可能会卡掉你分值小的n-k+1 个题目,最坏的情况是 m 的分值平均分配到 n - k + 1个题目上。那么剩下的 k - 1 个题目我们花费大于其中 n - k + 1 个题目的最大值。最后再保证其中的 n - k +...

2019-08-13 15:34:13 160

原创 2019杭电多校第七场1011:Kejin Player

Kejin Player题意:每升一级要花费ai,升级有ri/si的几率成功,失败掉到xi级,给出q个询问,求出l到r级的花费。思路:尝试次数temp=s/r,尝试了temp次,那么有temp次失败了,一次成功。当前等级花费为sum[i],sum[i+1]=(temp-1)*(sum[i]-sum[xi]+ai)(失败)+ai成功。#include<bits/stdc+...

2019-08-13 11:06:13 239

原创 White Lines

White Lines题意:每次可以将k*k的区域擦成白色,只擦一次问可以得到的最多的白线条。思路:sumr[i][j]:表示第i行(1~j)列有多少个'B'。sumc[i][j]:表示第j列(1~i)行有多少个'B'。R[i][j]表示第i行消除(j~j+k)列是否会产生新的白线行。C[i][j]表示第j列消除(i~i+k)行是否会产生新的列。ansc[i][j]...

2019-08-13 10:41:32 375

原创 Compress Words

Compress Words题意:将给定的单词去掉最长的相同前后缀拼接起来。思路:双hash#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod1=1e9+7;const int mod2=1e9+9;const int p=131;const int...

2019-08-13 10:25:02 517

原创 All-one Matrices

All-one Matrices题意:求出所有没被其他子矩阵包括的所有全1矩阵。思路:对于每个格子(i,j),记录它能向上延升的距离。同时还要记录它能向左延申的位置,那么对于一个全1矩阵,(i-up+1,pos)->(i,j)就符合要求,我们从底往上枚举即可,用单调栈维护。#include<bits/stdc++.h>using namespace st...

2019-08-11 10:40:20 620

原创 并查集

Wireless Network#include<cstdio>#include<cmath>using namespace std;struct node{ int x,y,ok,fa;}a[1005];int d;int find(int x){ if(x!=a[x].fa) a[x].fa=find(a[x].fa); return a[x...

2019-08-06 16:51:43 86

原创 最短路

Til the Cows Come Home#include<cstdio>#include<vector>#include<queue>#include<algorithm>#include<cstring>using namespace std;int d[1005];int vis[1005];typedef ...

2019-08-06 16:26:30 96

原创 DLX

Radar题解:https://blog.csdn.net/sr_19930829/article/details/39853743#include<bits/stdc++.h>using namespace std;const int maxnode = 3000;const int MaxM = 55;const int MaxN = 55;int K;str...

2019-08-06 14:53:50 611

原创 An impassioned circulation of affection

An impassioned circulation of affection题意:给定字符串,有q个操作,每次可以将m个字符变成c,问能将c字符变得最长的长度。分析:二分#include<bits/stdc++.h>using namespace std;int pos[30][1505],temp[1505],n,ans[1505][30];char s...

2019-08-01 10:32:09 117

原创 搜索进阶

Eight#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<queue>#include<vector>using namespace std;const...

2019-07-30 16:44:47 129

原创 Find the answer(线段树)

Find the answer代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;ll sum[N<<2];int a[N],b[N],v[N*4],ans[N];void up(int o,int l,int r,int k){ i...

2019-07-30 09:52:01 385

原创 Sagheer, the Hausmeister

Sagheer, the Hausmeister题意 :有一个n行m+2列的01矩阵,最初在左下角的位置,0表示灯关,1表示灯开,问你关闭所有的灯所需要的时间,最后不需要回到原位置。分析:考虑dp,dp[i][0]表示关完i层从左边楼梯走,dp[i][1]表示从右边走。代码:#include<bits/stdc++.h>using namespace std...

2019-07-29 09:24:27 152

原创 sequence

sequence题意:求一段区间里面a数组的最小值乘b数组的区间和,求的该值的最大值。思路:单调栈维护ai左右延伸区间,线段树维护b数组前缀和数组的最大最小值。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=3e6+5;ll sum[maxn],m...

2019-07-28 17:14:21 688

原创 D. Vladik and Favorite Game

D. Vladik and Favorite Game题意:交互题,在一个地图上,起点是(1,1)终点是F,在开始可能会交换l,r,u,d。每次输出方向,电脑给出一个坐标。思路:先跑一遍bfs,记录路径,再根据输入的坐标更改方向。#include<bits/stdc++.h>using namespace std;int dir[4][2]={{0,1},{...

2019-07-28 10:26:08 177

原创 Vladik and Memorable Trip

Vladik and Memorable Trip题意:给定一个数列,划分一些区间,规定该区间里面包括该区间出现的所有数字,该区间的贡献是区间里面不同数的异或和,答案是求能划分的最大值。思路:dp,dp[i]表示从1到i划分所能取到的最大值,维护每个数的左右边界即可。#include<bits/stdc++.h>using namespace std;...

2019-07-28 10:22:41 235

原创 Keen On Everything But Triangle

Keen On Everything But Triangle题意:给定区间,从区间里取3个数问能组成的最大三角形周长。思路:主席树模板题,每次求区间剩下的最大,次大,第3大。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef...

2019-07-24 20:09:15 655

原创 简单搜索

棋盘问题 #include<cstdio>#include<cstring>int vis[10];char mp[10][10];int n,k,sum,cnt;void dfs(int s){ if(cnt==k){ sum++; return; } if(s>=n) return; for(int i=0;i<n;i++...

2019-07-23 17:28:34 162

原创 Vacation

Vacation题意:在一条道路上,有许多车,给定位置速度以及车长,问你到达终点的时间,你会被你前面车速小于你的挡住导致你只能跟它跑一样的速度。思路:思维题,考虑每辆车被挡住的情况,最后取一遍最大值,答案就是这个最大值#include<bits/stdc++.h>using namespace std;typedef long long ll;ll l[10...

2019-07-23 15:38:58 436

原创 Path

Path题意:求最少的花费使得从1到n的距离变长。思路:跑两次最短路,如果d[u]+d[v]+w==d[n]那么在最短路上,用这些边建图,跑最大流即可。代码来自:https://blog.csdn.net/qq_41730082/article/details/96874510#include "bits/stdc++.h"#define INF 0x3f3f3f3f...

2019-07-23 15:32:02 161

原创 Operation

Operation题意:两种操作,0 l r在l,r之间任意选择一些数使得异或值最大。1 x在末尾插入x值。思路:维护一个前缀线性基即可。#include<bits/stdc++.h>using namespace std;const int N=1e6+5;int n,q,c[N];int pos[N][30],p[N][30];void inser...

2019-07-23 15:21:59 1752

原创 2019JXCPC重现赛(未完待续)

Cotree题意:有两棵树,一共n个点,在两棵树上连一条边,使得他们变成一棵树,问如何连边使得他们题目中的式子最小。思路:树中所有点到某个点的距离和中,到重心的距离和最小,先求得重心,然后求连接重心后节点的两两距离和即可。摘自#include<bits/stdc++.h>using namespace std;typedef long long ll;...

2019-07-23 11:20:24 217

原创 Second Large Rectangle

Second Large Rectangle题意:从一个01矩阵里面找到全是1的第二大的矩形面积。思路:悬线法求最大的标记一下,第二大的就容易求出来了。#include<bits/stdc++.h>using namespace std;const int maxn = 1005;int a[maxn][maxn];int vis[maxn][maxn]...

2019-07-21 08:58:06 259

原创 Equivalent Prefixes

Equivalent Prefixes题意:选择最大的p,使得a数组和b数组1到p的任意子区间里面最小值的下标相同。思路:1.笛卡尔树。2.用数组记录每个数左边第一个小于它的数,最后比较两个数组相同的最大位置即可。版本1#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;...

2019-07-19 09:36:23 299

原创 The Moon

The Moon题意:1.最开始有q=2%的几率掉落物品。2.你有p%的几率赢的游戏,赢了有q%的几率掉落物品,输了q+1.5%.3.没掉落q+2%,重复2,3.掉落结束游戏。问游戏次数期望。思路: 记忆化搜索。dp[i][j]表示当p=i,q=j时的次数,有两种情况,1种是没赢,1种是赢了但没掉落物品。把p扩大100倍,q扩大200倍。1.获胜并且没掉落物品...

2019-07-17 15:20:19 254

原创 Strength

Strength题意:你有n个怪物,敌方有m个怪物,你攻击对方攻击状态的怪物,对方会损伤两个怪物攻击值的差值的血量,当然你的怪物的攻击力肯定要大于对方的。攻击防御的则对方不受伤害,最后还剩多少怪物,他就直接承受他们的伤害,问怎样使得对方所受伤害最大。贪心:两种情况,你能把所有的怪打死,选最少的花费去攻击防御怪,剩下的减去攻击怪即可,你不能把所有怪打死就每次选最大的打最小的攻击怪。...

2019-07-17 10:18:42 565

原创 Justice

Justice题意:给定n个k,k代表1/2^k,问最后能否选择一些数的和使得有两个数大于等于1/2思路:要构成一个1/2,需要1个1,2个2,4个3...也可以是1个2+2个3...那么把k从小到大排序,设定一个p代表现在需要的数,cnt1,cnt2,表示两份组成1/2需要p的数量。我们只管最后能组成两份1/2,其他的不管。学个数据模拟一下。3 3 3 3 4 4 4 4 5...

2019-07-17 09:16:13 166

原创 Fancy Signal Translate

Fancy Signal Translatesolution:长度为i的不同串有2^i个,则没出现的长度最短的串长度不会超过18,那么枚举长度不超过18的串,转换成10进制,打上标记,那么没被标记的最短串长度即为答案。#include<bits/stdc++.h>using namespace std;int vis[1000005];char s[1000005]...

2019-07-16 09:41:14 265

原创 Remember the Word(Trie)

Remember the Word给出由s个不同单词组成的字典和长字符串,把这个字符串分解成若干个单词的连接,有多少种方法。递推加trie#include<bits/stdc++.h>using namespace std;const int maxn=4005;const int maxnode=maxn*100+5;const int mod=200...

2019-07-15 18:29:11 228

空空如也

空空如也

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

TA关注的人

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