自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客转移

博客转移至:Liang's Blog新博客定位内容较广。此博客仍会不定期更新,但内容将专一化。New Start, But Never End.

2015-07-31 14:12:17 395

原创 线性筛法及扩展

以下代码中的定义: mindiv[i]:i的最小质因子 phi[i]:欧拉函数i的值 mindivq[i]:i的最小质因子的个数 d[i]:i的约数个数 sumd[i]:i的约数和 miu[i]:莫比乌斯函数i的值 inv[i]:i在mod n意义下的乘法逆元标准筛法欧拉筛法,可以保证每个数只被自己最小的质因子筛去,时间复杂度O(n) 两种等价实现 易于理解版:void solve

2015-07-17 20:44:03 2283 4

原创 AcBlog 静态博客生成器使用说明

AcBlog 静态博客生成器使用说明AcBlog 是一个还在开发中的开源博客系统,支持纯静态部署。项目语言:C#框架:ASP.NET Core, BlazorAcBlog 前端使用 WebAssembly 实现,支持 SPA,纯静态部署,后端支持静态和动态部署。以下是静态生成器生成的网站示例。AcBlog GitHub PagesAcBlog Gitee Pages欢迎到 GitHub Star ⭐ 。项目地址:https://github.com/acblog/acblog创建存储库

2020-07-15 09:09:41 243

原创 OJ 题目生成器

项目地址:https://github.com/StardustDL/generator-oj-problem此工具可以规范题目格式,辅助生成题目数据,本地判题检验题目数据,并渲染 Markdown 题目描述,生成可以导入到 OJ 的题目包。目前支持的 OJ:HustOJ(可生成支持直接导入的题目包)generator-oj-problemA CLI tool to generate...

2019-03-15 11:12:19 2405 2

原创 表达式计算器-iExpr

介绍个人设计的一个表达式计算器,支持以下功能带关系运算和逻辑运算的数学表达式解析与计算支持常见数学函数表达式带变量运算,变量赋值运算支持简单求导,定积分求值等运算简单逻辑表达式的解析与计算绘制函数图象打印真值表使用编程方式进行一些复杂运算系统要求:Windows 10 秋季创意者更新(16299)外观数学表达式逻辑表达式函数绘图编程页面下载在这里以下为使用说明。iExpr 使用说明

2017-12-10 00:04:09 2257

原创 Linux 终端 使用

NOI竞赛环境 NOI Linux 一些小技巧:调出终端:Ctrl + Alt + T 输入输出重定向:./app < data.in > sol.out执行一个程序:./appname编译一个CPP:g++ source.cpp -o app -O2进入子目录:cd ChildFolderName回到父目录:cd ..比较两个文件:diff a.out b.out

2016-05-17 22:05:13 499

原创 BZOJ3926-[Zjoi20150]诸神眷顾的幻想乡

题意幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。这时幽香发现了一件非常有趣的事情,太阳花田有n块空地。在过去,幽香为了方便,在这n块空地之间修建了n-1条边将它们连通起来。也就是说,这n块空地形成了一个树的结构。有n个粉丝们来到了太阳花田上。为了

2016-05-16 22:17:47 725

原创 BZOJ2806-[Ctsc2012]Cheat

题意给定一个由m 个01 串组成的字典,根据这个字典和一个阙值L,可以断言一个01 串是否“熟悉,其定义是:把一个串划分成若干段,如果某个段的长度不小于L,且是字典中的某个串的连续子串,则这个段可识别。如果对于给出的串,存在一个划分,使得可识别的长度不小于总长度的90%, 则称这个串是“熟悉”的。先后给出n 个01 串,对于每个给出的串,求使得该串“熟悉”的最大L 值,如果不存在这样的L,输出0。输

2016-05-16 22:16:54 455

原创 后缀自动机初探

定义给定字符串S, S 的后缀自动机(SAM)是一个能够识别S 的所有后缀的自动机一些记号trans(s,x):状态s走x转移到达的状态reg(s):状态s能接受的状态,即trans(s,str)属于end的所有str功能识别后缀:trans(init,str)属于end识别子串:trans(init,str)!=null朴素实现将所有后缀加入Trie树即可,但这样节点数是n^2的。一堆

2016-05-16 22:15:46 1484

原创 Modern UI for WPF 初接触

介绍Modern UI for WPF 是一个WPF界面框架,它在Github(链接)上开源,在VS中可以从Nuget中找到,外观如下:一些东西主区域基于自定义Frame的导航,右上角的Logo是Path路径信息来描述的,不过通过修改项目的源代码可以支持Image(其实就是把类型从Path改成ImageSource)。项目中的配置文件定义了一些公共字符串,如yes,no等。可以在这里改成中文(其实更

2016-05-16 22:10:53 5455 1

原创 正则表达式相关

语法\ 转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反过来 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的零次或多次的子表达式 + 匹配前面的一次或多次的子表达式 ? 匹配前面的零次或一次的子表达式 {n} n是一个非负整数,匹配前面的n次子表达式 {n,} n是一个非负整数,至少匹配前面的n次子表达式 {n,m} m和n均为

2016-05-16 21:50:35 358

原创 动态规划专题学习之一-概述分析

概述动态规划用来解决一些最优化问题,它通过充分利用问题的最优子结构与重复子问题性质来快速求解,应用广泛,思想深刻,也常搭配其他算法与数据结构,灵活度高,思维难度较大(我认为)。三要素状态表示当前的信息转移状态之间的转化决策是否进行转移的判断,选择最优的转移思想基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求

2015-07-17 21:50:29 497

原创 POJ 1853 Cat

题意把一堆浮点数分成两部分,要使得两部分的差值尽量小,小于总大小的2%分析由于有2%的限制,将浮点数转成百分比,再同时扩大10000倍,就转成背包问题:判定分成两部分,其中有一部分大小=i的方案是否存在 最后枚举i,另一部分一定约等于i,这样找到min{sumw-2*i|opt[i]}的i,注意DP时记录方案 输出时沿着方案走即可 注意:此题用bitse

2015-07-17 21:36:24 892

原创 POJ 1742 Coins

题意求多重背包能组成多少种面值分析f[i]表示i能否组成,每次填f[j]时直接由f[j-weight[i]]推出,前提是num[j-weight[i]]代码#include<cstdio>#include<algorithm>#include<cstring>const int MAXN=100000;int cnt[MAXN+3],v[105],c[105];bool opt[MAXN+

2015-07-17 21:34:25 502

原创 POJ 1636 Prison rearrangement

题意M个罪犯,分在两个监狱中,现在尽量交换他们的所在的监狱,但有几对人不能在同一个监狱中,问最大交换多少对人分析注意对于给的一些对,实际上可能组成森林,这样交换就变成了两拨人的交换,这样其实变成了一个二维背包问题具体实现可以染色,也可以像下面的代码一样拆点,记录每个联通块中的两拨人数 注意比较此题与二分图最大独立集的区别,和 Team them up的区别 代码#include<ios

2015-07-17 21:32:57 742

原创 取模运算

运算性质(A+B) mod C = (A mod C + B mod C) mod C (A-B) mod C = (A mod C - B mod C) mod C (A * B) mod C = (A mod C) * (B mod C) mod C对于负数的处理(A-B) mod C=(A%C-B%C+C)%C 加C,使答案在0..C-1内乘法取模若C较大,则容易乘的结果超出long

2015-07-17 18:56:29 1204

原创 POJ 1293 Duty Free Shop

题意两种物品,放到n个盒子,要求所有盒子放满,且每个盒子只有一种物品,物品可以有剩余分析将盒子视为物品,第一种物品为背包大小,进行DP并且记录路径,回溯可得放第一种物品的最优方案(目的是为了是放第二种物品的盒子总容积尽可能小),最后在判断一下就行了。 代码#include<iostream>using namespace std;int M,L,c[1010],dp[1010],n,pre[10

2015-07-16 19:40:56 704

原创 POJ 1276 Cash Machine

题意有各种不同面值的货币,每种面值的货币有不同的数量,请找出利用这些货币可以凑成的最接近且小于等于给定的数字cash的金额。 分析多重背包,但由于只是是否存在的问题,所以可以用类似完全背包的方法,但这个的正确性暂时不会证明 代码#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int

2015-07-16 19:37:04 396

原创 POJ 1661 Help Jimmy

题意中文题面,不解释分析dp[i][0]表示从上数第i层左边到达地面的最小时间,dp[i][1]为从右边的最小时间 先找到下落到的板,然后直接计算即可,记忆化搜索易编 代码#include<iostream>#include<algorithm>#include<cmath>#include<cstring>using namespace std;const int MAXN

2015-07-16 19:24:27 387

原创 POJ 1432 Decoding Morse Sequences

题意给出一个字母的译码表,给出一个有n个单词的字典,给出一串编码。问再给出字典中有多少种不同的解码方式。分析首先编码只有-和.,可以很方便地建立一棵Trie树,还是最熟悉的二叉方式。 然后令opt[i]表示区间[i..len]的方案数 则有opt[i]=sigma{[i..j]组成的单词的个数*opt[j+1]|i<=j代码#include<iostream>#in

2015-07-16 19:21:53 684

原创 POJ 动态规划专题

未归类1015 Jury Compromise 1432 Decoding Morse Sequences 1661 Help Jimmy背包DP1276 Cash Machine 1293 Duty Free Shop 1636 Prison rearrangement 1742 Coins 1853 Cat二维DP1018 Communication System 1112 Tea

2015-07-16 12:34:31 457

原创 POJ 1390 Blocks

题意有一些带颜色的盒子,如果一些相邻的盒子都是相同的颜色,和两个盒子左(如果它存在的话)和其右(如果它存在的话)的其他颜色,我们称之为“盒段”。 每一次,可以单击一个盒子,然后整个段消失。如果这段由k个盒子组成,你会得到k * k点。求最优点数 分析区间DP,一目了然,但是状态并不太好理解: opt[i][j][k]表示[i..j]然后把第j段和其后的k个格子合并的最优解

2015-07-16 12:25:00 382

原创 POJ 1015 Jury Compromise

题意从n个人中选出m个,每个人有固定的p值,d值,要求使m个人的p总和和d总和的差的绝对值最小,若有多解则取两者和最大的。分析f[i][j]表示在选m个人中的第i个人的时候使所有已选中的人的p,d差为j时,所能获得的p,d最大和。 f[i + 1][j + p[k] - d[k]] = f[i][j] + p[k] + d[k];(要求k之前没有选过,要查看f[i][j]的完整路径,确保无k)

2015-07-16 12:22:04 449

原创 FFT 快速傅里叶变换 初探

一直认为很高深的东西其实也并不很难。以下内容部分来自qy大神的ppt,同时结合了自己的理解。但理解还不是很深,需要继续研究。开头首先什么是傅里叶变换:傅立叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。【摘自百度】 注意三角函数的特点!这一点要用到。OI中常用的是离散傅里叶变换,并用FFT加速卷积计算。多项式的表示点值表示法给出N+1个不同的x代入A(

2015-07-14 16:55:34 2588

原创 Tyvj专题 P1094 矩形分割

题目因为要分成1*1的格子,所以每一条边肯定都要切,只不过是切的次数的多少有所不同。 对于每一条纵边来说,它所需要切得次数等于在这条纵向边切之前的已经切的横边的次数。对于横边就看纵边。让代价大的先切,这样的话满足代价大的切得次数少。把横边和纵边排个序,然后不断的维护ans即可。#include<iostream>#include<algorithm>#include<cstring>#inc

2015-07-14 15:54:28 551

原创 Tyvj专题 P1083 分糖果

题目 简单BFS,ans=最远点+m#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<vector> #include<queue>using namespace std;const int MAXN=100000,INF=0x3f3f3f3f;vector<int> g[M

2015-07-14 15:51:13 598

原创 Tyvj专题 P1337 fibonacci数列

P1337题目 注意到n较大,所以不能用递推式求解,要用矩阵乘和快速幂优化。 矩阵乘注意几点:取模,求和。快速幂一定要背过。矩阵乘不一定写的太规范,适用于题目就好,这样也更快。#include<iostream>using namespace std;const int MOD=32768;int mr[2][2]={{1,1},{1,0}},mt[2][2],ans[2]={1,1},a

2015-02-18 12:46:26 514

原创 Tyvj专题 P1159 玛丽卡

P1159题目 题意不太好理解,但理解之后思路就很清晰了:先找最短路,存储这条路上的边,然后每次删除一条边,做最短路,求出这些最短路中的最大值。 数据很坑,首先要自己计算出边数,然后注意INF的取值。并且由于这是无向图,每次要修改两条边的状态,利用异或可以很方便的做到这点。#include<iostream>#include<vector>#include<queue>#include<a

2015-02-18 12:37:33 432

原创 Tyvj专题 数字三角形

数字三角形1 数字三角形2 数字三角形3 数字三角形4 四道题都是数字三角形:第一题就是经典DP;第二题由于需要取模,采用DFS更容易些,并且居然没超时;第三、四题本质相同,必过一个点,可以双向做,交与此点,但更好的方法将这个点的值变大,使得最优解必经这个点,然后普通DP,答案中减去所加数,注意这个极大值要整个数字三角形的数值总和(其实可以稍小一点)。第二题#include<iost

2015-02-18 12:34:50 670

原创 Tyvj专题 P1005 采药

P1005题目 很明显可以转化为零一背包问题,时间为体积。#include<iostream>using namespace std;int at[101],vt[101],f[1000],t,m;int main(){ cin>>t>>m; for(int i=1;i<=m;i++)cin>>at[i]>>vt[i]; for(int i=1;i<=m;i++)

2015-02-18 12:25:12 546

原创 Tyvj专题 P1004 滑雪

P1004题目 遍历每个点,进行DFS,注意要记忆化。#include<iostream>#include<algorithm>using namespace std;int m[101][101],r,c,tans=0,ans=0,f[101][101];void dfs(int x,int y,int step){ if(x>r||x<1||y>c||y<1)return;

2015-02-18 12:22:04 609

原创 Tyvj专题 P1003 越野跑

P1003题目 按题意计算即可。 每跑一段,要加上跑过和返回的时间,满足总时间小于要求时间即可。#include<iostream>using namespace std;int t,m,u,f,d,ans=0,tm;char c;int main(){ cin>>m>>t>>u>>f>>d; for(int i=1;i<=t;i++){ cin>>c;

2015-02-18 12:18:04 614

空空如也

空空如也

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

TA关注的人

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