ICode9

精准搜索请尝试: 精确搜索
  • 模板 - 线段树2019-05-28 12:53:29

    这里是以区间最大值为例,要修改成其他的运算,注意修改每个函数的运算以及query中返回的无关值。 这里的区间最大值设置的最小元素为-1(在query中表示与当前区间不相交的区间的结果)。 注意因为调用的方式传入l与r是(1,n),所以这个线段树(包括a)其实是从1开始计数的。 最后,小心爆MAXM。 con

  • 【洛谷 P3193】 [HNOI2008]GT考试(KMP,dp,矩阵乘法)2019-05-24 09:40:15

    题目链接 \(f[i][j]\)表示准考证号到第\(i\)位,不吉利数字匹配到第\(j\)位的方案数。 答案显然是\(\sum_{i=0}^{m-1}f[n][i]\) \(f[i][j]=\sum_{k=1}^{m-1}f[i-1][k]*g[k][j]\) \(g[i][j]\)表示不吉利数字匹配到第\(i\)位后加一个数字能匹配到第\(j\)位的方案数,因为这个数字是固定的

  • 残缺棋盘--状压DP2019-05-22 21:51:18

    P1:给你一个n*m的残缺棋盘(部分位置不可放棋子),求棋子两两不能相邻的方案数mod987654321 分析:这里相邻理解为四联通,我们将每一行看作一个状态,用上一行来推下一行的方案数。 代码: 1 #include "bits/stdc++.h" 2 3 #define ll long long 4 #define maxn 10 5 #define maxm 10005 6

  • Codeforces 1163D DP + KMP2019-05-11 21:37:44

    题意:给你一个字符串s,以及两个字符串s1,s2.s中有些位置是*,意思是可以随便填字母,s的子串中如果出现一次s1,就加一分,如果出现一次s2,就减一分。问这个字符串s最多可以得多少分? 思路: 设dp[i][j][k]为到s串的i位置,s1的匹配长度是i,s2的匹配长度是j的情况下可以获得的最多分数。那么我们

  • uva62401背包打印路径2019-04-06 11:49:22

    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define maxn 30 #define maxm 10005 using namespace std; int n,m; int w[maxn]; int f[maxm]; int vis[maxn][maxm]; int main() { while(~scanf("%d"

  • [NOIP2015]子串2019-03-31 10:48:34

    Luogu2679 /* 思路清晰: 1.状态 2.转移方程:哪些状态相互影响/记忆化搜索思想 3.循环顺序 4.优化 */ #include<bits/stdc++.h> using namespace std; typedef long long LL; const int mod=1e9+7; const int MAXN=1005; const int MAXM=205; char a[MAXN],b[MAXM]; LL dp[2][MAX

  • 提高组noip20152019-03-23 14:50:29

    一道二分答案裸题,一道dp,一道各种裸题的混合(树上差分+二分答案+LCA) stone: 二分查找裸题啊: int check(int x){ int cnt=0,last=0; for(int i=1;i<=n;i++) if(a[i]-a[last]<x) cnt++;//已经是最小值了,所以没有比他更小的,有更小的就要移开 else last=i;//推起走 if(c

  • UVA 1614 - Hell on the Markets 数学题 非贪心2019-03-17 11:51:48

    题意: 给定一个数组长度n,n<=100000,随后给出这个正整数数组A,A的第i项满足1<=Ai<=i,求另外一个仅有1和-1构成的数组B,使得A与B对应每一项乘积再求和为0。多解任意解。   实际上网络上说的排序之后再贪心什么的,根本就没有必要,而且也不是这一道题目的关键点所在。也就是说实际上做法

  • hdu4612 卡cin e-DCC缩点2019-03-03 09:00:38

    /*给定无向图,求加入一条边后最少剩下多少桥*/#include<bits/stdc++.h>using namespace std;#define maxn 200005#define maxm 1000005struct Edge{int to,nxt,cut;}edge[maxm<<1],edge_c[maxm<<1];int head[maxn],tot,head_c[maxn],tot_c,n,m,q;void addedge(int u,int v){

  • 【HNOI2016】矿区2019-02-26 21:51:58

    题面 题解 知识引入 1. 平面图 一个图\(G=(V,E)\),若能将其画在平面上,且任意两条边的交点只能是\(G\)的顶点,则称\(G\)可嵌入平面,或称\(G\)是可平面的。 可平面图在平面上的一个嵌入称为一个平面图。如下图左边黑色的图为平面图,右边红色的图不属于平面图: 2. 平面图的对偶图 设有平面

  • BZOJ4541[HNOI2016]矿区(对偶图)2019-02-25 17:02:42

    题目链接 洛谷 BZOJ 前置知识 平面图转对偶图 简单理解“对偶图”就是,原图边把平面切成了很多块,对偶图中的点代表这些块(最外面的无穷域也可以算作一个块),相邻的块(即有公共边)之间连边,如下图(左边原图,右边对偶图): 不难发现原图中的每条边都对应了新图中的一条边 那么如何将一个平面图转

  • HDU 6357.Hills And Valleys-动态规划(区间翻转l,r找最长非递减子序列)2019-01-30 18:38:33

    题意:给一串由n个数字组成的字符串,选择其中一个区间进行翻转,要求翻转后该字符串的最长非降子序列长度最长,输出这个最长非降子序列的长度以及翻转的区间的左右端点   #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 100005; const int maxm

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有