自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spfa算法

#include<iostream>#include<algorithm>#include<limits>#include<queue>#include<stack>#include<vector>#include<math.h>#include<string>#include<stdio.h>#include<string.h>#include<cmath&gt

2022-01-20 10:27:10 303

原创 codeforces-round-714-(B到D) 题解

B-AND Sequences题意:给一个非负数组A,数组元素数量为n,数组下标从1到n,在这个数组元素的全排列中,如果有一种排列满足下标i从1到n都能满足:那么这种排列就满足我们美的要求。最后的问题是有多少种这种排列。思路:这里的& 是位与运算,即设a=1,b=3则 a&b等价于0111&=>01位运算有一个很有意思的地方,那就是如果a参与了位与运算,那么最后的结果一定是小于等于a的,换句话说,位与运算只能使一个数变小,或不变(参与运算的另一个数全

2021-04-17 14:45:18 140

原创 CodeForces-Round-704-D-Genius Gambit 题解

题意:给你三个整数a,b,k。找到两个满足一下条件的二进制数,x,y:1 这两个二进制数每个都含有a个0和b个1.2 x-y有且仅有k位1(只含1不含0)限定条件,x和y都不能以0开头。如果这两个二进制数存在,则输出Yes并输出这两个二进制数,否则输出No思路:一开始想的是暴力搜索有多少种字符串,然后暴力求答案. 然后看官网题解,发现了一个很巧妙的构造方法:以4 2 3 为例,k=3,则x-y的结果含且只含三位1,那么我们想,到底怎样两个二进制数相减,可以得到这种只含1的数呢?观

2021-03-08 21:47:00 157

原创 CodeForces-Round-705C-K-beautiful Strings题解

题意:一个字符串是k美的定义:字符串中不同字符出现的总次数能整除k现在给你一个n,k,和一个字符串,n为字符串的长度,让你求一个字符串满足k美的定义并且这个字符串的字典需要尽可能的小(前提是大于等于原字符串)并且长度和原串长度相同,如果答案字符串不存在,输出-1.思路:1:因为要求的字符串要尽可能的小,还必须大于等于原串,那么我们可能的最优解就是原串本身满足k美,直接输出原串。2:如果一个串满足k美,那么说明串的长度是由一组k的倍数组成的(如k=2,n=8,n=2+4+2),所以如果n不

2021-03-08 14:39:19 625 5

原创 POJ - 1458 题解

题意:给你两个字符串,让你求出两个字符串中最长的相同子序列思路:这道题是经典的最长相同子序列的题目,可以用动态规划来做首先定义一个二维数组dp[i][j],并且我们规定,dp[i][j]存的值的意义是字符串a从0到i与字符串b从0到j的最长的公共子序列那么对于每一个dp[i][j],它的值只能来自一下几种情况:1 当a[i]==b[j]时,此时dp[i][j]=dp[i-1][j-1]+1,不懂可以仔细想想dp数组的定义2如果a[i]!=b[j]那么dp[i][j]的值为dp[i-1][

2021-03-06 16:31:32 209

原创 POJ-2484-A Funny Game -题解

#题意:给你n个围成一圈的硬币,每次只能取一个或相邻的两个硬币,(取完一个硬币后,保持其他硬币位置不变,即会出现有硬币不相邻的情况)问你假设先手取的人和后手取的人都采取最优策略,问谁能赢?先手赢输出 Alice,后手赢输出Bob思路:先将n<=4特判,然后依照n的奇偶性来判断首先考虑比较简单,当n为偶数时:因为n是偶数,所以整个硬笔圈是对称的,那么无论你先手怎么取,我后手都可以对称的取和你一样的硬币,这样可以保证每次我都能在你取完后我还能取,这样后手必赢。再考虑当n为奇数的情

2021-03-06 11:04:48 216

原创 HDU-1029题解

题意很简单,给你一堆数字,让你找出这堆数字中相同次数大于 (n+1)/2的思路:一开始想的是map,后来发现还有更省时间和空间的做法: long long a;int b; while (scanf("%d", &n) != EOF) { int num,count; count=0; for (int i = 0; i < n; i++) { scanf("%lld", &a);

2021-02-27 12:34:20 213

原创 POJ-1556题解(附带计算几何模板)

##题意:现在给你一个卧室的平面图,卧室里有0到18堵墙(垂直于x轴的)固定起点(0,5),终点(10,5)在不经过墙的情况下,要求你求出起点到终点的最短路线##思考:首先题目很好理解,即在不撞到墙的情况下从求起点到终点的最短路线首先可以知道,两点之间直线最短,所以最优路线要么是一条直线(起点终点之间没有墙阻挡)要么就是经过某些墙的端点的线段拼接而成(为什么是端点?加入线段不经过端点,比如说从两墙之间的空白穿过,那么线段总可以向上或向下倾斜到墙的端点处,从而长度更小)可以这样想,线段的

2021-02-27 12:30:09 215

原创 HDU-1176

#include <iostream>#include <cstdio>#include <string.h>#include <cmath>using namespace std;long long dp[100050][15];int pies[100050][15];int n;void solve(){// for(int i=n;i>=0;)}/*15 14 16 17 27 28 30*/...

2021-02-27 12:23:18 140

空空如也

空空如也

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

TA关注的人

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