思路: 用一个类似筛的东西,把不可以表示的筛出来,那就是B的货币系统 c o d e code code #include<iostream>
题目链接:点我点我 Problem StatementSnuke has a blackboard and NN candies. The tastiness of the ii-th candy is aiai. He will repeat the operation below until he has no more candy. Choose one or two of his candies and eat them (of course, they disappear). The
ARC121D 1 or 2 解题思路 首先考虑简化问题。 假设只能一次吃两个糖,那么显然可以贪心。 我们假设 \(n\) 是偶数,那么最优的就是排完序后首尾相加,依次向里靠拢。简单证明一下: 假设有 \(a<b<c<d\),那么 \(\max(a+d,b+c)\leq\max(a+c,b+d)\)。\(\min\) 同理,所以我们的贪心是最优的。 我
Median Queries 题解 首先,我们得找到两个相差不超过 ⌊ n − 1 3
题目描述 给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。 一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。 返回一对观光景点能取得的
题目描述 给你一个整数数组 nums 和一个整数 k 。区间 [left, right](left <= right)的 异或结果 是对下标位于 left 和 right(包括 left 和 right )之间所有元素进行 XOR 运算的结果:nums[left] XOR nums[left+1] XOR … XOR nums[right] 。 返回数组中 要更改的
注意点 第二个交错求和要用个数来记录是否有数字满足 而不是判断是否为0 否则有一个点不过 AC代码 #include<iostream> using namespace std; int a1,a2,a3,a4,a5; int fl=1; int maxx=-1; int i,j,k; int main() { int n; cin>>n; int x; while(n--) { cin>>x;
1.欧拉回路:定义:经过图(有向图或无向图)中每条边一次且仅一次并且行遍图中每个顶点的回路( 闭合的欧拉路径,即一个环,保证每条边都通过且仅通过一次)。 2.问题2:判断一个图是否有欧拉路径: (1)图G是连通的,无孤立的点。 (2)有向图每个点的入度等于出度。 (3)有向图,可以存在两个点,其入度不等于
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=6606 目录 题意分析Code 题意 有n本书,你需要把它分成k组,每组必须有一个,而且分组必须是连续的,最后多余的书可以丢掉。每组书的权值和为 s u
例如;如下图,构造一棵最小生成树 构造过程: #include<iostream> #include<algorithm> #include<cstring> #include<iomanip> #include<cmath> using namespace std; const int maxx=505; const int inf=0x3f3f3f3f; int e[maxx][maxx];//记录两点之间的权值 int n
fzoj4493 糟糕的网络_题解 20pts m = n − 1 m=n-1 m=n−1,是一棵树的情况,直接求出
一个数字3开始,每次递增3(步长为3),到100截止,求显示累计求和过程,以及结果 代码如下: summ=0for i in range(3,100,3):print(i)summ=summ+iprint(summ) 代码说明: 1.先定义一个累计递加的值summ(从0开始) 2.range()函数,第一参数为开始值,第二参数为结束值(注意,i的值不会等于或大于结束),第三
思路: 水题,略过 Tip: 无 #include <bits/stdc++.h> using namespace std; int main() { int maxx = -1, minn = 0x3f3f3f3f; int cntmax = 0, cntmin = 0; int n; cin >> n; for (int i = 1; i <= n; i++) { int a; cin >
class Solution { public: vector<int> largestDivisibleSubset(vector<int>& nums) { int p[1001],q[1001]; memset(q,0,sizeof(q)); sort(nums.begin(),nums.end()); int i,j; for(i=0;i&l
题意:要求改动公司数量最少并且效率最大(效率最大也就是最大完美匹配) 其中有一个最大的问题就是最少改变公司数量(也就是最少改变多少条边) 这个知识点我也是看了网上的,关于这个知识点我也感觉很神奇。除了这个问题其他的都是模版问题了。 可以把每条边的权值扩大k倍,并且k要大于n
题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输出:[[1,6],[8,10],[15,18]] 解释:区
POJ3264 /* 算法过程: 1.构建线段树 2.在线段树中插入数据 3.对线段树进行更新(该题无更新操作)和查询 */ #include <cstdio> #include <algorithm> using namespace std; const int INF = 0xffffff0; struct node{ int l; //区间左端点 int r; //区间右端点 //下面是
记录自己做题的时候犯的错误 题目第一遍做法第二遍做法 单纯记录一下蒟蒻的敲代码练习过程 题目 洛谷搜P1888 第一遍做法 有点晕乎,第一遍看题认为只要选出最小边和最大边就可以,但跑了一次,只有80分,自己运行的时候发现6 8 10这组数据,得数没有约分。。。(很烂的代码) #inclu
先贴上题目练习 密码20210401 DP之旅开始了~ A 基础方程:dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j]; 这样是考虑[i][j]位置可由哪个位置过来 B 巨巨巨坑!看题容易漏条件: 如果当前格子是(x,y),下一步可以是(x+1,y),(x,y+1)或者(x,y*k)其中k>1。 /* 前提dp[i][j]=-inf;定
#include<bits/stdc++.h> using namespace std; const int maxx=1005; struct node{ int x,y; string str; node(int _x,int _y,string _str){ x=_x; y=_y; str=_str; } }; queue<node>q; int x[4]={1,0,0,-1}; int y[4]={0,-1,1,0}; int vis[maxx][max
思路 数据范围比较小 我们可以n方枚举区间 然后求一下字母前缀 然后更新最小值最大值即可 class Solution { public: int beautySum(string s) { int a[505][26]={0}; for(int i=0;s[i];i++){ if(i==0){ a[0][s[i]-'a']++;
最大均值 Description--解题思路--代码-- Description– 高效进阶「基础算法」第3章 二分算法课堂过关 例题3 解题思路– 二分答案 把所选子串每个数减去mid,若子串和仍为正数,则该子串的平均值大于mid 代码– #include <iostream> #include <cstdio> #include <cmath>
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2: 输入:nums = [1]输出:1示例 3: 输入:nums = [0]输出:0示例 4: 输入:nums = [-1]输
动态规划dp; 方法一(超时): #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int maxx=500; int d[maxx][maxx]; int a[maxx][maxx]; int n,m; int dfs(int x,int y){ if(d[x][y]==0){ d[x][y]=a[x][y]+max(dfs(x+1,y),df
目录题目翻译题目解析代码 题目传送门 题目翻译 你需要维护一个序列,让它满足一下操作: 插入一个数字 删除一个数字,保证这个数字是存在 在每次删除和插入之后查询这些数字是否可以组成一个正方形和矩形 题目解析 为了方便,我们可以开一个桶,这样就变成了: 单点修改 区间查询最大值、