自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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−1​class 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=min⁡j&i=jfj+fi−j−lcp(i)f_i=\min\limits_{j\&i=j}{f_j+f_{i-j}-lcp(i)}fi​=j&i=jmin​fj​+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​=A1​Xm(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​=Ak​Xm(k+1)=A1⊕A2⊕⋯⊕AkX_{m(k+1)}=A_1 ⊕A_2⊕\cdots⊕A_kXm(k+1)​=A1​⊕A2​⊕⋯⊕Ak​所以代码就不难了。#include<cstdio&gt

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 完整版

包含 i686-8.1.0-posix-dwarf-rt_v6-rev0、i686-8.1.0-posix-sjlj-rt_v6-rev0、x86_64-8.1.0-posix-seh-rt_v6-rev0、x86_64-8.1.0-posix-sjlj-rt_v6-rev0、x86_64-8.1.0-release-win32-seh-rt_v6-rev0、x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0 六个版本,其中 i686 即为 32 位 Windows 操作系统,x86_64即为 64 位 Windows 操作系统。 包含 c++/gcc98、c++/gcc11、c++/gcc14、c++/gcc17,如果要使用 c++17 编译,请注意如果是 64 位 Windows 操作系统要打开 \lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++\x86_64-w64-mingw32\bits\stdc++.h,并删除第 127 行的 `#include <filesystem>`,32 位就不用了。

2022-04-14

uoj-data-converter.zip

UOJ Data Converter

2021-09-21

洛谷【LGR-(-11)】CSP 2020 第一轮(初赛)模拟

洛谷下载不了这里可以下载! 洛谷下载不了这里可以下载! 洛谷下载不了这里可以下载! 洛谷下载不了这里可以下载! 洛谷下载不了这里可以下载!

2020-10-08

压位高精度模板,支持负数

自己写的压位高精度支持负数,保证无bug,单精高精运算时不会像其他人一样偷懒直接类型转换再运算,会很慢,可以+-*/%以及快速幂,压位大小可以自己改(不过输出流重载的地方也要改一下)

2020-04-25

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

TA关注的人

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