- 博客(21)
- 资源 (4)
- 问答 (4)
- 收藏
- 关注
原创 CCC 加拿大国赛第一轮S组t3 Unfriend--zhengjun
树形 dpdpdp用 fif_ifi 表示在编号为 iii 的子树中共有多少种方案。显然,fu=∏v⊆sonufv+1f_u=\prod\limits_{v\subseteq son_u}{f_v}+1fu=v⊆sonu∏fv+1后面的那个 111 就是考虑自身不要的情况。最后答案要减掉这个 111代码#include<cstdio>using namespace std;int n,x;struct edges{ int to,nex;}edge[1001];i
2020-10-27 19:59:14 239 1
原创 买股票问题总结--zhengjun
1.leetcode121. 买卖股票的最佳时机–zhengjun2.leetcode122. 买卖股票的最佳时机 II–zhengjun3.leetcode123. 买卖股票的最佳时机 III–zhengjun4.leetcode188. 买卖股票的最佳时机 IV5.leetcode309. 最佳买卖股票时机含冷冻期–zhengjun6.leetcode714. 买卖股票的最佳时机含手续费–zhengjun...
2020-10-20 20:40:37 139
原创 leetcode714. 买卖股票的最佳时机含手续费--zhengjun
用 fi,0f_{i,0}fi,0 表示到了第 iii 天,当前买了股票的最大利润;fi,1f_{i,1}fi,1 表示到了第 iii 天,当前没有买股票的最大利润。(还是不一定要刚好第 iii 天满足这个条件,可以 1→i1\to i1→i 中的某个值满足)显然,递推式就是f[i][0]=max(f[i-1][0],f[i-1][1]-a[i]);f[i][1]=max(f[i-1][1],f[i-1][0]+a[i]-k);//注意要在卖出的时候付这个手续费代码class Solutio
2020-10-20 20:36:10 119
原创 leetcode309. 最佳买卖股票时机含冷冻期--zhengjun
因为这里有一个冷冻期,这就十分不好处理。所以我们用 fi,0f_{i,0}fi,0 表示当前买来了股票,fi,1f_{i,1}fi,1 表示当前没有股票,处于冷冻期,fi,2f_{i,2}fi,2表示当前没有骨片也不处于冷冻期。(这个不一定是要在 iii 这个点满足条件,也可以在 1→i1\to i1→i 之间某个值满足这个东西)转移方程显然是f[i][0]=max(f[i-1][2]-a[i],f[i-1][0]);f[i][1]=max(f[i-1][0]+a[i],f[i-1][1]);
2020-10-20 20:30:24 124 1
原创 leetcode188. 买卖股票的最佳时机 IV
先用 fi,jf_{i,j}fi,j 表示第 iii 次交易,这次交易到 jjj 的最大利润。这样 fif_ifi 就可以从 fi−1f_{i-1}fi−1 那里直接得到,(参见leetcode123. 买卖股票的最佳时机 III–zhengjun还要注意一下空间,要滚动代码class Solution {public: int n,f[2][10001]; int maxProfit(int k,vector<int>& a) { int
2020-10-20 20:21:47 228 1
原创 leetcode123. 买卖股票的最佳时机 III--zhengjun
用 fif_ifi 表示 1→i1\to i1→i 交易一次的最大利润用 ffiff_iffi 表示 1→i1\to i1→i 交易二次的最大利润class Solution {public: int n,f[100001],ff[100001]; int maxProfit(vector<int>& a) { n=a.size(); memset(f,0,sizeof(f)); int minx=0x3fffff
2020-10-20 20:16:30 168
原创 leetcode122. 买卖股票的最佳时机 II--zhengjun
因为这道题可以交易任意次,所以,只要下一个比上一个大,那么肯定是取下一个更优。如果从上一个开始买来,那么比原来的方案优了 ai−ai−1a_i-a_{i-1}ai−ai−1,如果从之前的买来,那么还是比原来的方案多了 ai−ai−1a_i-a_{i-1}ai−ai−1class Solution {public: int maxProfit(vector<int>& a) { int n=a.size(); int ans=0;
2020-10-20 20:03:05 117
原创 leetcode121. 买卖股票的最佳时机--zhengjun
思路因为只有唯一一次的交易次数,所以肯定要在前面选一个小的,在后面选一个大的。用 minxminxminx 维护当前 1→i−11\to i-11→i−1 的最小值,然后就直接更新答案就可以了。代码class Solution {public: int maxProfit(vector<int>& a) { int minx=0x3fffffff,ans=0; for(int i=0;i<a.size();i++){
2020-10-20 19:49:41 111
原创 暑假集训总结--zhengjun
学习sasasa这次集训我在考试(楼下机房)中遇到了一道题,结果发现是个sasasa后缀数组题然后——我就学了sasasa后缀数组,学了一个晚上,结果发现,连模板题都是紫色的!!!!就这样,我就多 AAA 了 333 道紫题和 111 道黑题。听北大学长讲课(ljn)(ljn)(ljn)第一天是讲杂题,主要是一些二进制优化第二天是将水体,主要就是一个贪吃蛇记录状态的一个优化把 4n4^n4n 优化成 4×3n−14\times 3^{n-1}4×3n−1第三天我记得最清楚,就是讲了鹰蛋问题,把
2020-10-07 16:19:53 190
原创 数据结构模板(循环队列,优先级队列,树状数组,线段树,哈希,后缀数组)--zhengjun
class cirqueue{ #define maxl 100000 private: item q[maxl]; int head,tail; int len; public: cirqueue(){ memset(q,0,sizeof(q)); head=tail=len=0...
2020-10-07 16:19:45 273
原创 洛谷P2312 解方程题解--zhengjun
一看就不能用求根公式首先,因为 aia_iai 很大,如果要高精度的话,时间复杂度都过不去。那么,我们考虑把这个大数取模,这样如果弄出来是零,这个值就有可能是一个根。这个模数最好是一个大质数,这样正确率会高一点代码#include<bits/stdc++.h>#define ll long long#define mod 998244353using namespace std;int n,m;char c;ll a[101],ans[1000001];ll get(i
2020-10-07 16:11:02 141
原创 BZOJ1658滑水题解--zhengjun
因为每一条边都要走个遍,所以如果一个点的入度等于出度,那么在这个点一定不用走路。如果一个点的入度小于出度,那么肯定还要从其他的点走路到这个点如果一个点的入度大于出度,那么肯定还要从这个店走路到其他的点现在,我们只要知道每一个点的入度减掉出度。比如样例很显然,让 ②②② 和 ①①① 一起,④④④ 和 ⑤⑤⑤ 一起,走路的路程最少但是如果是这样-1 2 -1 3 1 -2 -2不能刚好两个匹配的话显然,一个负数一定是和最近的一个正数,一个正数一定是和最近的一个负数,那么,怎么找最近的
2020-10-07 16:05:30 954 3
原创 洛谷P1987 摇钱树题解--zhengjun
首先,如果 nnn 个都要选,那么显然,应该先把 bbb 值大的先选掉,这样浪费最小。基于这种想法之上,我们就可以先按 b 排个序,然后 dpdpdp用 fi,jf_{i,j}fi,j 表示在前 iii 个中选了 jjj 个的最大金币数所以递推式就十分显然,fi,j=max(fi−1,j+fi−1,j−1+max(0,ai−pi×(j−1)))f_{i,j}=\max(f_{i-1,j}+f_{i-1,j-1}+\max(0,a_i-p_i\times (j-1)))fi,j=max(fi−1
2020-10-07 15:39:46 347 1
原创 加拿大国赛CCC2014 S5 题解--zhengjun
首先,可以爆搜,不过分比较少。然后,我们可以算出每条边,然后把边按照距离排个序。就可以转换成线性 dpdpdp用 fif_ifi 表示到了第 iii 条边最多可以拿到几个点心但是,还有一点要考虑,如果有一坨边的距离都一样,那么应该取走那条边呢。所以,我们可以另外开一个数组记录一下就可以了代码#include<cstdio>#include<algorithm>using namespace std;int n,m,tot,x[2001],y[2001];stru
2020-10-07 15:27:12 628
原创 CF922C Cave Painting题解--zhengjun
其实是一道结论题。因为模完之后一定有 kkk 个取模后的结果,而每一个取模之后的结果都在 [0,k−1][0,k-1][0,k−1]中。n%1=0n\%1=0n%1=0。而 n%2n\%2n%2 不能和 n%1n\%1n%1 的结果相同,所以n%2=1n\%2=1n%2=1同理得,n%3=2n\%3=2n%3=2⋯\cdots⋯n%k=k−1n\%k=k-1n%k=k−1所以,直接验证皆可以了。优化:如果 k>20k>20k>20 直接输出 NoNoNo代码#inclu
2020-10-07 14:28:10 201
原创 洛谷P1219 [USACO1.5]八皇后 Checker Challenge题解--zhengjun
一看题目,搜索题啊。首先,枚举排列,然后验证是否在同一条斜线上设有两个点是 i,ji,ji,j那么如果他们在从左上到右下↘的斜线上,那么一定满足Xi−Yi=Xj−YjX_i-Y_i=X_j-Y_jXi−Yi=Xj−Yj如果他们在从左下到右上↗的斜线上,那么一定满足Xi+Yi=Xj+YjX_i+Y_i=X_j+Y_jXi+Yi=Xj+Yj所以打出代码:#include<cstdio>#include<cstring>using namespace std
2020-10-06 10:24:15 188
原创 洛谷P3405[USACO16DEC]Cities and States S题解--zhengjun
一道哈希题。因为只有两个关键字,直接用进制哈希。然后存到一个数组里面,每次边更新答案边哈希代码#include<cstdio>using namespace std;int n;char a[100],b[100];int get1(int i){//对城市开头的哈希 return (((a[0]-'A')*26+a[1]-'A')*26+b[0]-'A')*26+b[1]-'A';}int get2(int i){//对洲代码开头的哈希 return (((
2020-10-05 16:31:17 1318 1
原创 洛谷P6289[COCI2016-2017#1]Vještica题解--zhengjun
看数据可以猜测:这是一道状态压缩的动态规划题没错。我们用 fif_ifi 表示在 iii 状态下最少需要多少节点。那么转移方程就是:fi=minj&i=jfj+fi−j−lcp(i)f_i=\min\limits_{j\&i=j}{f_j+f_{i-j}-lcp(i)}fi=j&i=jminfj+fi−j−lcp(i)这个 lcp(i)lcp(i)lcp(i) 就是在 iii 状态下,每一个字符串的最长公共的前缀(只要能并到一起就并到一起)最后,枚举子
2020-10-05 16:24:22 381
原创 qzezoj[Moocast-S]题解--zhengjun
nnn 次 dfsdfsdfs 即可,细节见代码直接用两点间距离公式:d=(x1−x2)2+(y1−y2)2d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}d=(x1−x2)2+(y1−y2)2看一下能不能从 uuu 到 vvv,如果可以的话,就继续搜下去,否则就回溯。#include<cstdio>#include<cstring>#include<cmath>using namespace std;int n;struct z
2020-10-05 16:17:53 261
原创 qzezoj梦境题解--zhengjun
其实不难,手推一下就发现规律:Xm(k+1)+1=A1X_{m(k+1)+1}=A_1Xm(k+1)+1=A1Xm(k+1)+2=A2X_{m(k+1)+2}=A_2Xm(k+1)+2=A2⋯\cdots⋯Xm(k+1)+k=AkX_{m(k+1)+k}=A_kXm(k+1)+k=AkXm(k+1)=A1⊕A2⊕⋯⊕AkX_{m(k+1)}=A_1 ⊕A_2⊕\cdots⊕A_kXm(k+1)=A1⊕A2⊕⋯⊕Ak所以代码就不难了。#include<cstdio>
2020-10-05 16:11:53 226
原创 qzezoj1755球赛题解--zhengjun
传送门:主题库/比赛里题目大意给你 nnn 个数,你可以选一个数让他插到原数组中的任意位置,经过多次操作后,使得每一个第 111 到 kkk 小的数都在 k+1k+1k+1 到 k+nk+nk+n 位置中,每一个第 k+1k+1k+1 到 k×2k\times2k×2 小的数都在 k+1k+1k+1 到 k×2k\times2k×2 位置中,⋯\cdots⋯,每一个第 n−k+1n-k+1n−k+1 到 nnn 小的数在 n−k+1n-k+1n−k+1 到 nnn 位置中。求最小的操作次数思路因为这
2020-10-05 15:57:11 230
MinGW64 32/64位 Windows 完整版
2022-04-14
洛谷【LGR-(-11)】CSP 2020 第一轮(初赛)模拟
2020-10-08
压位高精度模板,支持负数
2020-04-25
我写了一个程序,以下是一个片段,如何用另一种方法实现以下代码,线性复杂度
2020-04-09
为什么我重载了运算符之后就会RE,然后如果把函数中的内容直接放在主函数里面就可以的?
2020-04-05
testlib应该放在Dev-C++的哪一个文件夹才可以在编译时通过
2020-03-25
主板如何编写程序,想要连接一个红外线测温仪怎么弄?
2020-03-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人