
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
题目题目链接题解动态规划。状态定义:dp[i][j]表示前i个砝码是否能称出重量为j的物品。状态转移:对于第i个砝码,选和不选两种情况;对于选又可以分为放在左边和放在右边。看样例,存在加和减的情况,也就是放在左边和右边的情况。我们规定放在左边用加表示,放在右边用减表示。那么第i个砝码的全部情况为第i个砝码不放、放左边或放右边。对于重量为j的物品,如果不放第i个砝码,则dp[i][j] |= dp[
题目小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。他想用它们串成一圈作为手链,送给女朋友。现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?请你提交该整数。不要填写任何多余的内容或说明性的文字。题解考点:全排列函数,STL——string对这12颗珠子进行全排,对于每一种排列方式如果已经出现过,则不统计,如果之前没出现过,则统计下来。最后输出统计的个数。注意几点:见到环形
题目【问题描述】将 3 分解成两个正整数的和,有两种分解方法,分别是 3 = 1 + 2 和3 = 2 + 1。注意顺序不同算不同的方法。将 5 分解成三个正整数的和,有 6 种分解方法,它们是 1+1+3 = 1+2+2 =1 + 3 + 1 = 2 + 1 + 2 = 2 + 2 + 1 = 3 + 1 + 1。请问,将 2021 分解成五个正整数的和,有多少种分解方法?【答案提交】这是一道结
题目题目链接题解根本没看懂什么意思,样例都看不懂。规律:每个城市的期望时间等于所有城市的总度除以该城市的度。代码#include<bits/stdc++.h>using namespace std;int n, m, a, b, sum, d[100];int main(){cin>>n>>m;while(m--) cin>>a>>b,
题目题目链接题解暴力+模拟。枚举每次从哪个位置开始,也就是有n种情况要枚举;对于每一种情况,我们都模拟这个过程,更新最大值,取牌操作结束的条件是还未被取走的数中的最大值都小于报的数了,说明没有办法取走任何一张了,此时结束;注意答案要求获取的牌上的值之和,而不是牌数。代码中:a数组是初始的输入数组,是一程不变的;c数组存储的是每次枚举从哪个位置的数组,存储每种情况;b数组算是临时数组,用于暂存每轮报
题目题目链接题解DFS。真没想到居然是暴力搜索,感觉时间复杂度根本不允许啊。大致思路:每次递归都遍历全部字符串,对于每个字符串,枚举要匹配的长度,在此长度下依次匹配原串的尾与遍历到的字符串的头,完全相同说明可以匹配当前长度,就继续深搜。注意:允许一个字符串用两次。还是觉得离谱。代码#include<bits/stdc++.h>using namespace std;int n, ans
题目题目链接题解暴力DFS。没想到直接暴力DFS就行。暴力选边,对于每条边可以选择选,也可以选择不选;dfs过程可以有两种方式:其一:每次选此边时都先判断一下,选了此边会不会成环,若成环,则不能选此边,若不会构成,则可以选此边。其二:每次选边不进行判断,而是深搜到底且选取边的个数满足要求时,对全部被选的边进行判断,若不构成环则答案加一。两种方式均可,第一种耗时少;两种方式分别对应代码1,代码2。判
题目题目链接题解BFS。主要的特殊点在于加了很多特殊的情况,逐一判断即可。注意vis/st标记数组是三维的第一维是行号,第二维是列号,第三维是能量值,表示是否以该能量值到达过该点。代码#include<bits/stdc++.h>using namespace std;const int N = 1100;int n, k, st[N*N][15];string a[N];int di
题目如下图,有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。 (仅仅连接一个角不算相连)比如,粉红色所示部分就是合格的剪取。题解全排列+递归 或 DFS+递归。与2013年的剪格子几乎一样,但是13年的剪格子由于数据比较特殊,所以纯DFS就可以AC,但是其本质与本题是相同的,如果真正正确,那么不能纯DFS。纯DFS只能实现依次遍历,即S型遍历,但是无法实现T型遍历,而本
题目题目链接题解暴力。遍历从0到n-1的每一个数,个位上的数只能选0 1 2,其他位上的数只要不大于3即可。代码#include<bits/stdc++.h>using namespace std;int n, ans;int main(){cin>>n;for(int i = 0;i < n;i ++) {int x = i;if(x%10 > 2) cont







