[NOIP模拟][LCS][二分][树链剖分][hdu5029]

刷屏专用超长复制_跪求超超长刷屏字符剑。。 该楼层疑似违规已被系统折叠隐藏此楼查看此楼....飘过.....飘过......飘过.......飘过........飘过........飘过........飘过........飘过.......飘过......飘过.....飘过....飘过...飘过..飘过.飘过.飘过.飘过..飘过...飘过....飘过.....飘过......飘过.......飘过........飘过........飘过.... 阅读详情

T1:
子序列
描述
给定3个字符串,求它们的最长公共子序列。
输入
第一行一个整数n,表示三个字符串的长度
接下来三行,每行是一个长度为n只包含小写字母的字符串。
输出
输出最长公共子序列的长度。
输入样例
4
abac
abbc
cbca
输出样例
2
提示
30% n<=10
100% n<=120

就是LCS 3维。。。,方程还是原来的他。。

T2:dun
【问题描述】
定义两个素数是连续的当且仅当这两个素数之间不存在其他的素数(如 7,11 ,(23,29)。给定��,��,在不超过��的正整数中求能够分解为��个连续的素数的和的最大的那个是多少。
【输入格式】
第一行一个正整数��代表数据组数。
接下来��行每行两个正整数��,��代表一组询问。
【输出格式】
输出共��行,每行一个整数代表答案;如果找不到这样的数,输出−1。
【样例输入】
3
20 2
20 3
20 4
【样例输出】
18
15
17
【样例解释】
╭︿︿︿╮
{/ o o /}
( (oo) )
︶︶︶
【数据规模与约定】
对于20%的数据,1≤��≤100。
对于40%的数据,��=1。
对于60%的数据,所有的询问的��相等。
对于100%的数据,1≤��<2000,1≤��≤106。

打出素数表,然后二分查找就好了。。。

#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
#ifdef WIN32
#define AUTO "%I64d"
#else
#define AUTO "%lld"
#endif
#define INF 0x3f3f3f3f
#define clock CLOCKS_PER_SEC
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define FROP "dun"
#define C(a,b) next_permutation(a,b)
#define LL long long
#define smin(x,tmp) x=min(x,tmp)
#define maxx(x1,x2,x3) max(x1,max(x2,x3))
using namespace std;
const int N=80005,W=1e6;
int ss[N],tot,T,n,k;
bool vis[W+5];
LL sum[N];
void mack_ss()
{
    int q=sqrt(W+0.5);
    for(int j = 2; j <= q ; j++)
        for(int i = j * 2 ; i <= 1e6 ; i+=j)
        if(i%j==0&&!vis[i])
            vis[i]=true;
    vis[2]=false;
    vis[1]=true;
    for(int i = 1; i <= 1e6;i++)if(!vis[i])
            ss[++tot]=i;
    for(int i = 1; i <= tot;i++)
        sum[i]=sum[i-1]+ss[i];
}
int find(int x){
    int l=1,r=tot,ans;
    while(l<=r)
    {
        int mid=(l+r)>>1;
        if(ss[mid]>=x)ans=mid,r=mid-1;
        else l=mid+1;
    }
    return ans;
}
int main()
{
    freopen(FROP".in","r",stdin);
    freopen(FROP".out","w",stdout);
    scanf("%d",&T);
    mack_ss();
    while(T--)
    {
        scanf("%d%d",&n,&k);
        int tmp=n/k;
        if(k*tmp!=n)tmp++;
        int w=find(tmp);
        LL ans=-1;
        for(int i = w, j = w+k-1; i >=1&&j>=1;i--,j--)
            if(sum[j]-sum[i-1]<=n)
            {
                ans=sum[j]-sum[i-1];
                break;
            }
        printf(AUTO"\n",ans);
    }
    return 0;
}

T3:发放粮食
描述
有一个村庄在闹饥荒,善良而土豪的YGH决定给他们发放救济粮,该村庄有 n 户人家,每两户人家之间只有一条路可以互相到达,即这些人家之间形成一棵树。现在 YGH 会以这样的形式给他们发放粮食,选择两户人家,然后对这两个户人家路径上的所有人家都发放一袋种类为 w 的救济粮。在完成一系列发放任务后,YGH 想知道每一户人家收到的粮食中数量最多的是哪一种。
输入
第一行两个数 n,q,其中 n 表示村庄共有几户人家,q 表示 YGH 一共发放了几次粮食。接下来 n-1 行,每行两个数 x y,表示编号为 x 和 y 的两户人家之间连有边。接下来 q 行,每行三个数 x y w,表示 YGH 选择了 x 到 y 的路径,对每户人家发放 1 袋种类为 w 的粮食。
输出
输出 n 行,第 i 行输出编号为 i 的人家收到的粮食中数量最多的种类号,如果有多个数量相同的粮食,输出其中最小的种类号,如果没有收到粮食,输出0
样例输入
[1]
2 4
1 2
1 1 1
1 2 2
2 2 2
2 2 1
[2]
5 3
1 2
3 1
3 4
5 3
2 3 3
1 5 2
3 3 3
样例输出
[1]
1
2
[2]
2
3
3
0
2
提示
对于 40% 的数据 n<=1000,q<=1000,1<=w<=1000
对于 100% 的数据 n<=100000,q<=100000,1<=w<=100000 1<=x,y<=n

是hdu5209原题,,还不会树链剖分,所以就用差分写的过了40

#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
#ifdef WIN32
#define AUTO "%I64d"
#else
#define AUTO "%lld"
#endif
#define INF 0x3f3f3f3f
#define clock CLOCKS_PER_SEC
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define FROP "rice"
#define C(a,b) next_permutation(a,b)
#define LL long long
#define smin(x,tmp) x=min(x,tmp)
#define maxx(x1,x2,x3) max(x1,max(x2,x3))
using namespace std;
const int N=1e5+55;
int readin()
{
    int res=0;
    char ch=getchar();
    while(ch>'9'||ch<'0')ch=getchar();
    while(ch>='0'&&ch<='9'){res=res*10+ch-'0';ch=getchar();}
    return res;
}
struct ii
{
    int to,ne;
    ii(int to=0,int ne=0):to(to),ne(ne){ }
}ed[N*2];
struct qq
{
    int to,ne;
    qq(int to=0,int ne=0):to(to),ne(ne){ }
}que[N*2];
struct aa
{
    int x,y,w,lca;
    aa(int x=0,int y=0,int w=0):x(x),y(y),w(w){ }
    bool operator <(const aa &a)const
    {
        return w<a.w;
    }
}Q[N];
int head[N],fa[N],ufa[N],fir[N],n,q,vis[N];
int chan(int x){if(x%2)return (x+1)/2;return x/2;}
int find_fa(int x){return x==ufa[x]?x:ufa[x]=find_fa(ufa[x]);}
void init()
{
    n=readin(),q=readin();
    for(int i = 1; i <= n-1; i++)
    {
        int x=readin(),y=readin();
        ed[i*2-1]=ii(y,head[x]);
        head[x]=i*2-1;
        ed[i*2]=ii(x,head[y]);
        head[y]=i*2;
    }
    for(int i = 1; i <= q; i++)
    {
        int x=readin(),y=readin(),w=readin();
        que[i*2-1]=qq(x,fir[y]);
        fir[y]=i*2-1;
        que[i*2]=qq(y,fir[x]);
        fir[x]=i*2;
        Q[i]=aa(x,y,w);
    }
}
void tarjian(int u)
{
    ufa[u]=u;
    vis[u]=true;
    for(int i = head[u] ; i ; i =ed[i].ne)
    {
        int v=ed[i].to;
        if(fa[u]==v)continue;
        fa[v]=u;
        tarjian(v);
        ufa[v]=u;
    }
    for(int i = fir[u] ; i ; i = que[i].ne)
    {
        int v=que[i].to;
        if(!vis[v])continue;
        int p=chan(i);
        Q[p].lca=find_fa(v);
    }
}
int answ[N],ans[N];
int mer[N];
void cal(int x,int w)
{
    for(int i = head[x]; i ; i=ed[i].ne)
    {
        int v=ed[i].to;
        if(v==fa[x])continue;
        cal(v,w);
        mer[x]+=mer[v];
    }
    if(mer[x]==answ[x])smin(ans[x],w);
    else if(mer[x]>answ[x])
    {
        answ[x]=mer[x];
        ans[x]=w;
    }
}
void work()
{
    sort(Q+1,Q+q+1);
    int flag=Q[1].w;
    for(int i = 1; i <= q; i++)
    {
        if(flag!=Q[i].w)
        {
            cal(1,flag);
            flag=Q[i].w;
            cle(mer);
        }
        int x=Q[i].x,y=Q[i].y,lca=Q[i].lca;
        mer[x]++,mer[y]++,mer[lca]--;
        if(fa[lca])mer[fa[lca]]--;
    }
    cal(1,flag);
    for(int i = 1; i <= n; i++)
        printf("%d\n",ans[i]);
}
int main()
{
    freopen(FROP".in","r",stdin);
    freopen(FROP".out","w",stdout);
    init();
    tarjian(1);
    work();
    return 0;
}
/*
13 3
1 2 
1 3
2 3
2 5
6 3
7 3
8 4
4 9
8 10
8 11
9 12
9 13
10 5 100
12 6 100
6 7 20
*/

然后又把树链给学了,写了QAQ

#pragma comment(linker, "/STACK:1024000000,1024000000")  
#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
#ifdef WIN32
#define AUTO "%I64d"
#else
#define AUTO "%lld"
#endif
#define INF 0x3f3f3f3f
#define clock CLOCKS_PER_SEC
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define minn(x1,x2,x3) min(x1,min(x2,x3))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define FROP "rice"
#define C(a,b) next_permutation(a,b)
#define LL long long
#define smin(x,tmp) x=min(x,tmp)
using namespace std;
const int N=100010;
struct ii
{
    int to,ne;
    ii(int to=0,int ne=0):to(to),ne(ne){ }
}ed[N*2];
struct node
{
    int l,r;
    int val,key;
    node(int val=0,int key=0):val(val),key(key){ }
}col[N*4];
#define L(x) x<<1
#define R(x) (x<<1)|1
int fir[N],fa[N],son[N],top[N],tid[N],_tid[N],dep[N],siz[N],Index,n,m;
void dfs1(int u)
{
    siz[u]=1;
    for(int i =fir[u];i;i=ed[i].ne)
    {
        int v=ed[i].to;
        if(fa[u]==v)continue;
        fa[v]=u;
        dep[v]=dep[u]+1;
        dfs1(v);
        siz[u]+=siz[v];
        if(siz[v]>siz[son[u]])
            son[u]=v;
    }
}
void dfs2(int u,int tp)
{
    top[u]=tp;
    tid[u]=++Index;
    _tid[Index]=u;
    if(!son[u])return;
    dfs2(son[u],tp);
    for(int i = fir[u];i;i=ed[i].ne)
    {
        int v=ed[i].to;
        if(fa[u]==v||son[u]==v)continue;
        dfs2(v,v);
    }
}
#define val(x) col[x].val
#define key(x) col[x].key
#define l(x) col[x].l
#define r(x) col[x].r
void pushup(int u)
{
    val(u)=max(col[L(u)].val,col[R(u)].val);
    key(u)=val(R(u))>val(L(u))?key(R(u)):key(L(u));
}
void build(int l,int r,int u)
{
    l(u)=l,r(u)=r;
    if(l==r)
    {
        key(u)=l;
        return;
    }
    int mid=(l+r)>>1;
    build(l,mid,L(u));
    build(mid+1,r,R(u));
}
void update(int tr,int pos,int v)
{
    if(l(tr)==pos&&pos==r(tr))
    {
        val(tr)+=v;
        return;
    }
    int mid=( l(tr) + r(tr) )>>1;
    if(mid>=pos)update(L(tr),pos,v);
    else update(R(tr),pos,v);
    pushup(tr);
}
vector<int>opt[N];
void sum(int x,int y,int v)
{
    opt[x].push_back(v);
    opt[y+1].push_back(-v);
}
void change(int x,int y,int v)
{
    int f1=top[x],f2=top[y];
    while(f1^f2)
    {
        if(dep[f1]<dep[f2])swap(f1,f2),swap(x,y);
        sum(tid[f1],tid[x],v);
        x=fa[f1];
        f1=top[x];
    }
    if(dep[x]>dep[y])swap(x,y);
    sum(tid[x],tid[y],v);
}
void init()
{
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= n-1; i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        ed[i*2-1]=ii(y,fir[x]);
        fir[x]=i*2-1;
        ed[i*2]=ii(x,fir[y]);
        fir[y]=i*2;
    }
    dep[1]=1;dfs1(1),dfs2(1,1);
    int maxx=0;
    for(int i = 1; i <= m; i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        maxx=max(z,maxx);
        change(x,y,z);
    }
    build(1,maxx,1);
}
int ans[N];
void work()
{
    for(int i = 1; i<=n; i++)
    {
        int sz=opt[i].size();
        for(int j = 0; j<sz;j++)
        {
            int tmp=opt[i][j];
            if(tmp<0)update(1,-tmp,-1);
            else update(1,tmp,1);
        }
        ans[_tid[i]]=val(1)==0?0:key(1);
    }
    for(int i = 1; i<= n; i++)
        printf("%d\n",ans[i]);
}
int main()
{
    freopen(FROP".in","r",stdin);
    freopen(FROP".out","w",stdout);
    init();
    work();
    return 0;
}
ArcGis布局视图中Excel表格无边框插入与图例符号边框定制技巧 本文详细解析了在ArcGis布局视图中实现Excel表格无边框插入与图例符号边框定制的专业技巧。通过源头净化Excel表格、精准粘贴以及分解图例并单独设置边框属性,有效解决了地图报告中常见的视觉粗糙问题,帮助用户提升专题图与报告的精致度与专业感。 阅读详情

相关推荐

C#国产化技术路线(全栈落地指南,适配信创场景)

本文详细介绍了C#语言在信创产业中的国产化适配方案。核心方案基于.NET8框架,通过硬件架构适配、基础软件替换和打包部署优化三个层面进行改造,无需更换开发语言即可适配国产CPU和操作系统。文章系统讲解了开发工具选择、全栈适配层改造、数据库替换等技术要点,并提供了桌面应用和服务端应用的具体开发流程。针对政务、金融、能源等典型场景给出了可直接套用的技术组合,同时总结了10个关键避坑点。该方案可复用C#开发特性,实现低成本迁移,已在多个行业成功落地。

weilinc的专栏 1197

最长公共子序列LCS和 最长单调子序列 及其二分优化

最长公共子序列LCS和最长上升子序列LIS都是动态规划的经典例题,再度回顾这两个例题,已经有了更深一些的理解和优化方式。这里系统整理一下 。 一.最长单调子序列 1.最长上升子序列 最朴素的dp思路,就是对一个序列a[i],设一个dp数组, 其中dp[i]的含义为以a[i]结尾的最长上升子序列的长度。 那么我们考虑当前的a[i]与与a[i]之前的元素的关系, 如果当前的a[i]与a[i]之前的a[j]满足递增关系,那么dp[i]的状态可以由dp[j]得到,对每个先前状态取最值即为当前状态的最.

m0_60777643的博客 2618

Python实战:用nltk库5步搭建你的第一个n-gram文本生成器(附古诗生成案例)

本文详细介绍了如何使用Python的nltk库5步搭建n-gram文本生成器,并附有古诗生成案例。从环境准备、n-gram原理讲解到完整实现,逐步指导开发者掌握自然语言生成技术。特别针对中文古诗生成进行了优化,包括分词处理和韵律控制,帮助读者快速上手文本生成项目。

weixin_29090089的博客 202

最长公共子序列 (LCS,二分,巧妙转换)

P1439 【模板】最长公共子序列 分析: DPDPDP 算法是 n2n^2n2,状态转移方程也比较好推,设 fn,mf_{n,m}fn,m​表示 aaa 序列的前 nnn 位,bbb 序列的前 mmm 位的 LCSLCSLCS 长度,那么, fi,j={fi−1,j−1+1 (a[i]==b[j])max⁡(fi−1,j ,fi,j−1) (继承) f_{i,j}= \begin{cases} f_{i-1,j-1}+1\ (a[i]==b[j]) \\ \max(f_

yezzz的博客 653

Alphafold2/multimer Conda环境配置与GPU加速优化指南

本文详细介绍了如何在本地服务器或工作站上,通过Conda环境配置并优化GPU加速来部署Alphafold2及其多聚体版本Alphafold2-multimer。内容涵盖从硬件准备、依赖安装、数据库部署到实战预测与常见报错处理的全流程,重点解决了本地安装过程中的依赖冲突与GPU调用失败等关键问题,帮助研究人员高效运行这一蛋白质结构预测工具。

neovim7hacker的博客 470

Qt6.8.0(win64)安装教程

启动 Visual Studio 2022 Community,选择 “继续但无需代码” 运行,然后打开Option设置,Add一条版本配置,Location 选择 D:\Qt\6.8.0\msvc2022_64\bin\qmake,点击确定。我是win11系统,所以选择windows版,下载路径二选一即可。方案1:默认情况下,额外勾选图中两个组件(总共40多G)方案2:按图中自定义勾选组件(总共5.8G)选择Custom Installation。我选的方案2,总共5.81G。

D4G1TIAO的博客 9069

最长上升子序列(LIS)和最长下降子序列(LCS)普通方法及二分优化

hello,大家好,说是要连跟来着,哎,又忙了起来,但再忙也要坚持更。今天我重新打了2020年ICPC昆明区域赛的题,笑道当年做L题(原题附上,有兴趣的同学可以看看)以为是归并排序逆序对加图的最小染色问题,现在想想可能要笑出猪叫。这道经典板子题,小编今天给大家解释解释这个板子。 前言知识 对于一个字符串而言,比如:abcdef 字串是在字符串中,取出一块(连续的),如:abc, bcd, def等 子序列指的是从字符串中,顺序取出字符,但是可以不连续:如:abd, bdf, acf等 最长上升子序列(LIS

ZNB5201314的博客 1418

64、5G 侧链通信技术详解

本文详细解析了5G侧链通信的关键技术,包括资源感知与选择、UE间协调、混合ARQ、功率控制、信道探测与CSI报告以及侧链同步。资源感知与选择通过周期性或随机方式实现资源分配,UE间协调通过主动或被动方式避免资源冲突。混合ARQ机制确保数据传输可靠性,功率控制和信道探测优化传输质量并减少干扰。侧链同步则通过多种方式确保设备间时间一致性。这些技术相互配合,构建了高效稳定的5G侧链通信体系,适用于智能交通、物联网、应急通信等多个领域,为未来无线通信发展提供强大支撑。

oil88的博客 101

关于特殊的LCS问题的优化

首先是一道比较简单的例题:传送门 题目的提示很明显,元素无重复,然后看看样例,手玩一下,就会发现选的元素在上面对应着上升的位置,而且这还是两个排列,那么就可以建立一个从排列A到排列B的映射,然后就可以转化成为LIS问题了,这个问题是有O(nlogn)的解法的。 代码: #include<cstdio> using namespace std;...

weixin_34111819的博客 232

IsaacSim环境配置之配置本地资产包

摘要:Isaac Sim官方资产文件默认从美国服务器下载速度慢,影响开发体验。建议下载本地资产包并配置本地资源源。具体步骤包括:1) 下载资产包并解压;2) 修改Isaac Sim安装路径下的配置文件,添加本地资产路径配置,包括机器人、人物、环境等各类资源目录。配置完成后可显著提升资产加载速度,改善开发效率。文中提供了详细的配置文件修改示例和截图说明。

拥抱具身智能,昇腾Ascend C 329

全新DEIM有效涨点改进目录 | 本专栏持续更新500+篇内容 | 包含各种顶会顶刊卷积、注意力、特征融合模块、有效特征聚合提取模块,上采样模块、下采样模块,二次创新模块、独家创新等几百种创新点改进

🚀【CVPR2025DEIM改进专栏速览】🔥 专栏提供500+篇目标检测创新改进方案,涵盖卷积/注意力/特征融合等创新改进点,均源自顶会论文及实战经验。支持多领域应用(工业/医疗/遥感等),配套完整教程和答疑服务。亮点包括: 1️⃣ 持续更新SOTA模型改进方案 2️⃣ 小白友好型实验操作指南 3️⃣ 跨学科科研支持(已助非计算机专业发表论文) 4️⃣ 提供虚拟环境配置方案。 订阅可获完整项目代码及交流群服务,适合研究生科研论文改进需求。价格呈上涨趋势,早订更优惠!

Ai缝合怪、助力小伙伴高效发论文 2044

【20161109NOIP%你题】【LCS】子序列题解

离NOIP复赛还有10天。啊啊啊啊啊啊啊啊啊!

It's Maverick. 693

嵌入式Linux&Android开发-环境搭建

目录 一、环境要求 二、相关软件&SDK下载 三、环境安装 3.1 VMware Worksation 3.2 Ubuntu1804 3.3 VSCode安装 3.4 Samba服务器搭建 一、环境要求 编译 Android 对机器的配置要求较高: 64 位 CPU 大于12GB 物理内存+交换内存(最好16GB以上) 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GB, 如果要编译源码则还需要 150GB 的磁盘空间。 RK官方推荐使用 Ubuntu 16..

嵌入式成长手册 548

[NOIP模拟赛]押韵

题目描述 LCS表示最长公共后缀长度。如果两个单词A,B押韵,当且仅当LCS(A,B)>=MAX(A,B)-1。如果一个序列押韵,当且仅当该序列中任意相邻的两个单词押韵。现在,给你一片文章,文章中没有相同的两个单词。请你从该文章中选择任意单词,并任意排列顺序,得到一个尽量长的押韵序列。注意,每个单词只能出现一次。 输入格式 第一行一个整数N(1 接下来N行,每行一个小写字母单词

UISG103的博客 967

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

XJOJ - 路径数(最短路+最短路路径数量)

题目链接:点击查看 题目大意:Euphemia到一个N*N的药草田里采药,她从左上角的格子田(第一行,第一列)出发,要到达右下角(第N行,第N列)的格子田,每次她可以走到与当前格子有边相邻的格子去,但她不会走已经走过的格子,而且出于对美的要求,她走过的路径是关于 左下-右上 对角线对称的。由于地势不同,在每个格子田采药都会有一个疲劳度Tij,Euphemia想知道:有多少条合法路径,可以使得她采...

Falcon的博客 1964

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

nyistOJ-See LCS again(二分)

See LCS again 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 There are A, B two sequences, the number of elements in the sequence is n、m; Each element in the sequence are different and less

信仰.的博客 563

NOIP 2018模拟赛(打表+dp) 2018 11 4 A组 Day2 T1

1. 白玉楼前(youmu.cpp/c/pas) 【题目背景】 “一觉醒来怎么半灵又不见了?一定是幽幽子吃了。” “幽幽子你给我吐出来!” “我这边有个游戏玩不过去,你帮我玩过去我就吐出来。” 【题目描述】 妖梦现在要玩幽幽子的游戏,她才能拿回自己的半灵。 游戏规则是这样的: 幽幽子有n 个点,现在她让妖梦对每个点随机一条出边(随机到每个点的概率都相等), 然后得到一张图。(注意:可以自环) 如果...

01232012的博客 332

401 - Palindromes

#include #include char table[2][21]= { 'A','E','H','I','J','L','M','O','S','T','U','V','W','X','Y','Z','1','2','3','5','8', 'A','3','H','I','L','J','M','O','2','T','U','V','W','X','Y','5','1','S','E',

xjoj 369

LIS,LCS,LICS 学习笔记

LIS,LCS,LICS 学习笔记 1.最长上升子序列(LIS) 子序列: 1.可以不连续 2.相对位置不变 dp[i][j] 表示前i位置,最大值为j的LIS长度 1. dp[i-1][j] 前i-1位置,最大值为j的LIS长度 (没有考虑a[i]) 2. dp[i][j]=dp[i-1][k]+1 ...

Tricksterism 1132

一个经典问题 (LCS)

一个经典问题 Problem Description 有两个字符串,比如:abedc与acbde,它们公共的序列有许多种,这个序列在原串中可以是不连续的,比如ab,ad,abe,e等都可算做他们的公共序列,但是最长的序列为abe,长度为3,那么怎么求出这个序列最长是多少呢? Input 第一行是一个整数T,代表多少组数据(T 每组数据给出两个字符串(由小写字符组成),长度都小

yanghui07216的博客 563

【noip模拟题】[dp][二分][树链剖分][hdu5029][线段树]

T1 描述 给定3个字符串,求它们的最长公共子序列。 输入 第一行一个整数n,表示三个字符串的长度 接下来三行,每行是一个长度为n只包含小写字母的字符串。 输出 输出最长公共子序列的长度。 输入样例 4 abac abbc cbca 输出样例 2 提示 30% n<=10

Sue2333的博客 763

2015.11.1 XJOJ(NOIP模拟赛)总结

第一题:第一遍看没看懂题,然后就继续看剩下的题目,看完了再回来看这道题,也是花费了想象力才搞懂他在说什么。但是没有想法,无奈暴搜。按照给出的权值(G),硬着枚举排列,再check逆序对的数量。 O(n!n(logn)) 30分 第二题:一棵树,然后呢???没办法,就硬着做了。30分 第三题:最简单的一道题,既然没得分。本来写了个人工比较,得出匹配的数的东西,但是好像写挂了...

weixin_30564785的博客 238

xjoj道路

数据范围 n 题解:最长上升子序列,把a数组在b数组的位置映射到p中然后求。 #include #include #include using namespace std; int n; int dp[100233]; int a[100233],b[100233],p[100233]; int main() { scanf("%d",&

Loi_DL的博客 702

UVaOJ699---The Falling Leaves

699 - The Falling Leaves Time limit: 3.000 seconds Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling

c随遇er安的专栏 770

hdu 4729 树链剖分+二分

此题一看就知道是树链剖分,模板题!可怜我模板少抄个字母,在这两百多行的代码里找bug找了三个多小时啊!!!! 解题思路:对于要求的x,y点,先可以求得不加任何操作的最大流量P,c1为建造一个路的话费,c2为增加一个容量的花费,如果c1P+k/c1。 否则,如果先建一条路,那么最大的流量是M=P+1+(k-c1)/c2,如果不新建路只加边呢?那就可以二分求得最大的结果,为了节省时间,可以对整体进

生活总是要微笑着面对~ 1826

通俗理解动态规划:由浅入深DP并解决LCS问题(23年修订版)

动态规划算法解LCS问题作者 July 二零一零年十二月三十一日本文参考:微软面试100题系列V0.1版第19、56题、算法导论、维基百科。第一部分、什么是动态规划算法 ok,咱们先来了解下什么是动态规划算法。 动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能

结构之法 算法之道 11万+

784 - Maze Exploration

A maze of rectangular rooms is represented on a two dimensional grid as illustrated in figure 1a. Each point of the grid is represented by a character.

xjoj 658
上一篇: [NOIP模拟][STL][冒泡排序][贪心][Bash模拟]
下一篇: [NOIP模拟][状压dp][dfs序列][线段树]
Freddddddddddd
博客等级 码龄10年 2粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值