这个题会联想到拦截导弹的题目http://codevs.cn/problem/1044/

首先用动态规划,利用Dilworth定理解题,然而超时了(╥╯^╰╥)

关于Dilworth定理,我的理解:

  389 207 155 300 299 170 158 65

  最长不上升子序列(389 300 299 170 158 65)“最多能拦截6个导弹”;

  最长上升子序列,即最少的链划分数为2,“要拦截所有导弹需要2套系统”。

 //2016.2.24
//心急的C小加
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std; const int maxn=+;
int dp[maxn];
int n,cnt; struct Wood{
int length;
int weight;
Wood(int l=,int w=):length(l),weight(w){}
}wood[maxn]; //按质量大小排序,质量相同的按长度排序
bool cmp(const Wood &a,const Wood &b){
if(a.weight==b.weight){
return a.length<=b.length;
}else{
return a.weight<=b.weight;
}
} //Dilworth定理,求最长非上升子序列---------超时
void solve(){
cnt=;
for(int i=;i<n;i++){
dp[i]=;
for(int j=;j<i;j++){
if(wood[j].length>wood[i].length){
dp[i]=max(dp[i],dp[j]+);
}
}
cnt=max(cnt,dp[i]);
}
cout<<cnt<<endl;
} int main(){
int t;
cin>>t;
while(t--){
cin>>n;
for(int i=;i<n;i++){
cin>>wood[i].length>>wood[i].weight;
}
sort(wood,wood+n,cmp);
solve();
}
return ;
}

下面是AC代码:

 //2014.2.25
//心急的C小加
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std; const int maxn=+;
int n; struct Wood{
int length;
int weight;
int isVisit; //增加一个标记位
Wood(int l=,int w=,int v=):length(l),weight(w),isVisit(v){}
}wood[maxn]; //按质量大小排序,质量相同的按长度排序
bool cmp(const Wood &a,const Wood &b){
if(a.weight==b.weight){
return a.length<=b.length;
}else{
return a.weight<=b.weight;
}
} void solve(){
int tmp,cnt=;
for(int i=;i<n;i++){
if(wood[i].isVisit==){
cnt++;
tmp=wood[i].length;
for(int j=i+;j<n;j++){
if(wood[j].isVisit==&&wood[j].length>=tmp){
tmp=wood[j].length;
wood[j].isVisit=; //如果满足增序就标志为1
}
}
}
}
cout<<cnt<<endl;
} int main(){
int t;
cin>>t;
while(t--){
cin>>n;
for(int i=;i<n;i++){
cin>>wood[i].length>>wood[i].weight;
wood[i].isVisit=;          //初始化很容易忘记!
}
sort(wood,wood+n,cmp);        
solve();
}
return ;
}

NYOJ心急的C小加——贪心的更多相关文章

  1. 心急的C小加 贪心算法

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...

  2. nyoj 236 心急的C小加

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...

  3. ACM 心急的C小加

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...

  4. 心急的C小加(两种解法)

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的 ...

  5. ny236 心急的C小加 hdoj1051 Wooden Sticks

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间 ...

  6. 心急的C小加

    描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果 第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则 ...

  7. 问题 G: 心急的C小加

    题目描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否 ...

  8. nyoj 236心急的C小加 动态规划( java)

    sort函数用法: #include<algorithm> using namespace std; sort(a,a+len;cmp)    //a-->数组名,    len-- ...

  9. nyoj--236--心急的C小加(动态规划&&LIS)

    心急的C小加 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间 ...

随机推荐

  1. esp32使iOS 获取蓝牙外设的Mac地址

    最近在做一个需要上下位机的项目,我负责的任务下位机,使用的主控芯片是esp32.这个项目中有一项是需要手机扫描二维码然后连接作为esp32的蓝牙.二维码中包含了mac地址信息,在手机扫描周围设备的时候 ...

  2. Django 路由视图FBV/CBV

    路由层  url路由层结构 from django.conf.urls import url from django.contrib import admin from app01 import vi ...

  3. 【剑指Offer】48、不用加减乘除做加法

      题目描述:   写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号.   解题思路:   本题同样是对发散思维能力的一个考察.首先,我们需要考虑是要求和却不能使用四则运算 ...

  4. 【ownCloud】添加信任域

    如果在安装ownCloud后,更换了访问方式,比如刚开始是http://127.0.0.1/owncloud,变成了http://1.1.1.1/owncloud,那么在访问时可能得到这样的页面: 您 ...

  5. python第十二周:SQL alchemy、pymysql

    python操作MySQL mysqldb python3之后的版本就不支持mysqldb了,故在此略过 pymysql #执行SQL语句 # -*- coding:utf-8 -*- #!/user ...

  6. VC2010常见问题的解决方案

    vc++里面的obj文件是什么文件Project(项目)中每个cpp经编译成为obj(object)目标文件,所有obj文件和资源文件经链接(link)成为可执行文件,obj文件可称为目标文件或中间文 ...

  7. Balanced Number

    Balanced Number Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  8. HDU - 2973 - YAPTCHA

    先上题目: YAPTCHA Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  9. 怎样手动的干净的删除linux上的ORACLE数据库

    近期在用VMWARE虚拟机做ORACLE的数据库实验.我们都知道在WINDOWS上,我能够到加入删除程序里去自己主动删除已经安装的全部的应用程序.可是在LINUX上没有这个服务能够进行自己主动的删除. ...

  10. 检測wifi是否须要portal验证 公共场所wifi验证

    何为wifi portal验证? 平时在商场,咖啡厅,银行等公共场所.我们手机提示:有可用WLAN.这些WIFI能够直接连接,不须要password,但须要我们手动在手机网页上进行验证,通常是输入一个 ...