上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 29 下一页
摘要: 很像贪心的dp啊 这个定金尾款的设定让我想起了lolita和jk制服的尾款地狱…… 设f[i][j]为从j到i的付定金的最早月份然后从f[k][j 1]转移来,两种转移f[i][j]=min(f[i][j],f[j 1][k]+1)是当前这个月付[k 1,j 1]的尾款和[j,i]的定金,f[i][ 阅读全文
posted @ 2018-06-16 10:35 lokiii 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 枚举分母,然后离他最近的分子只有两个,分别判断一下能不能用来更新答案即可 cpp include include include using namespace std; int a,b,aa,ab; double mx=10; void wk(int x,int y) { if(x b==y a) 阅读全文
posted @ 2018-06-09 14:17 lokiii 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 就是区间dp啦f[i][j]表示以i开头的长为j+1的一段的答案,转移是f[i][j]=s[i+l] s[i 1]+min(f[i][j 1],f[i+1][j 1]),初始是f[i][1]=a[i] 于是可以把j维推掉 cpp include include using namespace std 阅读全文
posted @ 2018-06-08 17:25 lokiii 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 本来是冲着搜索去的……其实可以贪心 因为能改变第一位的只有第一位和第二位,然后改完之后后面的同理,也就是说只要贪心的推一遍就可以 但是注意要在翻第一个和不翻第一个之间取个min cpp include include include using namespace std; const int N= 阅读全文
posted @ 2018-06-07 16:11 lokiii 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 欸我一直以为双向bfs是搜完一半再搜另一半呢,妹想到是两个一起搜 然后队列里放的结构体里不能直接存答案,所以做一个邻接表一样的东西,直接指向需要的字符即可 记录状态用康托展开来hash 以及居然是多组数据啊?! cpp include include include include using na 阅读全文
posted @ 2018-06-06 18:46 lokiii 阅读(185) 评论(0) 推荐(0) 编辑
摘要: A. Infinity Gauntlet 模拟就行了(不过这个题面啊……) cpp include include include include using namespace std; int n; string s[10]; maphas; mapv; int main() { has["pu 阅读全文
posted @ 2018-06-02 14:36 lokiii 阅读(165) 评论(0) 推荐(0) 编辑
摘要: A. Antipalindrome 还以为是什么神dp结果就是分情况讨论啊 原串是一串一样的字符的话输出0,是回文串的话输出n 1,否则直接输出原串长度 cpp include include using namespace std; const int N=200005; int n,d[N],s 阅读全文
posted @ 2018-06-02 14:22 lokiii 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 就是套路咯,设s[i]为1+2+...i 首先列出dp方程\\( f[i]=min(f[j]+a[i]+(i j) i (s[i] s[j])) \\) 然后推一推 $$ f[i]=f[j]+a[i]+(i j) i (s[i] s[j]) $$ $$ f[i]=f[j]+a[i]+i i i j 阅读全文
posted @ 2018-05-31 11:33 lokiii 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 这个可以用异或高斯消元,但是~~我不会呀~~我用的暴搜 2的m次方枚举第一行的翻转情况,然后后面的就定了,因为对于一个j位置,如果i 1的j位置需要翻,那么一定要翻i的j,因为这是i 1的j最后翻的机会 按字典序搜索然后取次数min即可 cpp include include include inc 阅读全文
posted @ 2018-05-26 22:29 lokiii 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 我会斜率优化了!这篇讲的超级棒https://blog.csdn.net/shiyongyang/article/details/78299894?readlog 首先列个n方递推,设sf是f的前缀和,st是t的前缀和: $$ f[i]=min(f[j]+s (sf[n] sf[j])+st[i] 阅读全文
posted @ 2018-05-26 11:55 lokiii 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 最大流生动形象的板子,注意数组开大点 cpp include include include include using namespace std; const int N=100,inf=1e9; int n=26,m,h[N],cnt=1,s=1,t=26,le[N],x; char s1[5 阅读全文
posted @ 2018-05-25 18:25 lokiii 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 首先O(n^3)的贪心很好想,就是枚举k然后从前往后扫,扫到反就翻转区间 然后考虑优化掉翻转区间维,就是搞成差分的形式,在翻转区间的尾部打上标记,再用一个变量维护当前的翻转次数,加到当前状态上来判断是否需要翻转即可 cpp include include include using namespac 阅读全文
posted @ 2018-05-25 18:09 lokiii 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 算是比较经典的高斯消元应用了 设f[i]为i点答案,那么dp转移为f[u]=Σf[v] (1 p/q)/d[v],意思是在u点爆炸可以从与u相连的v点转移过来 然后因为所有f都是未知数,高斯消元即可(记得输出大难的时候除以总概率和) cpp include include using namespa 阅读全文
posted @ 2018-05-25 17:09 lokiii 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 其实是可以斜率优化的但是没啥必要 设st为花费时间的前缀和,sf为Fi的前缀和,f[i]为分组到i的最小花费 然后枚举j转移,考虑每次转移都是把j到i分为一组这样意味着j及之后的都要增加s的时间,同时增加这段的结束时间/ F,取min即可 cpp include include using name 阅读全文
posted @ 2018-05-25 14:45 lokiii 阅读(266) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-05-17 18:54 lokiii 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 枚举建图.jpg 一开始建的图挂了,于是枚举了几种建图方式…… 因为要删点,所以拆点,连接(i,i',1),对于原来图上的边(u,v),连接(u',v,inf),(v',u,inf),然后连接(s,i',inf),对于不能和1相连的点x,建边(x,t,inf) 跑dinic即可 原因的话,~~枚举出 阅读全文
posted @ 2018-05-09 21:18 lokiii 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 我%&&……&()&%????? 双模hashWA,unsigned long longAC,而且必须判断hash出来的数不能为0???? 我可能学了假的hash 这个题求个前缀和,然后目标是找到距离当前位置最远,且能使这两个数组差分后2—k位相同 hash把差分后数组的2到k位压起来即可,用map 阅读全文
posted @ 2018-05-09 19:37 lokiii 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 几乎是板子,求有几个size 1的scc 直接tarjan即可 cpp include include include using namespace std; const int N=10005; int n,m,h[N],cnt,ans,tmp,dfn[N],low[N],s[N],top; b 阅读全文
posted @ 2018-05-09 17:32 lokiii 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 满脑子组合数学,根本没想到dp 设f[i][j]为前i只蚂蚁,选出j只的方案数,初始状态为f[0][0]=1 转移为 $$ f[i][j]=\sum_{k=0}^{a[i]}f[i 1][j k] $$ $$ f[i][j]=\sum_{k=max(j a[i],0)}^{j}f[i 1][k] $ 阅读全文
posted @ 2018-05-09 17:26 lokiii 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 按左端点排序,贪心的选即可 cpp include include include using namespace std; const int N=10005; int n,l,p,ans; struct qwe { int x,y; }a[N]; bool cmp(const qwe &a,co 阅读全文
posted @ 2018-05-09 16:10 lokiii 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 二分答案,贪心判定 阅读全文
posted @ 2018-05-09 15:40 lokiii 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 用单调递减的栈从后往前扫一遍即可 cpp include include using namespace std; const int N=1000005; int n,s[N],top,a[N],ans[N]; int read() { int r=0,f=1; char p=getchar(); 阅读全文
posted @ 2018-05-09 15:01 lokiii 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 裸的区间dp,设f[i][j]为区间(i,j)的答案,转移是f[i][j]=max(f[i+1][j]+a[i]\(n j+i),f[i][j 1]+a[j]\ (n j+i)); cpp include include using namespace std; const int N=2005; 阅读全文
posted @ 2018-05-09 14:50 lokiii 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 首先来分析一下,这是一张无向图,要求没有两条路联通的点对个数 有两条路连通,无向图,也就是说,问题转化为不在一个点双连通分量里的点对个数 tarjan即可,和求scc还不太一样…… cpp include include using namespace std; const int N=5005; 阅读全文
posted @ 2018-05-09 14:40 lokiii 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 居然要用高精度! 懒得operator了,转移是裸的完全背包 cpp include include using namespace std; int n,k,f[1005][45]; int read() { int r=0,f=1; char p=getchar(); while(p '9'|| 阅读全文
posted @ 2018-05-09 11:56 lokiii 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 这个和bzoj同名题不一样,有多个匹配串 但是思路是一样的,写个AC自动机,同样是开两个栈,一个存字符,一个存当前点在trie树上的位置,然后如果到了某个匹配串的末尾,则弹栈 cpp include include include include using namespace std; const 阅读全文
posted @ 2018-05-09 11:46 lokiii 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 好久没写kmp都不会写了…… 开两个栈,s存当前串,c存匹配位置 用t串在栈s上匹配,栈每次入栈一个原串字符,用t串匹配一下,如果栈s末尾匹配了t则弹栈 cpp include include include using namespace std; const int N=1000005; int 阅读全文
posted @ 2018-05-09 10:49 lokiii 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 参考:https://blog.csdn.net/mars_ch/article/details/53011234 我背包真是好不熟练啊…… 第一天买了第三天卖相当于第一天买了第二天卖第二天再买第三天再卖。所以问题转化成完全背包,每天转移即可 cpp include include include 阅读全文
posted @ 2018-05-09 09:13 lokiii 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 洛谷的数据毒啊 把(i,j,k)作为一个点spfa,表示点(i,j)朝向k方向,然后向四个方向转移即可 cpp include include include using namespace std; const int N=105,inf=1e9,dx[]={ 1,1,0,0},dy[]={0,0 阅读全文
posted @ 2018-05-09 08:24 lokiii 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 把关系变成有向边,稍微想一下就是要求在有向图中不能到达的点对个数,这个可以用Floyd传递闭包来做,但是n^3的复杂度跑不了1000 考虑bitset优化! 因为传递过程只会出现0和1,用bitset完全没问题,而且重要的是bitset可以进行位运算,一下转移一整行:如果j能到i,也能到i能到的所有 阅读全文
posted @ 2018-05-08 21:37 lokiii 阅读(110) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 29 下一页