自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 1001 Alice Game

思路:sg函数打表,从题中可以看出,当n=0、n=k+1时sg=0,n

2023-07-21 10:50:03 198

原创 2023杭电多校1部分题解

比赛时倒是想到增加状态了,但是一直没想对,比赛后看了标程才知道,其实只要将原来的不安装分成两种状态即可:1、不安装但是可以被其他路由器包含,2、不安装但是不能被其他路由器包含。这一题,就是树形dp的板子题,然后按照这一题的代码改了一下就出来了第一版,但是因为仿照没有上司的舞会用了两个状态:安装路由器和不安装路由器导致有情况没有被包含所以wa了。未考虑的情况就是:安-不安-不安-安,这种情况没法只用两种状态表示。思路:当最开始看到这个题的时候最先想到了。

2023-07-19 12:31:19 504 4

原创 2023浙江省赛总结

开局还是很顺利的,前三个题不到半个小时就开出来了,基本上思路都是秒出的,到第四个题就有点不对了,是交互题。然后就开始查户口,分析分析其他队咋样了,结果颁奖典礼傻眼了,没想到省赛比区域赛获奖名额少这么多,直接重生之我是joker,银牌变铜牌。然后是坐大牢环节,第五题暴力dp,怎么dbug都过不了,wa了好几次,最后我和超哥去看G题,腾哥自己dbug,没想到反过来再走一遍dp就对了,真没想到。总体来说,自己对这次省赛还是很满意的,终于拿到了牌子了(虽然是铜牌),还算对得起比赛前加班加点的做题和看课。

2023-04-18 19:25:25 329

原创 Codeforces Round 862 (Div. 2):Place for a Selfie 、A Wide, Wide Graph

维护树的直径的方法:随机选一个点走一遍dijkstra最长路,那么最远的那个点就是树的直径的一端(flag),再从找到的这一端出发走一遍dijkstra就能找到另一端(flag),然后再从flag走一遍dijkstra就能找到所有点的最长边(ans[])所以我们只需要使b-k的绝对值最小即可,也就是二分查找一下距离b最近的两个k(分别是大于等于b的和小于等于b的),如果这个k无法使(b-k)^2-4ac<0,那么输出NO,否则就输出yes;为了修那个c题没来及做,我真的,受不了啦!

2023-04-03 11:24:21 677 1

原创 礼物(01背包+逆向思维)

当一个人送出的礼物中含有炸弹时,他已经知道所有的东西都会被炸成一摊灰,所以他不会再送炸弹外的东西。即,有多少种不 同的送炸弹的人的名单,使得其中每个人都送了至少一颗炸弹,并且所有人送的炸弹个数加和大于等于给出的P.我们需要统计的是合法总方案数,在这个题里,总方案数是2^sumn(sumn是可能存在炸弹的礼物个数),非法方案数是dp【0到p-1】的和,那么逆向思维一下,合法方案数是2^sumn-dp【0到p-1】首先是dp,dp数组下标表示的是有i颗炸弹,存的是方案数,很明显的01背包。

2022-10-23 10:54:41 290

原创 dfs+贪心 三角形

我们发现对于第一条边(所组成的三角形里最短的边)而言,如果直接用dfs三重循环找边的话,它被重复找了好多次(也就是说dfs循环找出来的第一条边未必是现在能用的最短边),有极大的冗余。陈晫手上有 12 根木棒,它们的长度依次为 l1,l2,l3,...,l12。对于每组测试数据:仅一行,包含十二个整数 l1,l2,l3,...,l12。对于子任务 2, T < 20, li< 109,占 40%分数。•每组测试数据的答案只可能是 0,1,2,3,4 中的一个。)的时间少了一半,这样就解决的tle的问题。

2022-10-23 10:35:57 221

原创 问题 H: 数字游戏(区间dp)

游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。当要求最小值时,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值时,为((2+4+3) mod 10)×(-1 mod 10)=9×9=81。2区间dp 这种搜索优化类的问题,很容易想到是dp,普通区间dp有两维分别是左端点和右端点,但这个问题还需要维护分成多少段,所以本题dp数组是三维数组,第三维是分成多少段。

2022-10-14 12:09:06 175

原创 Searching for Soulmates(dfs+逆向思维?)

对于1,当a>b时,可以看出,在最优的操作中只有a/2以及a+1两种操作,在进行完最优操作后就会使初始状态a>b变成a

2022-10-04 22:53:30 339

原创 2022杭电多校第二场1009 ShuanQ(数学)

对于每对PQ都有唯一的质因数M(M>P&&M>Q)使得P*Q-1==K*M(证伪如下图),这样只需要把P*Q-1的质因数求出来即可。对于给定的P及其逆元Q以及enc,求由P求Q的mod,并算出P*enc%mod。

2022-07-22 15:01:41 310

原创 杭电多校第一场第三题 Backpack(异或dp+bitset)

思路用bitset建立dp数组(f)在每一个bitset元素(f[j])中存储一个01串,某一位为1表示这个位置对应的容量m的异或和可以为j,用g数组拷贝f,然后每次加入一个容量v相当于把g左移v(相当于体积增加v时异或和为j的情况)状态转移为f[j]|=g[j^m1]下一个n行,每行包含2个整数v我,w我(1≤v我,w我......

2022-07-20 21:20:22 263

原创 2022暑期杭电多校第一场1012Alice and Bob(博弈论)

思路站在Alice的角度想,为了保存更多的数字她必定要把数字尽可能均分,这样在Bob消除后Alice得到的i-1的个数至少是a[i]/2(也就是至少有一半(下取整)个数可以转移到i-1)一个n(0≤一个我≤106,∑一个我=m)—有一个我带值的数字我在黑板上。否则,如果黑板上的所有数字都被擦除,则鲍勃获胜。如果黑板上还有数字,并且没有带值的数字0在黑板上,爱丽丝可以将黑板上剩余的数字分成两组。对于每个测试用例,如果爱丽丝将赢得游戏,请打印“Alice”,否则打印“Bob”。然后将所有剩余的数字减去一。...

2022-07-20 14:41:54 795

原创 2022杭电多校第一场Dragon slayer(dfs+状态压缩)

龙的巢穴是一个长方形的区域n和宽度m.左下角是(0,0)右上角是(n,m).英雄的位置是(xs+0.5,ys+0.5).龙的位置是(xt+0.5,yt+0.5).该地区有一些水平或垂直的墙壁。枚举每一面墙的状态(存在或者不存在),用二进制数表示,存在标记为0不存在标记为1,共有pow(2,15)种状态,对每一种状态建图进行深搜(注意,因为墙的特殊性,需要把墙分为横墙和纵墙分别存储)然后深搜每种状态(我是真不明白这么复杂的思路怎么能叫爆搜的),还有,记得剪枝(ans...

2022-07-20 14:20:11 256

原创 暑期牛客多校1: I Chiitoitsu(期望dp,求逆元)

2022暑假牛客第一场错题反思1

2022-07-19 10:09:14 188

原创 Counting Liars

2022-07-14 20:41:31 398

原创 dp 最长上升子序列模型 怪盗基德的滑翔翼

只有代码

2022-07-11 15:32:55 95

原创 dp(数字三角形模型) 方格取数

样例输入: 样例输出: 思路:将两次路径合成一个dp数组,dp数组里有三维参数,用k表示i+j之和,用i1表示第一次走的路径的横坐标,i2表示第二次走的路径的横坐标,根据横坐标和k可以计算出各自的j更新dp末状态:每一次前进一步相当于对k++,再由不同的i可推算出相应的坐标,若是两次路径的坐标相同则只加一次,若是不同则两个坐标上的权重都加。末状态分为四种: 代码实现:...

2022-07-11 11:21:21 141

原创 (dfs+map(离散化))Perimeter

2022-07-04 08:42:45 376

原创 问题 C: Blocks(dfs)

题目描述:给定四组字母以及n个询问(每个询问是一个不超过4位的字符串),问是否能用给定的四组字母拼成这个字符串(每组每次只能使用一个字母且每组在一次询问中只能用一次)思路:错误思路:开始没想到dfs,试着用贪心做了一下,就是对询问中的每一个字母,从前往后遍历给定的四组字母,若碰到还未使用的某一组中存在此字母,则直接标记此组已使用并跳出,若是查询中的字母无法在任意一组找到则输出NO;这样贪心有一个明显的漏洞,前面选的组并不一定是最优解,在后面的字母选组时会受到前面选择的干扰。如:

2022-05-20 13:44:31 116

原创 Rails题解(模拟堆)

基本题意:原本有1、2、3、4 ..........n个按顺序排列的点,现需要通过一个中转站(堆)把原序列重新排列成a1, a2, ..., aN,问是否能实现。思路:思路十分明显,只需要用堆模拟排列过程即可,(这个过程可以直接用stack来实现,我用的数组模拟完全出于习惯)。易错点:1.本题格式要求比较严格,(我开始因为没空行wa了两次)。 2. 虽然本题没有给出每个样例具体有几行输入,但是可以通过判断是否有0来判断结束,不需要通过字符串存储,这样可以简化一...

2022-05-04 11:19:13 167

原创 树状数组知识点整合

1,作用:对数组某一区间的和的快速修改和维护实现树状数组把前缀和需要维护从1到i的点进行优化通过lowbit函数进行快速的前缀和遍历int lowbit(int x){ return x&(-x);//i取反+1与i }具体树状数组的实现:给i加上一个数for(int j=a1;j<=n;j+=lowbit(j)){ b[j]+=b1; }求前缀和:for(int i=a1-1;i>0;i-=lowbit(i)){ sum1

2022-04-19 15:03:40 92

原创 区间最大值

本题显而易见的暴力会超时,考虑优化循环或者找规律,显然题目给的数据太小,所以我们用n=1001打表找规律。打表程序:#include<iostream>#include <algorithm>#include <cstring>#include <cmath>using namespace std;int main(){ int n=1001,m; for(int i=1;i<=n;i++){ int x=n%i; c..

2022-03-27 14:51:10 922

原创 c++ 良好的感觉 (单调队列)

输入样例:63 1 6 4 5 2输出样例:60分析:舒适值均为正数,先把前缀和整上再说别的;首先是想到用朴素方法:枚举每一个数作为最小值然后向左向右搜索比这个最小值大的数的下标,遇到比这个数小的数即跳出,记录最远端的下标,用前缀和计算以此数为最小值时的感受值,对所有结果比较大小,输出最大值即可(我当时写的时候没写前缀和):#include <iostream>#include <algorithm>#include <cmath..

2022-03-10 10:35:40 1052

原创 c++ 选择客栈

分析:首先这个客栈的总数n最大值为20万用朴素做法的两重循环肯定会超时,所以要改变循环方式。在输入的同时进行操作,当输入的旅店的最低消费小于等于p时进行更新,从后往前循环到上一个最低消费小于p的点(m),对每个遍历到的旅店相应的颜色+1(num[kz[j].sd]++,num[]为储存对应下标颜色的旅馆个数),然后更新ans(ans+=num[kz[i].sd]-1)因为kz[i]本身就是一个符合条件的旅店可以与前面的任意一个相同颜色的旅店组合成一个不重不漏地(因为是随输入更新,线性)新组...

2022-02-24 21:36:02 807

原创 c++钓鱼(贪心)

题目:输入:314 5 61 2 11 2输出:35思路:用贪心的思路模拟钓鱼过程,如果在一个鱼塘里每分钟钓到的鱼(yt[i].zs/5)大于等于(在下一个鱼塘钓到的鱼)/(走到下一个鱼塘+钓五分钟鱼的时间)及yt[i+1].zs/(5+yt[i].time*5)则继续在这个池塘里钓鱼(使每分钟钓鱼的收益最高),反之则走到下一个鱼塘。把模拟过程中每一步钓到的鱼加起来得到sum。#include<iostream>#include <algori.

2022-02-15 22:54:39 1579 1

原创 Ride to Office题解

题目:输入样例:420 025 -15527 19030 240221 022 340输出样例:780771题意解读:用谁的速度可以最快到达终点(只需选择到达终点时所用时间最少的人即可,不需要中途换速度)难点:需要相通一个追及相遇的模型:如果选择的不是所用时间最少的人(设为a)而是选择b(速度小于a但在a之前开始骑车)则需要中途换速度,则假如在时间t时换速度,也就是说当时间等于t时a与b在同一位置,也就是说从零到t的时间内a、b所走路程相同而且在换速..

2022-02-06 23:17:31 546

原创 A. Newspaper Headline

题目:A newspaper is published in Walrusland. Its heading iss1, it consists of lowercase Latin letters. Fangy the little walrus wants to buy several such newspapers, cut out their headings, glue them one to another in order to get one big string. After t..

2022-01-12 22:28:53 220

原创 问题 A: 林教主的面试(进制换算)

题目描述 林教一表人才,才高八斗,英明神武,英俊潇洒,玉树临风,风流倜傥,盖世无双,人见人爱,花见花开,十全十美,完美无缺,空前绝后,名垂青史.万古流芳.林教凭借他一日万行的编码速度,和5分钟内秒杀一切能做题目的惊人思维,还有对计算几何优化网络流等神级算法的深刻理解,获得所有集训队的一致认可,在亚洲区域赛上更是摘金夺银,独占鳌头.已经进入大四的林教,由于难遇敌手,以致于心灰意冷,无心恋战,毅然选择了直接进入人生的下一阶段----工作.林...

2022-01-11 23:16:30 63

原创 一只小北极熊(结构体

题目:利马克是一只小北极熊。他喜欢通过社交网络与其他熊联系。他有n个朋友,他与其中第i个朋友的关系由一个独特的整数ti来描述。这个值越大,友谊就越好。没有两个朋友有相同的值ti。春天开始了,熊的冬季睡眠结束了。利马克刚刚醒来并登录了。他所有的朋友都还在睡觉,因此他们都不在线。在接下来的几个小时里,他们中的一些(也许是全部)会出现在网上,一次一个。系统显示正在在线的朋友。在屏幕上,最多可以显示k个朋友。如果有超过k个朋友在线,那么系统只显示其中最好的k个朋友--那些ti最大的朋友。你的任务是处理两.

2022-01-08 23:17:03 538

原创 c++ dp 贪婪的戈尔曼题解

1、题目:从前有2只狗,大的叫大狗,小的叫小狗,它们2个合起来就是狗儿们,使用英语的人把它们写作Girlman,传来传去,到最后大家决定叫它们格尔曼。它们 的叫声很特别,但是它们十分吝啬它们的叫声,你为了听到它们的叫声,决定买狗饼干送给它们吃,不同种类的饼干能让它们叫的次数不一样,同一块饼干对于大小 格尔曼的效果也不一样。它们很贪婪,如果你只给其中一只格尔曼吃狗饼干或者给两只格尔曼吃的不一样,有一只就会不高兴,因此你买狗饼干的时候总要两块两块 地买,而且现在每类饼干也只有2块(想要多的也没得)。现在不

2021-12-15 07:50:32 1129

原创 c++ dp与dfs结合 滑雪题解

1,题目:2主要思路:本题所用的dp模型相对简单但难点在于要用dfs与dp结合。将dfs的结果作为参量进行状态转移。将dp[i][j]表示为从i,j开始下滑的最长距离(然后用dfs算出这个最长距离与现有答案比较大小)3代码:#include<iostream>#include <algorithm>#include <cstring>using namespace std;int n,m;int h[110][110];//记录高.

2021-12-09 07:19:22 345

原创 c++ dfs部落卫队题解

1,题目:2主要思路:将m对仇敌关系转化成一张二维关系表(cd[i][j])通过调用表来减少dfs时的时间复杂度。3代码:#include <iostream>#include<bits/stdc++.h>#include <algorithm>using namespace std;int n,m;int cd[105][105]={0},rs2[105]={0},rs3[105]={0},max1=0; void dfs(int s.

2021-12-09 07:02:39 813

原创 c++最强素数(前缀和)

1,题目:2,思路:主要分两点1:如何快速算出一个大区间内的所有素数。2:如何找到最长连续素数和。1:寻找素数通过乘法的方式即如果一个数可以用i*2(i>=2)表示那么它必是素数2:前缀和(需要优化)(详见代码中的优化和注)3代码:#include <algorithm>#include <iostream>#include <cmath>using namespace std;long long n;int busushu

2021-12-07 20:28:43 532

原创 c++dfs深度搜索 体积优化算法

1,题目:2,主要思想运用递归实现深度搜索3,解题思路通过递归(此递归分为两部分,选或不选,是本题重点)求出不同的体积,将求出的体积作为下标在数组对应位置+1,然后对此位置所存的数进行判断,若为1则此下标为一个不同的体积vi++,最后输出vi即为所求。4优化解法:#include<bits/stdc++.h>#include <algorithm>using namespace std;int n;int a[51]={0},b[51]={0}.

2021-12-07 20:20:55 247

原创 c++dp最短编辑距离

题目:给定两个字符串AA和BB,现在要将AA经过若干操作变为BB,可进行的操作有:删除–将字符串AA中的某个字符删除。 插入–在字符串AA的某个位置插入某个字符。 替换–将字符串AA中的某个字符替换为另一个字符。现在请你求出,将AA变为BB至少需要进行多少次操作。输入格式第一行包含整数nn,表示字符串AA的长度。第二行包含一个长度为nn的字符串AA。第三行包含整数mm,表示字符串BB的长度。第四行包含一个长度为mm的字符...

2021-12-07 09:23:14 977 1

原创 c++习题解析:海战

1,题目2,思路:首先通过遍历找到未被使用的‘#’将其放入递归函数里并将他标记为已使用(b[i][j]=1)然后逐行搜索以这个#为开头的矩形的宽度若每行宽度不一样则改变指示参数(cuowu=1)并返回此时有船接触,如果各个矩形符合要求则每次返回sum++。(我用的方法类似于dfs,但好像不太一样)3,代码:#include<bits/stdc++.h>using namespace std;int n,m,w,cuowu=0,sum=0;char a[1005][1.

2021-12-04 14:19:56 704 1

原创 dfs题解:n皇后

1,题目:2,

2021-12-03 19:23:39 488 2

原创 c++dfs深度搜索 体积

1,题目2,主要思想运用递归实现深度搜索3,解题思路通过递归(此递归分为两部分,选或不选,是本题重点)求出不同的体积,将求出的体积作为下标在数组对应位置+1,然后对此位置所存的数进行判断,若为1则此下标为一个不同的体积vi++,最后输出vi即为所求。4 图形分析5实现代码#include<iostream>#include<string.h>using namespace std;int n,vi=0;int a[21],b[10...

2021-12-01 08:08:36 536 3

空空如也

空空如也

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

TA关注的人

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