DAG转移,从切题的数量来看是一道水题,给你n个棒,大的可以延续小的,问最少上升子序列的个数。

其实这道题是用贪心来写的,因为这是个有向无环图,到达分叉口,每一条路都要便历,所以每条路应该一样对待,有两维限制,可以先对其中一维进行排序,然后根据第二维的情况进行处理。

for循环:

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<cstring>
using namespace std;
int n;
struct node
{
int u,v;
}big[];
bool vis[];
bool cmp(node a,node b)
{
if(a.u<b.u)
return ;
else if(a.u==b.u&&a.v<b.v)
return ;
return ;
}
int main()
{
//freopen("input.txt","r",stdin);
int cas;
cin>>cas;
while(cas--)
{
cin>>n;
for(int i=;i<n;i++)
{
cin>>big[i].u>>big[i].v;
}
sort(big,big+n,cmp);
int ans=;
int t=;
memset(vis,,sizeof(vis));
for(int i=;i<n;i++)
{
if(vis[i])
continue;
vis[i]=;
t=big[i].v;
ans++;
for(int j=i+;j<n;j++)
{
if(big[j].v>=t&&vis[j]==)
{
t=big[j].v;
vis[j]=;
}
}
}
printf("%d\n",ans);
}
}

记忆化dfs贪心:

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<cstring>
using namespace std;
int n;
struct node
{
int u,v;
}big[];
bool vis[];
bool cmp(node a,node b)
{
if(a.u<b.u)
return ;
else if(a.u==b.u&&a.v<b.v)
return ;
return ;
}
void dfs(int x)
{
if(vis[x])
return;
vis[x]=;
for(int j=x+;j<n;j++)
{
if(vis[j]==&&big[j].v>=big[x].v)
{
dfs(j);
break;//记忆化贪心的时候要加上break;
}
}
} int main()
{
//freopen("input.txt","r",stdin);
int cas;
cin>>cas;
while(cas--)
{
cin>>n;
for(int i=;i<n;i++)
{
cin>>big[i].u>>big[i].v;
}
sort(big,big+n,cmp);
int ans=;
memset(vis,,sizeof(vis));
for(int i=;i<n;i++)
{
if(!vis[i])
{
dfs(i);
ans++;
}
}
printf("%d\n",ans);
}
}

zoj1025 Wooden Sticks的更多相关文章

  1. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  2. POJ 1065 Wooden Sticks

    Wooden Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16262 Accepted: 6748 Descri ...

  3. HDU ACM 1051/ POJ 1065 Wooden Sticks

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  4. 1051 Wooden Sticks

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  5. Wooden Sticks

    Wooden Sticks Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  6. C - Wooden Sticks

    C - Wooden Sticks Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  7. HDU 1051 Wooden Sticks (贪心)

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  8. uvalive 2322 Wooden Sticks(贪心)

    题目连接:2322 Wooden Sticks 题目大意:给出要求切的n个小木棍 , 每个小木棍有长度和重量,因为当要切的长度和重量分别大于前面一个的长度和重量的时候可以不用调整大木棍直接切割, 否则 ...

  9. Wooden Sticks(杭州电1051)

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

随机推荐

  1. Protobuf完整实例

    地址: http://pan.baidu.com/s/1gfLLavD 密码: v7u9 下载,打开,运行,即可.

  2. Hibernate 关联关系映射实例

    双向多对一/一对多(many-to-one/one-to-many) 例子,多个学生对应一个班级,一个班级对应多个学生: 班级类,Grade.java: public class Grade { pr ...

  3. What is SignalR and Why Should I Use It?

    原文地址: What is SignalR and why should I use it? When I first heard about SignalR, I was not sure what ...

  4. Mysql优化之创建高性能索引(一)

    1.索引基础 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.但是不恰当的索引随着数据量的增加,也会使整个数据库的性能下降. 举个例子: ; 如果在id上建立索引 ...

  5. js获取当期日期累加天数

    本文是转载的,,忘记出处了,我用上了,也给大家分享一下 一.日期减去天数等于第二个日期 function cc(dd,dadd)...{//可以加上错误处理var a = new Date(dd)a ...

  6. pat_1

    2-0 2-1 #include <stdio.h> int main() { int inch,foot,cm; scanf("%d",&cm); foot= ...

  7. PHP字符编码问题-总结

    今天在网上看到一个人的对于php开发中字符编码的总结,感觉不错,摘录如下: 一,php编码转换        1.通过iconv()函数实现编码转换                语法:iconv(s ...

  8. Font Awesome 4.0.3 字体图标完美兼容IE7

    1.下载Font Awesome 4.0.3兼容包,http://www.thinkcmf.com/index.php?m=font 2.解压,并放到自己网站系统合适的位置(如果你的站已使用Font ...

  9. deepin添加新的打开方式软件

    在/usr/share/applications文件夹中,你可以先打开一个其他的软件比如geany,然后根据geany的配置配置你所需要的新软件

  10. java学习:AWT组件和事件处理的笔记(1)--文本框

    java.awt包中的TextField类是专门用来建立文本框的,即TextField类创建的一个对象便是一个文本框. 1.TextField类的主要方法    (1)TextField()      ...