T1 盾盾的打字机

  盾盾有一个非常有意思的打字机,现在盾哥要用这台打字机来打出一段文章。
   由于有了上次的经验,盾盾预先准备好了一段模板A存在了内存中,并以此为基础来打出文章B。盾盾每次操作可以将内存中的某一个字符改成另一个字符,或者在某一个位置插入一个字符,或者删除某一个位置上的字符。另外,为了避免自己预存的模板太腿反而浪费时间,盾哥在所有操作之前会斟酌一下选择留下模板A的某一个最优的子串以保证操作次数尽量少(当然盾盾也可以全保留或一个都不留),这一步不计入操作次数。
     试求盾盾要打出文章B的最少操作次数。
     子串是指母串中连续的一段。

这是一道字符串编辑距离的DP题,但是题目有特殊的要求,字符串可以在编辑之前删除前一段,或者删除后一段,也可以前后都删(留下模板A的某一个最优的子串)。

   列出DP方程:f[i][j]表示a串的i位匹配到了b串的j位

f[i][j]=min{f[i-1][j-1]+(a[i]!=b[j]),f[i-1][j]+1,f[i][j-1]+1)

边界:

    for(int i=0;i<=l1;i++) f[i][0]=0;//这表示了可以删除原串前面的一段(本来编辑距离边界中为f[i][0]=i)
     for(int i=0;i<=l2;i++) f[0][i]=i;

     答案还需要在f[0--l1][l2]中寻找//这表示了可以删除原串之前的一段.

     AC代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std;
char a[1001],b[1001];
int i,j,k,x,n,m,f[1010][1010],l1,l2,ans;
int main()
{
while (scanf("%s%s",a+1,b+1)!=EOF)
{
l1=strlen(a+1); l2=strlen(b+1);
memset(f,127,sizeof(f));
for(int i=0;i<=l1;i++) f[i][0]=0;
for(int i=0;i<=l2;i++) f[0][i]=i;
for (i=1;i<=l1;i++)
for (j=1;j<=l2;j++)
f[i][j]=min(min(f[i-1][j-1]+(a[i]!=b[j]),f[i-1][j]+1),f[i][j-1]+1);
ans=0x7fffffff;
for (i=1;i<=l1;i++) ans=min(ans,f[i][l2]);
cout<<f[l1][l2]<<endl;
}
return 0;
}

T2 社交网络

   给定一个N个点M条边的无向图,你要连最少的边使得图连通。求方案数mod P的值。

   做这个题目需要知道一个叫做Purfer Sequence数列的神奇东西。在这个网站学习:http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html

   知道了这个性质之后,我们即可以套用这个模板,自然的想到去用并查集维护一下连通块,并且将其标记为它的度数,就可以了。

AC代码:

#include <cstdio>
#include <iostream>
#include <string>
#include <map>
#include <set>
#include <vector>
#include <sstream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#define pb push_back
#define mp make_pair
#define ST begin()
#define ED end()
#define XX first
#define YY second
#define elif else if
#define foreach(i,x) for (__typeof((x).ST) i=(x).ST;i!=(x).ED;++i)
using namespace std;

typedef long long ll;
typedef long double ld;
typedef vector<int> vci;
typedef vector<string> vcs;
typedef pair<int,int> PII;

const int N=1000005;

int n,m,mo;
int f[N],g[N];

int find(int x) {return (x==f[x])?x:f[x]=find(f[x]);}

int main()
{
freopen("netrd.in","r",stdin);
freopen("netrd.out","w",stdout);

scanf("%d%d%d",&n,&m,&mo);
for (int i=1;i<=n;++i) f[i]=i;
for (int i=0;i<m;++i)
{
int x,y;
scanf("%d%d",&x,&y);
f[find(x)]=find(y);
}
int ans=1%mo,t=0;
for (int i=1;i<=n;++i) ++g[find(i)],t+=(i==f[i]);
if (t==1)
{
cout<<1%mo<<endl;
return 0;
}
for (int i=1;i<=t-2;++i) ans=1LL*ans*n%mo;
for (int i=1;i<=n;++i) if (g[i])
ans=1LL*ans*g[i]%mo;
cout<<ans<<endl;
return 0;
}

T3 

    求带边权的树上的长度为L~R的中位数最大的路径(有多个中位数时取最大的那个)。路径的长度是指边的条数。

    这个题目我现在还不会写!!!!需要用到点或者边的分治,加上二分。边分治再用上单调队列可以做到O(nLogn^2)的复杂度

  

2016.3.22考试(HNOI难度)的更多相关文章

  1. [官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

    [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.it ...

  2. 2016 10 28考试 dp 乱搞 树状数组

    2016 10 28 考试 时间 7:50 AM to 11:15 AM 下载链接: 试题 考试包 这次考试对自己的表现非常不满意!! T1看出来是dp题目,但是在考试过程中并没有推出转移方程,考虑了 ...

  3. 5.22考试总结(NOIP模拟1)

    5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...

  4. 3.27考试总结(hnoi难度)

    1 duel1.1 DescriptionK·⁄¶("“uƒ¢y%¥§H5|+ (?1’m" ’m·ø?1§z<k§⁄k<⁄§lm?0,1,2...§zg ‹‰ª«mS ...

  5. 3.29考试(HNOI难度)

    一. 城镇 [ town ]   Memory Limit: 128 MB    Time Limit : 1s Description 在 farmer land 上,有 N 个 farmer to ...

  6. 3.25考试(hnoi难度)----神奇的一日游

    T1怕老婆 有一天hzy9819,来到了一座大城市拥有了属于他自己的一双滑板鞋.但是他还是不满足想要拥有属于自己的一栋楼,他来到了一条宽敞的大道上,一个一个记录着这些楼的层数以方便自己选择. hzy9 ...

  7. NIPS 2016上22篇论文的实现汇集

    http://blog.csdn.net/jiandanjinxin/article/details/54087592 日前,LightOn CEO 兼联合创始人 Igor Carron 在其博客上放 ...

  8. OneZero第二次站立会议(2016.3.22)

    会议时间:2016年3月22日 9:33~9:57 会议成员:冉华,张敏,王巍,夏一鸣. 会议目的:汇报前一天工作,全体成员评论并修改. 会议内容:以下为会议插图 1.界面原型方面,小组成员对夏所画的 ...

  9. 2016 10 26考试 NOIP模拟赛 杂题

    Time 7:50 AM -> 11:15 AM 感觉今天考完后,我的内心是崩溃的 试题 考试包 T1: 首先看起来是个贪心,然而,然而,看到那个100%数据为n <= 2000整个人就虚 ...

随机推荐

  1. LR 常见问题收集及总结

    一:LoadRunner常见问题整理 1.LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen. ...

  2. 免安装版Tomcat6.0启动方法

    免安装版Tomcat6.0启动方法 1.下载Tomcat Zip压缩包,解压. 2.修改startup.bat文件: 在第一行前面加入如下两行 SET JAVA_HOME=JDK目录 SET CATA ...

  3. 表数据文件DBF的读取和写入操作

    import sys import csv import struct import datetime import decimal import itertools from cStringIO i ...

  4. linux连接远程服务器提示拒绝访问

    如上图,出现的问题是因为端口号错误,如果不是正常连接的端口号,那么就是端口号被恶意更改! 解决方案: 关掉或者开启需要的端口号注释!

  5. 基本包装类型:Boolean、Number 和String

    /* var box = 'Mr. Lee'; //基本类型 //alert(box); //alert(typeof box); alert(box.substring(2)); //对象.方法(参 ...

  6. js 闭包理解

    闭包主要应用于两种情况: 1 函数作为返回值. 2 函数作为参数传递. 第一种举例: function fn(){ var max = 10; return function bar(){ if(x ...

  7. 关于viewport的研究

    昨天项目中用到了适应移动端显示的viewport,一般的使用方式如下: <meta name="viewport" content="width=device-wi ...

  8. JQuery知识快览之四—样式

    前面我们获取了对象集,本文介绍怎么控制对象集的样式 基本概念 在一个html页面中,我们有两种方式来控制一个对象的样式,用HTML attribute控制,或者用CSS类来控制,这两种方法虽然都能控制 ...

  9. java下载安装,环境变量,hello world

    1.Java下载安装 网址:http://java.sun.com/javase/downloads/index.jsp win7 64位选择jdk-8u11-windows-x64.exe. 2.环 ...

  10. flash压力测试

    涉及目录: vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6735/src/drivers/inc/dram ...