![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
补题
文章平均质量分 56
蔡珏
这个作者很懒,什么都没留下…
展开
-
daimayuan 国家铁路(前缀和,dp)代码源
1.首先答案必定为 A[x1,y1]+A[x2,y2]+C∗(∣x1−x2∣+∣y1−y2∣)A[x1,y1]+A[x2,y2]+C*(|x1-x2|+|y1-y2|)A[x1,y1]+A[x2,y2]+C∗(∣x1−x2∣+∣y1−y2∣)2.我们想办法去掉绝对值,给选择的两个点规定方向,分别是一个点在左下,一个点右上;一点左上,一个点右下(方向是两个点的相对方向)。1.当左下右上时,维护 m1[i][j]m_1[i][j]m1[i][j] 为左下角到i,ji,ji,j的最小的 C∗(i−j)+A[原创 2022-04-29 00:58:55 · 138 阅读 · 0 评论 -
daimayuan 三回文序列(代码源)
实现方法:1.先二维前缀将每个数字的前缀和保存,再保存他们前缀增加时候的位置(last数组维护)。2.然后枚举从1~26的左边=右边长度(k1k1k1),然后找到他们前缀有k1k1k1个x(范围1−26)x(范围1-26)x(范围1−26),后缀有 k1k1k1 个xxx的下标,然后中间找最大k2k2k2长度,记录最大值即为答案,时间复杂度O(m∗n)O(m*n)O(m∗n).3.详情看注解。/*****************************************************原创 2022-04-11 11:42:01 · 152 阅读 · 0 评论 -
子串分值和(蓝桥杯C组)
首先我们要弄清楚,所有f[i..j]f[i..j]f[i..j]之和,即对于每个下标的字符包含这个下标的字符的子串之和,还要加一点限制,选择的子串只能有一个这个下标的字符。(1).当选择一个子串时,如果重复选择了一个字符,那么这个字符的对答案的贡献变为0,否则只有一个这个字符,对答案的贡献为1。比如f["ab"]=2,但f["aba"]=1。因为‘a’重复选取了f["ab"]=2,但f["aba"]=1。因为‘a’重复选取了f["ab"]=2,但f["aba"]=1。因为‘a’重复选取了再来一个例子.原创 2022-04-06 22:51:55 · 1713 阅读 · 2 评论 -
宇宙人浇花(异或前缀和+trie+思维,最大异或对问题)
题目传送门1.题目大意:a序列的n个数异或和为:a1a1a1 xor a2a2a2 xor a3a3a3 xor a4a4a4…xor ananan可以对一段连续的al..aral..aral..ar加一,操作一次或者不操作,求操作之后的n个数的异或和2.分析题目:最后一定是前面一部分不加一,中间一部分加一,后面一部分不加一,注意每部分可能长度为0维护两个前缀数组:1.b[i]维护前i个a[i]+1的异或和b[i]维护前i个a[i]+1的异或和b[i]维护前i个a[i]+1的异或和2.a[i原创 2021-12-08 13:48:58 · 309 阅读 · 0 评论 -
没有给出二分图两个左右点集时的二分图最大匹配
当题目告诉你,这个图为二分图,而且左百部n1n1n1个点,右半部n2n2n2个点,下面m行,左半边点u与右半边点v相连:此时只需要一个有向图:#include<iostream>#include<algorithm>#include<cmath>#include<cstring>using namespace std;const int N = 10000, M = 2e5 + 10;typedef long long ll;int n1原创 2021-11-24 17:33:36 · 77 阅读 · 0 评论 -
CF1132D Streessful Training(二分+贪心+优先队列*2300)
#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>typedef long long ll;using namespace std;const int N = 3e5 + 10;ll n, k;ll a[N], b[N];struct node { ll a; ll b; ll c; bool oper原创 2021-11-10 21:33:23 · 368 阅读 · 0 评论 -
K-th Number(尺取)
题意:有T组数据。 每组数据给定长度为 N的数组 A,对所有长度大于等于 k 的连续子段,取出其第 k 大放入数组 B 中。求数组 B 的第 M 大。思路:二分答案x检查可行性,x是B数组的第M大所以B数组就有M个大于等于x的数,求有多少个大于X的数就是求有多少个区间的第K大大于X。s[i]表示从1-i大于等于X的数量利用这个求一个区间的第K大是否大于x,再通过尺取长度为K的区间即可。#include<bits/stdc++.h>using namespace std;#define e原创 2021-11-10 15:37:43 · 347 阅读 · 0 评论 -
2017ICPC沈阳区域赛 F
Heron and His Triangle这题目有点恶心,推出来公式:s=t∗(sqrt(3∗(t−2)∗(t+2))/4s=t*(sqrt(3*(t-2)*(t+2))/4s=t∗(sqrt(3∗(t−2)∗(t+2))/4通过 打表知道规律:ans[i]=4*ans[i-1]-ans[i-2];因为数据$4–10^303030所以用高精度或者int128;高精度代码:#include<bits/stdc++.h>using namespace std;const int原创 2021-11-10 00:33:36 · 395 阅读 · 0 评论 -
[NOIP2012]借教室
从线段树的思路来看就是维护区间最小值,对最小值进行更新,某一次小于0,则输出这次为答案我的代码:#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 1e6 + 10;int n, m, a[N];struct node { int l; int r; int lz; int w;} tr[N << 2];原创 2021-11-09 16:43:01 · 59 阅读 · 0 评论 -
牛客xiao白月赛 40
c 数字匹配题目要求最长公共子串长度大于k,那么可以转化一下,改为存在长度为k的公共子串因为字符串长度小于10,可以直接枚举x,y,然后求所有长为k的子串,用个数组存下来求匹配时间复杂度 n2lognn^2lognn2logn#include<bits/stdc++.h>using namespace std;#define x first#define y second# define rep(i,be,en) for(int i=be;i<=en;i++)# defi原创 2021-11-06 18:13:46 · 186 阅读 · 1 评论 -
牛客小bai月赛39 F 孤独(dp)
牛客小白月赛39 F 孤独#include <bits/stdc++.h>using namespace std;typedef long long ll;int ans = INT_MAX, n;int sz[1000006];int dp[1000006];vector<int>vec[1000006];void dfs(int i, int fa) { sz[i] = 1; int mx1 = 0; int mx2 = 0; int mx3 = 0; /原创 2021-10-29 18:52:06 · 86 阅读 · 0 评论 -
2021牛客暑期多校训练营1(补题)
A Alice and Bob解题思路![在这里插入图片描述#include<bits/stdc++.h>using namespace std;typedef long long ll;bool d[5005][5005];void init(){ for(int i=0;i<=5000;i++){ for(int j=0;j<=5000;j++){ if(!d[i][j]){ for(i原创 2021-07-25 10:34:58 · 108 阅读 · 0 评论 -
湖南大学第十六届程序设计竞赛(重现赛)补题题解(更新中)
A.Triangleshttps://ac.nowcoder.com/acm/contest/18196/A首先判断这个是否有角是直角,运用高中https://ac.nowcoder.com/acm/contest/18196原创 2021-07-17 19:53:07 · 959 阅读 · 0 评论