- 博客(21)
- 收藏
- 关注
原创 【YBTOJ】防具布置
思路:我们来二分当前位置上之前有多少个防具,我们发现如果当前位置防具是奇数,那么奇数防具一定在这个位置之前,偶则反之。有了这个东西,我们就可以很好的二分了。(在求防具数量时,只需要O(n)O(n)O(n)的时间复杂度就行了)codecodecode#include<iostream>#include<cstdio>using namespace std;long long t;long long n;long long s[1000010], e[10000..
2020-12-26 16:30:53 124
原创 【YBTOJ】数列分段
思路:这题看到最大值最小,就想到用二分二分答案,每次check一下即可codecodecode#include<iostream>#include<cstdio>using namespace std;long long n, m;long long ans;long long a[1000100];bool check(long long k){ long long s=1, sum=0; for(long long i=1; i<=n; i+..
2020-12-26 14:56:45 89
原创 【YBTOJ】国王游戏
思路:我们首先考虑,怎样进行贪心排序我们设一个si表示前i个a的相乘我们首先考虑排序交换前,第i个上的值是si−1/bis_{i-1}/b_isi−1/bi,第i+1个是si−1∗ai/bi+1s_{i-1}*a_i/b_{i+1}si−1∗ai/bi+1交换后各为si−1/bi+1s_{i-1}/b_{i+1}si−1/bi+1,si−1∗ai+1/bis_{i-1}*a_{i+1}/b_{i}si−1∗ai+1/bi那么我们发现si−1/bis_{i-1}/b_isi..
2020-12-26 11:27:30 106 2
原创 【YBTOJ】畜栏预定
思路:我们可以直接贪心,设置一个数组,来记录当前栅栏状态,每次如果这个栅栏空了,那么其它牛就可以进来吃了。记得先要排序codecodecode#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int n;int a[100000][3];int ans[100000];struct node{ int x, y;}xx[100000];boo..
2020-12-26 08:56:54 121
原创 【YBTOJ】雷达装置
思路:我们首先可以用勾股定理求出每个建筑如果要使雷达能覆盖到它的范围是多少,然后统计有多少个重合区间就行了codecodecode#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;int n;int k;int x[1000], y[1000];struct node{ double l, r;}a[1..
2020-12-26 08:13:25 102
原创 【YBTOJ】奶牛晒衣服
思路:我们这题可以考虑贪心,每次让湿度最大的那件衣服使用烘干机但这时我们发现如果只是暴力做的话,时间复杂度是O(n2)O(n^2)O(n2)的,超时,我们考虑优化我们发现正是因为我们每次都要把每一项都减去晾干程度,所以我们设一个时间t,每一分钟都会加1,然后在判断这件衣服用没用晾干时,只需判断它的湿度是否小于等于t*a就行了codecodecode#include<iostream>#include<cstdio>#include<queue>usi..
2020-12-25 20:41:40 112
原创 【YBTOJ】平铺方案
思路:我们设f[i]表示2*i的方格的方案数为多少,这是我们发现如果想要铺平一个2x2的方格,那么可能有三种情况,也就是||,=和□,但是我们发现还会出现|□|的情况,所以我们不能直接判断||。所以我们直接分成两种情况,第一种是只铺一个|,第二种是铺2x2的方块,那么就有两种情况,所以转移就是f[i]=f[i−2]∗2+f[i−1]f[i]=f[i-2]*2+f[i-1]f[i]=f[i−2]∗2+f[i−1]codecodecode#include<iostream>#incl..
2020-12-25 19:29:50 104
原创 【YBTOJ】传球游戏
思路:这是一道DP题首先我们设f[i][j]表示在第i次传球中,求在j手中的方案数那么从j-1和j+1可以传到它手中,所以转移方程就是f[i][j]=f[i−1][j−1]+f[i−1][f+1]f[i][j]=f[i-1][j-1]+f[i-1][f+1]f[i][j]=f[i−1][j−1]+f[i−1][f+1]当然要特判1和n的情况codecodecode#include<iostream>#include<cstdio>using namespace ..
2020-12-24 16:51:27 106 1
原创 【YBTOJ】数的划分
思路:这道题我们可以先设f[i][j]表示把i分为j份的方案数,那么我们考虑它由哪几种状态转移而来把i-1分成j-1份,然后最好加上一个1可以对它产生贡献把i-j分成j份,就相当于把j份全部加上1,可以对它产生贡献那么递推式就是f[i][j]=f[i][j]+f[i−1][j−1]+f[i−j][j]f[i][j]=f[i][j]+f[i-1][j-1]+f[i-j][j]f[i][j]=f[i][j]+f[i−1][j−1]+f[i−j][j]codecodecode#include&l..
2020-12-24 16:48:11 197 1
原创 【YBTOJ】奇怪汉诺塔
思路:我们都已经知道了3个塔的方案,但我们还是来推一推我们设f[i]表示把i个盘移动到另一个塔上的最优步数,我们考虑先把i-1个盘子移动到别的塔上,那么就是f[i-1],然后在把最大的那个盘子移动到C盘上,用了一步,最后再把i-1个盘子移动到C盘,就是f[i-1]那么所求即为f[i]=f[i−1]∗2+1f[i]=f[i-1]*2+1f[i]=f[i−1]∗2+1然后考虑4塔情况我们设d[i]为把i个盘在4个塔中移动到另一个盘的最优步数,我们先考虑设一个来枚举把j个盘子移动到另一个盘子上的情..
2020-12-24 15:49:04 68
原创 【YBTOJ】错排问题
思路:我们考虑一个k,使它不在原来的位置上,那么就有n-1种可能让后继续考虑,如果那个k放在了n的位置上,那么方案就是剩下n-2个元素错排,就是f[n-2]如果k不在n的位置上,那么就是n-1个元素错排,就是f[n-1]最后所求为(n−1)∗(f[n−1]+f[n−2])(n-1)*(f[n-1]+f[n-2])(n−1)∗(f[n−1]+f[n−2])code:#include<iostream>#include<cstdio>using namespace ..
2020-12-24 15:41:21 67
原创 【SSL1532】递推
Description动态规划的实现形式之一是递推,因此递推在oi中十分重要。在某信息学的分支学科中,LC学会了如何求一阶线性递推数列。由于他现在正在学习主干学科,因此希望知道求出N阶线性递推数列。为此,他了解到以下内容:一个N阶线性递推式是这样的式子: F1=a0Fi-n+a1Fi-(n-1)+…+an-1*Fi-1+an 也就是说,这个数列的每一项都是由他之前的连续N项加权相加所得。其中还包括一个常数an。 例如,当N=2,a0=a1=1,a2=0时,这个式子就是我们熟悉的斐波那契数列。
2020-12-19 11:10:54 158 1
原创 【SSL2514】幼儿园数学题II
Description这天,当一头雾水的LZH同学在考场上痛哭的时候,一旁的YMW早就如切菜一样cut掉了简单至极的第一题,风轻云淡的冲击着满分,然而最后一道题着实难道了他,毕竟是幼儿园副园长树皮和著名毒瘤秋彪为了防止人AK而出的,可是YMW作为ACrush的著名粉丝,向来以AK为目标,永不言败,而他能不能AK就看你了题目是酱紫的,f(n)-f(3)-f(4)-f(5)-…-f(n-3)-f(n-2)=(n+4)(n-1)/2,f(1)=1,f(2)=1求f(n)的前n项和Input输入 一个正整
2020-12-19 09:35:28 134 2
原创 【Luogu_P5550】Chino的数列
题目在这里哟思路:很显然,我们用平常的普通暴力肯定过不了,所以考虑矩阵乘法我们考虑从一个数列转换成另一个数列,直接在转移矩阵中填那个位置上的1就行然后在考虑一个转移矩阵,作为两个数交换的转移矩阵,同样简单推出因为矩阵乘法满足结合律,同时在大小相等时也满足交换律,所以就可以先将两个转移矩阵相乘然后快速幂就行了code:#include<iostream>#include<cstdio>using namespace std;long long a[100][1
2020-12-18 20:15:19 135 1
原创 【POJ3233】Matrix Power Series
DescriptionGiven a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak.InputThe input contains exactly one test case. The first line of input contains three positive integers n (n ≤ 30), k (k ≤ 109) and m (m < 104). Then fo
2020-12-18 19:27:24 88
原创 未完成
#include<iostream>#include<cstdio>using namespace std;long long n, p, k;struct matrix{ long long a[32][32], b[32][32]; long long c[32][32], d[32][32];}A, ans;long long b[1000][1000], bb[1000][1000];void multi(){ long long c[100][100
2020-12-12 17:02:33 45
原创 矩阵乘法例5
题目描述数列f[n]=f[n−1]+f[n−2]+n+1,f[1]=f[2]=1f[n]=f[n-1]+f[n-2]+n+1,f[1]=f[2]=1f[n]=f[n−1]+f[n−2]+n+1,f[1]=f[2]=1的前nnn项和s[n]s[n]s[n]的快速求法思路:考虑矩阵乘法将[fn−1fn−2sn−2n1]\begin{bmatrix}f_{n-1} & f_{n-2} & s_{n-2} & n & 1\end{bmatrix}[fn−1fn−2
2020-12-12 15:06:04 59
原创 矩阵乘法例4
题目描述:数列f[n]=f[n−1]+f[n−2],f[1]=f[2]=1f[n]=f[n-1]+f[n-2],f[1]=f[2]=1f[n]=f[n−1]+f[n−2],f[1]=f[2]=1的前nnn项和s[n]s[n]s[n]的快速求法思路:使[sn−2fn−1fn−2]\begin{bmatrix}s_{n-2} & f_{n-1} & f_{n-2}\end{bmatrix}[sn−2fn−1fn−2]>>[sn−1fnfn−1]\begin{bm
2020-12-12 11:33:07 83
原创 【SSL】P1530 裴波那契数列III
Description求数列f[n]=f[n−1]+f[n−2]+1f[n]=f[n-1]+f[n-2]+1f[n]=f[n−1]+f[n−2]+1的第NNN项.f[1]=1,f[2]=1f[1]=1,f[2]=1f[1]=1,f[2]=1.Inputn(1<n<231−1)n(1<n<2^{31}-1)n(1<n<231−1)Output第NNN项的结果 modmodmod 997399739973Sample Input12345Sample Output8932正题:我
2020-12-12 10:20:52 99
原创 【Luogu】P1962 斐波那契数列
题目背景大家都知道,斐波那契数列是满足如下性质的一个数列:F(n)={1n<=1F(n−1)+F(n−2)n>1F(n)=\begin{cases}1 & \text{n<=1}\\F(n-1)+F(n-2) & \text{n>1}\end{cases}F(n)={1F(n−1)+F(n−2)n<=1n>1题目描述请你求出 FnF_nFn modmodmod (109+7)(10^9 + 7)(109+7)输入格式一行一个正整数
2020-12-12 08:45:39 134
原创 【Luogu】P3390 【模板】矩阵快速幂
题目描述给定 nnn 的矩阵 AAA,求 AkA^kAk矩阵乘法快速幂#include<iostream>#include<cstdio>using namespace std;long long n, k;long long a[200][200];long long ans[200][200];long long p=1000000007;void multi(){ long long c[200][200]; for(long long i=1;
2020-12-12 08:20:21 103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人