自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P1896 [SCOI2005]互不侵犯 题解

题目链接思路: 记 dp[i][j][k]为第i行状态为j(0代表没有国王,1代表有国王),且已经放置了k个国王的所有方案数。转移方程为dp[i][j][k] += 所有的dp[i-1][v][k-cnt[j]]。最终答案就是dp[n-1][0][m] ~ dp[n-1][(1<<n)-1][m]的和。预处理出所有一行之内互不侵犯的所有方案数。在进行状态转移时要判断和上一行内有无互不侵犯。#include <set>#include <cstdio>#inclu

2021-07-18 19:31:23 271 1

原创 Codeforces Beta Round #108 (Div2) 补题

题目链接模拟#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <map>#include <queue>using namespace std;const int N = 1e4 + 10;typedef long long ll;ll n, m, x, y, k, res;bool vis[N]

2021-05-22 16:35:13 61

原创 Quantity of Strings

原题链接题意:要求用m种字母构造一个长度为n的字符串,使得该字符串的所有长度为k的子串均为回文串,求方案数。思路:分情况讨论case 1 : k = 1, 方案数为 m^ncase 2: k = n 且 n 为奇数, 方案数为m^(n/2 + 1)case 3 : k = n 且 n 为偶数, 方案数为 m^(n/2)case 4 : k < n 且 k为奇数, 方案数为m*mcase 5 : k < n 且 k为偶数,方案数为mcase 6(坑点) : k > n,方

2021-05-16 16:34:09 143

原创 Catching Cheaters (LCS变形)

链接题目大意:给出两个字符串a, b,求max(4lcs(c, d) - |c| - |d|) ,其中,c,d是字符串a,b的子串。思路:记 f[i][j] a串前i个,b串前j个所能构成的最大的4lcs(c, d) - |c| - |d|。如果 a[i] = b[j], 则f[i][j] = f[i-1][j-1] + 4*1 - 1- 1 = f[i-1][j-1] + 2;如果 a[i] != b[j], 则f[i][j] = max{f[i-1][j] - 1, f[i][j-1]

2021-05-09 16:30:42 155

原创 天梯赛总结

这次天梯赛前面还是挺顺利的,几乎都是1a,做完L2的3道题还剩差不多1小时,看了看榜发现L2-3得部分分的也挺多,本以为能取得好成绩,最后一个小时却只得了一分。感觉还是自己太菜了,不知道结构体里可以套数组,实际上我也套过一次数组,不过编译错误了,就以为这种方法不行。之后的时间就都在写暴力,三重for循环,调到最后也没有调对。感觉这次比赛还是挺可惜的,本应该能拿一个更好的成绩,却止步于此。以后还是要多多训练,争取下次能拿一个好成绩。...

2021-04-25 22:11:05 67

原创 poj 2828 Buy Tickets

题意: 插队问题,有n个人,每个人都有一个val,第i个人插在第j(0 <= j < i)个人后面,问最后队列中从前到后的val。思路: 线段树的单点修改。从后往前看,当第i人插到第j个人后面时,他的前面必然有 j个空位。所以当他开始插队时,就可以利用线段树找到要查对的位置。#include <iostream>#include <cstdio>using namespace std;typedef long long ll;const int N = 20

2021-03-23 18:04:24 51

原创 2021年度训练联盟热身训练赛第三场

B. Diagonal Cut注意到,对m和n求一个最大公约数得g,就相当于对角线上有g个(m/g)*(n/g)的大巧克力,如果,m/g 和 n/g均为奇数时,则有一个巧克力棒会被均分,其他情况都不能。#include <bits/stdc++.h>using namespace std;typedef long long ll;ll a, b;int main(){ cin >> a >> b; ll g = __gcd(a, b);

2021-03-22 15:23:18 126 1

原创 训练联盟热身训练赛第二场

F.Interstellar Love题意:给出一张图,判断图里有几个独立的(与其他不连通的)图,单独的点不算一个图,并找出有几个独立的图里有环。思路:利用并查集判断图里有无环,并记录大小,然后再判断有几个独立的图#include <map>#include <stack>#include <vector>#include <cstdio>#include <cstring>#include <iostream>#

2021-03-22 14:39:13 74

原创 2021年度训练联盟热身训练赛第一场E.Early Orders

题意:给出一个长度为n的数组,求这个数组的子序列,其中包含1~k数字各一个,求这些子序列中字典序最小的一个。思路: 应该尽量拿字典序小的那个。可以记录每个数字最后出现位置,然后就是单调栈的应用了…#include <stack>#include <vector>#include <cstdio>#include <iostream>#include <algorithm>using namespace std;typedef l

2021-03-10 17:34:20 108

原创 C. A Tale of Two Lands

题目链接题目大意: 给你一个数列,让你寻找有多少对不同的数使得|x-y|到|x+y|可以覆盖|x|到|y|思路: 分类讨论一下可以得到一个结论当|2a| >= |b| 时可以满足条件。用upper_bound可以求解#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define IOS ios::sync_with_stdio(false)

2021-03-07 16:59:28 95

原创 Codeforces Round #703 (Div. 2)

D. Max Median原题链接题意:给n个数,求不小于k个数的最大的中位数。思路:二分答案mid, 每次查看mid是否符合条件,若符合条件则查看>mid的数是否符合条件,这题的关键也就是check函数的写法。将 >= mid 的数设成1, 将 < mid 的数设成 -1, 若某个区间的中位数 >= mid 则这个区间的和是 >= 1 的 。可以求 >= k的区间的最大值, >= 1记为合法。#include <bits/stdc++.h&gt

2021-02-23 20:18:18 50

原创 Codeforces Round #628 (Div. 2)补题

C.Vacations思路: 记dp[i][0] 表示第i天所能进行的活动(休息,体育活动,打比赛)dp[i][0] = 0 是只能休息,= 1 是只能进行体育活动, = 2 是只能打比赛,= 3 是即可以进行体育活动和打比赛(当然也可以休息,但它显然不能休息)。dp[i][1] 代表到前i天休息的最少天数。转移方程得分类讨论,感觉说不大清, 直接贴代码吧,已添加注释…#include <bits/stdc++.h>#define IOS ios::sync_with_stdio(

2021-02-21 18:23:32 61

原创 Codeforces Round #511 (Div. 2)补题

C. Enlarge GCDhttps://codeforces.com/contest/1047/problem/C题目大意:给一个数组,问最少删除多少个数可使得剩下的数的最大公约数比原来的大。思路:1<=a <= 1.5*10^7,不算大,可以考虑筛法。题目中要求剩下数的最大公约数比原来的最大公约数大,设原数组的最大公约数为g,所以可以用>g的数去枚举原数组中有多少的数可以整除这个数,这些数的最大公约数就是这个数了(不会证…),那么此时要删除的数也就可以求出来了,最后取一个最小

2021-02-07 14:08:19 62

原创 Codeforces Round #491 (Div. 2)补题

C.Candieshttps://codeforces.com/contest/991/problem/C题意: 小王有m个糖果,每天只能吃k个,张三在他吃完后会吃掉剩下的10%(向下取整),当k取多少时,小王吃的糖果数 >= 张三吃的,求k的最小取值。思路:k的取值具有单调性,即k越大小王吃的糖果就越多。所以可以用二分。#include<iostream>#include <cstdio>#include <map>#include <cmat

2021-01-31 14:55:02 66

原创 CF补题

C. Short Program题意:给出一组( <= 5e5)位运算操作,怎么化简成一个不超过五组的位运算操作。思路:考虑到位运算是针对每一位进行的操作,所以对于每一位数,它的可能取值是0或1,最终可能取值有四种,即:0->11->10->01->00->11->00->01->1针对上述四种情况进行讨论:1.可以看出 | 1即可,但应当有三种操作(因为后面的情况会用到别的位操作), 所以可以进行 &1 | 1 ^

2021-01-24 20:41:30 89

翻译 POJ 1664 放苹果

思路:记f(m, n) 为总方案数目1.当苹果数量少于盘子的数量时(即m < n) ,那么必然有n - m 个盘子没有用到,此时f(m, n) = f(m, m);2. 当m >= n 时 ,可以有两种选择:(1) 每个盘子都有苹果,此时的方案总数应等于盘子中所有苹果都减一的方案总数,即 f(m - n, n);(2) 有一个盘子没放苹果,此时方案总数为f(m, n - 1);3.当n = 1时,即只有一个盘子可供选择,此时方案为1,当m = 0时, 即没有苹果放了,此时方案数目.

2020-07-17 13:36:04 131

原创 POJ1221熄灯问题

https://vjudge.net/problem/POJ-1222思路:枚举第一行。从第二行开始,如果上边一行的等还是开的,就按这个开关,直到最后一行。检查等是否全灭掉了,若是就输出按开关的方案。(位运算用的不习惯,就直接用数组了)#include <iostream>#include <cstring>using namespace std;const int N = 10;int t, light[N][N], cnt;int a[N][N], state =

2020-06-15 08:54:58 191

原创 Acwing136 临值查找

有两种做法,一种是用set,将该值装入容器,然后用find查找该值的位置,比较一下下一个和前一个的与该值的差值,选差值小的那个,相等选前面那个,注意别越界.#include <bits/stdc++.h>using namespace std;const int MAX_VAL = 2e9;set<pair<int,int> > a;int main(){ int n; cin >> n; int x; .

2020-06-04 14:37:51 215

原创 快速幂取余

快速幂取余a ^ b % p;快速幂取余,将指数(b)看成二进制数,乘b(例如b = 11001010)个a,底数(a) 不断自增 a = a % p * a %p(a = a^2), b 向右移位;if(b & 1) , 结果就乘a代码:下面展示一些 内联代码片。 #include <iostream> using namespace std; long long a, b, p; int main() { cin >> a >> b

2020-06-03 21:38:07 132

空空如也

空空如也

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

TA关注的人

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