poj 2513 trie树+欧拉路判断+并查集=(首尾相接的木棍)

poj 3171 dp+线段树(最小代价覆盖全部区间) 题意:给定一个需要覆盖的区间[m,e],给出n个区间[ai,bi],每个区间有一个权值wi。求能够把[m,e]覆盖所选取的区间的最小代价之和。 思路:如果没有权值,那么贪心可以解决这个问题,见poj2376。但是此处带权,那么贪心不成立,需要考虑用动态规划。先将所有区间的代价设置为无限大,然后将给的n区间按左优先排序,然后进行一趟遍历:第i个区间为[a,b],先查询[a-1,b-1]区间的最小值 阅读详情

题意:有最多250000个木棍,木棍每端有一个颜色(不超过10个字符),两端颜色相同可以挨着排放,问能否将这些木棍排成一排。

思路:一开始自己写的用数组存颜色字符串,结果不够存。后来看到AC做法是用trie来存。于是写出用trie存的。一开始自己犯懒没仔细算trie结点的上限,看discuss有人说开500000不够,至少开510000,但奇怪的是我开510000都是RE。之后用GCC提交了一次AC了,然后在C下开到520000才能AC。后来算了一下结点上界数量,我认为不应该是颜色数量这个数:因为颜色最多500000个,又26^4=456976,所以结点上限应该为:1+26+26^2+26^3+26^4+500000*6=3475255个。后来用这个上限测了一下还是能AC的。

其次,判断连通用并查集也是一个比较自然的想法。以前我一直是将图存下然后深搜判断,但是这个结点上限开一个二维数组显然要RE。anyway,这道题还是比较综合。

#include <stdio.h>
#include <string.h>
#define N 3475256//gcc505000  c520000
typedef struct node{
    int id;
    struct node * next[26];
}node;
node *alloc,*root,array[N];
char s[12],t[12];
int f[N],d[N],top=0;
void init(){
    int i;
    memset(d, 0, sizeof(d));
    for(i = 1;i<N;i++)
        f[i] = i;
    alloc = array;
    root = alloc++;
    root->id = 0;
    for(i = 0;i<26;i++)
        root->next[i] = NULL;
}
int find(char* x){
    int i,j;
    node *p,*q;
    p = root;
    for(i = 0;x[i]!='\0';i++){
        if(NULL == p->next[x[i]-'a'])
            break;
        p = p->next[x[i]-'a'];
    }
    if(x[i] == '\0' && p->id)
        return p->id;
    for(;x[i]!='\0';i++){
        q = alloc++;
        q->id = 0;
        for(j = 0;j<26;j++)
            q->next[j] = NULL;
        p->next[x[i]-'a'] = q;
        p = q;
    }
    return p->id = ++top;
}

int unionfind(x){
    if(f[x] == x)
        return x;
    return f[x] = unionfind(f[x]);
}
void merge(int x,int y){
    int xx = unionfind(x);
    int yy = unionfind(y);
    if(xx != yy)
        f[xx] = yy;
}
int con(){
    int i,res = unionfind(1);
    for(i = 2;i<=top;i++)
        if(unionfind(i) != res)
            return 0;
    return 1;
}
int main(){
    int i,a,b,odd=0;
    init();
    while(scanf("%s",s)!=EOF){
        scanf("%s",t);
        a = find(s);
        b = find(t);
        d[a]++;
        d[b]++;
        merge(a,b);
    }
    if(!con())
        printf("Impossible\n");
    else{
        for(i = 1;i<=top;i++)
            if(d[i] & 1)
                odd++;
        if(!odd || odd==2)
            printf("Possible\n");
        else
            printf("Impossible\n");
    }
    return 0;
}


电化学-论文分享-NanoStat: An open source, fully wireless potentiostat 本文主要分享论文NanoStat: An open source, fully wireless potentiostat,并记录学习笔记。如果有条件,建议看原文最好。 阅读详情

相关推荐

EDF Browser使用说明和技巧

edf browser使用说明和一些小技巧

Erhu_666的博客 8334

hdoj 1051

#include #include #include struct Wood {     int l, w;     bool processed; }; int n, m; using namespace std; bool cmp(Wood &a, Wood&b) {     if (a.l == b.l) return a.w     else return

WuchangI的博客 338

PPL文档——Excel制作的甘特图加上动态今日线

当很多项目需要跟踪进度时,我们介绍一种在Excel中创建甘特图。

qq_34777858的博客 7065

poj 2513

POJ2513-Colored Sticks 原创 2011年07月30日 22:26:14 标签:数据结构 /string /null /input /class /算法   转载请注明出处:優YoU  http://user.qzone.qq.com/289065406/blog/1304742541   大致题意: 给定一些木棒

MrMrs的专栏 323

【多模态融合】TransFusion学习笔记(1)

工作上主要还是以纯lidar的算法开发,部署以及系统架构设计为主。对于多模态融合(这里主要是只指Lidar和Camer的融合)这方面研究甚少。最近借助和朋友们讨论论文的契机接触了一下这方面的知识,起步是晚了一点,但好歹是开了个头。下面就借助TransFusion论文及其开源代码来串一串这方面的知识。这个很好理解,参考FPointNet网络图示。就是利用现有的2D检测器在图像上提取2D初始框,根据Camera成像原理,捕获2D框视锥内的点云,再利用点云分类模型(如:PointNet)做进一步分类。

4962

Python量化交易实战:从零搭建你的第一个多因子选股模型(附完整代码)

本文是一份详细的Python量化交易入门实战指南,手把手教你从零搭建第一个多因子选股模型。内容涵盖环境配置、数据获取、因子挖掘与有效性检验、多因子合成以及完整的策略回测与绩效评估,并附有可直接运行的完整代码,帮助初学者快速掌握量化交易的基本概念与实践流程。

resnet7explorer的博客 936

POJ 2513 Colored Sticks 好题 字典树+并查集+欧拉路

原文 優YoU  http://user.qzone.qq.com/289065406/blog/1304742541 大致题意: 给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。   解题思路: 可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点,把木棒看成边,这样相同的颜色就是同一个节点 问题便转化为: ...

小萨摩的博客 258

别再为倍福EL6021/EL6022的RS485接线头疼了!手把手教你硬件跳线与软件配置(附Modbus RTU主站例程)

本文详细解析了倍福EL6021/EL6022模块的RS485硬件跳线与软件配置方法,包括Modbus RTU主站编程实战。从端子定义、跳线操作到TwinCAT 3环境设置,提供完整的通信例程和故障排查技巧,帮助工程师快速解决工业现场通信问题。

weixin_30634661的博客 592

POJ 2513 Colored Sticks

Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 34525   Accepted: 9008 Description You are given a bunch of wooden sticks. Each endpoint of e

319

【Simulink教程案例18】基于simulink的基础OFDM+64QAM发射接收链路仿真

OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation),多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力,能够支持多用户接入。OFDM技术由MCM(Multi-Carrier Modulation,多载波调制)发展而来。OFDM技术是多载波传输方案的实现方式之一,它的。

FPGA/MATLAB学习教程/源码/项目合作开发 1990

上位机 寻边器 通讯实战

寻边器通讯接口实现 本文介绍了上位机与盖泽(Gazer)和JEL品牌寻边器的通讯接口实现方案。主要内容包括: 接口定义:创建了IAlignerOperation接口,定义了获取状态、控制运动、真空吸附等核心功能。 具体实现: 盖泽寻边器(GazerAlignerCjh):通过串口通讯,实现了回零、校准、移动位置等操作 JEL寻边器(JelAligner):同样基于串口通讯,包含错误处理、状态查询等功能 工厂模式:通过AlignerFactory工厂类根据设备品牌创建对应的实现对象。 设备加载:展示了如何在系

StevenChen的博客 378

poj 2513 Colored Sticks

Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 35734   Accepted: 9358 Description You are given a bunch of wooden sticks. Each endpoint of e

大众博客 302

PCB高速信号换层孔新技术:VECS(Vertical Conductive Structure Technology)解析

摘要:垂直导电结构(VeCS)是一种新型PCB互连技术,由平板信号走线和椭圆形接地层构成半同轴结构,相比传统过孔具有显著优势。通过全波仿真和实测验证,VeCS展现出更好的阻抗连续性、更低的插入损耗和回波损耗,以及优异的串扰抑制能力。其椭圆形接地结构能有效隔离电磁干扰,在相同布线密度下远端串扰比传统过孔降低约50%。VeCS制备工艺与传统PCB工艺兼容,无需新增设备,且能实现更高密度互连。测试结果显示,2.5英寸带状线通道中VeCS结构的信号完整性表现明显优于传统过孔,为高速数字系统提供了更可靠的垂直互连解决

小孟同学的博客 202

POJ 2513 && NYOJ 230 Colored Sticks (并查集 && 字典树 && 欧拉图)

Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 34828   Accepted: 9097 Description You are given a bunch of wooden sticks. Each endpoint of e

MADE_Y 406

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

poj 2492 并查集(虫子交配,同性恋?)

题意:一组昆虫性别性别有个哦你

dearmango 3036

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

poj 2227 优先队列应用(能装多少水)

题意:一个n*m矩形区域,其中每个1*1都是有高度的矩形块,高低起伏,求最多储水量。(边界不能储水) 题解:先将边界装入优先队列中(高度越小越优先),并标记为已访问。看队首元素四周未访问过的点,1、如果该点不比队首低,则将它加入队列,标记为已访问,即它变成了新的边界。2、该点比队首低,意味着该点可以储水,更新res值,同时将它加入队列中,但是它的高度为原队首元素的高度,即以它为边界的点不能超过这

dearmango 1086

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

poj 2528/3277 线段树(海报覆盖)

题意:给定一些海报,可能互相重叠,告诉你每个海报宽度(高度都一样)和先后叠放次序,问没有被完全盖住的海报有多少张。 思路:

dearmango 988

poj 2418 BST(计算树木的比例)

题目翻译:硬木在植物学中是一类树,它具有阔叶,生产水果或者坚果,并且通常在冬天休眠。美国的温度气候产生了上百种硬木品种,即拥有特定生物学特征的树。例如,尽管橡树、枫树和樱桃树都属于硬木,但是它们属于不同的品种。总体来说,在美国所有的硬木品种大约占据所有树木的百分之四十。 另一方面,软木(或者称之为针叶树),拉丁语意为“圆锥轴承”,是有针状叶子的一类树。美国广泛存在的软木包括雪松、冷杉、铁杉、松树

dearmango 907

poj 3321/3263 树状数组(苹果树/排身高)

题意:每个分叉点及末梢可能有苹果(最多1个), 每次可以摘掉一个苹果,或有一个苹果新长出来,随时查询某个分叉点所在的子树里, 一共有多少个苹果。 思路:深度优先遍历整个苹果树,为每个节点标记一个开始时间和结束时间(所有时间都不相同),显然子树里面所有节点的开始和结束时间,都位于子树树根的开始和结束时间之间。那么苹果的有无只需在开始时间那个点(在结束时间那个点上也可以)上面进行加减1的操作即可。然

dearmango 902

poj 3250 单调栈(看到前面的牛的数量)

题意:一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛后面的其他牛。给出这些牛的高度,要求每头牛可以看到的牛的数量的和。 思路:单调栈(类似2559和3934),栈中按照递减顺序保存牛的高度,对于当前牛判断它入栈的位置。其实stack不必设置h域,stack只存下标即可,找栈中高度用s[下标]就行了。 看到另一

dearmango 871

poj 1456 贪心+并查集优化(卖带截止时间货物的最大利润)

题意:给定若干中商品,每种商品有两个属性,一个是其售价,另一个是其最晚售出时间,从 思路:

dearmango 868

poj 2002 hash(平面上若干点能够成多少正方形)

题意:给定二维平面上不超过1000个点(点坐标的绝对值 思路:枚举两个顶点,可以确定另外两个顶点的位置,判断另外两个顶点是否存在于点集中。先用hash把点存储一下,然后判断。此处用了stl 的set。 因为多组,所以一开始要清空set,忘了这一步导致wa了多次。 #include #include #include #include using namespace std; int

dearmango 836

poj 2104 划分树(查询区间第k大数)

题意:给定一个n个数的数组,有m个查询,每个查询为[a,b,k],意思是区间[a,b]的第k大数。 思路:由这个题认识了什么叫做划分树。划分树的基本思想就是对于某个区间,把它划分成两个子区间,左边区间的数小于右边区间的数。查找的时候通过记录进入左子树的数的个数,确定下一个查找区间,最后范围缩小到1,就找到了。 建树的过程比较简单,对于区间[l,r],首先通过对原数组的排序找到这个区间的中位数a

dearmango 762

poj 3494 dp(最大全1子矩阵)

题意:给定一个n*m大小的0-1矩阵,

dearmango 755

poj 2761 线段树(多次查询不覆盖区间的第k小数)

题意:给定n个数,m次查询(a,b,k),表示查询第a个数到第b个数(闭区间[a,b])中的第k小数。其中这m个区间保证没有一个完全覆盖另外一个。 思路:首先考虑没有区间覆盖的意思:对于最小的区间终点,它对应的起点一定是最小的区间起点。首先离散化。然后使用线段树,每个节点(如表示区间为[a,b])维护一个值small表示位于其左儿子的个数。然后对于每个区间(对区间先排序)更新查询即可。时间复杂度

dearmango 755

poj 1785 构造笛卡尔树(右链插入/RMQ)

题意:给定n个(label,priority)的二元组,以此构建笛卡尔树。所谓笛卡尔树(treap),看label为二叉排序树,而看priority为堆。 思路:(http://www.cnblogs.com/rainydays/archive/2011/06/15/2081266.html)先把节点按lable排序,从小到大依次插入,这样每次插入的节点就要插到排序二叉树的最右边。之前先建立一个

dearmango 742
上一篇: poj 2413 大数模拟(区间内的斐波那契数个数)
下一篇: poj 1204 trie树/AC自动机(在二维词表中找词)
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值