1097 - 萌萌哒的第二题

题意:中文题好像没有必要说题意了吧。。

思路:我们知道由于运输桥不能交叉,所以从右往左所修建的桥的序号是严格单增的。但是每个工厂B有6种选择,只能选一个求最多能建造几座桥,也就是最长单增子序列。

放出题解吧:可以连接的两个工厂相当于可以匹配的两个点,那么问题转化为求两个串的最长公共子序列,但O(n^2)的复杂度会超时,由于第二个串每个点最多只有6个点与之匹配,所以可以把第二个串的每个点变成可以与之匹配的六个编号从大到小排序,然后求最长上升子序列。

从大到小是保证每个工厂B只选一个出来。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <algorithm>
using namespace std; int b[10];
int f[600020];
int n, x; int main() { while (scanf("%d", &n) != EOF) {
assert(1 <= n && n <= 100000);
memset(f, 0x3f, sizeof f);
for (int i = 0; i < n; i++) {
for (int j = 0; j < 6; j++) {
scanf("%d", &b[j]);
}
sort(b, b + 6);
for (int j = 5; j >= 0; j--) {
*lower_bound(f, f + n, b[j]) = b[j];
}
}
printf("%d\n", (int)(lower_bound(f, f + n, 0x3f3f3f3f) - f));
}
return 0;
}//标程

菜鸡版:

int a[N],b[N];
int main()
{
int n;
int s[7];
while(~scanf("%d",&n))
{
int l=0,len=0;
for(int i=1;i<=n;i++)
{
for(int j=0;j<6;j++) scanf("%d",&s[j]);
sort(s,s+6);
int k=unique(s,s+6)-s;
for(int i=k-1;i>=0;i--) a[l++]=s[i];//从大到小独一无二。
}
b[len++]=a[0];
for(int i=1;i<l;i++)
{
if(a[i]>b[len-1]) b[len++]=a[i];
else
{
int k=lower_bound(b,b+len,a[i])-b;
b[k]=a[i];
}
}
printf("%d\n",len);
}
return 0;
}

这个题真是亦可赛艇啊,导致我校部分选手卡到最后。不会应该及时跳过去,final悲剧再现。



“玲珑杯”ACM比赛 Round #11 " ---1097 - 萌萌哒的第二题的更多相关文章

  1. “玲珑杯”ACM比赛 Round #11 B -- 萌萌哒的第二题

    DESCRIPTION 一条东西走向的河两边有都排着工厂,北边有n间工厂A提供原材料,南边有n间工厂B进行生产.现在需要在工厂A和工厂B之间建运输桥以减少运输成本.可是每个工厂B只能接受最多6个工厂A ...

  2. “玲珑杯”ACM比赛 Round #11 B题

    http://www.ifrog.cc/acm/problem/1097?contest=1013&no=1 //LIS的高端写法 #include <iostream> #inc ...

  3. “玲珑杯”ACM比赛 Round #12题解&源码

    我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧!                                     A ...

  4. “玲珑杯”ACM比赛 Round #1

    Start Time:2016-08-20 13:00:00 End Time:2016-08-20 18:00:00 Refresh Time:2017-11-12 19:51:52 Public ...

  5. “玲珑杯”ACM比赛 Round #19题解&源码【A,规律,B,二分,C,牛顿迭代法,D,平衡树,E,概率dp】

    A -- simple math problem Time Limit:2s Memory Limit:128MByte Submissions:1599Solved:270 SAMPLE INPUT ...

  6. “玲珑杯”ACM比赛 Round #19 B -- Buildings (RMQ + 二分)

    “玲珑杯”ACM比赛 Round #19 Start Time:2017-07-29 14:00:00 End Time:2017-07-29 16:30:00 Refresh Time:2017-0 ...

  7. “玲珑杯”ACM比赛 Round #18

    “玲珑杯”ACM比赛 Round #18 Start Time:2017-07-15 12:00:00 End Time:2017-07-15 15:46:00 A -- 计算几何你瞎暴力 Time ...

  8. “玲珑杯”ACM比赛 Round #1 题解

    A:DESCRIPTION Eric has an array of integers a1,a2,...,ana1,a2,...,an. Every time, he can choose a co ...

  9. 玲珑杯”ACM比赛 Round #4 1054 - String cut 暴力。学到了扫描的另一种思想

    http://www.ifrog.cc/acm/problem/1054 问删除一个字符后的最小循环节是多少. 比赛的时候想不出,不知道怎么暴力. 赛后看了别人代码才晓得.唉,还以为自己字符串还不错, ...

随机推荐

  1. JAVA-汉字转换成汉语拼音(pinyin4j-2.5.0-sources.jar)

    在项目中,经常会使用汉语拼音,特别是把汉字转换成汉语拼音.下面给出一种常用的工具. 在使用该程序必须添加 pinyin4j-2.5.0-sources.jar包. import net.sourcef ...

  2. poj 2406 Power Strings 周期问题

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 48139   Accepted: 20040 D ...

  3. Azure powershell 获取 vmSize 可用列表的命令

    1.使用 Add-AzureAccount -Environment azurechinacloud 登录到订阅 2.选择默认的订阅 Select-AzureSubscription -Subscri ...

  4. SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行。

    Oracle数据导入报错:SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行. 原因:进入sqlplus里是不能执行imp的(sqlplus不认 ...

  5. 源文件名长度大于系统支持的长度,无法删除,java主方法执行方式删除

    import java.io.File; /** * @author 海盗船长 * 2017年2月14日11:24:26 */ public class DeleteFiles { public st ...

  6. Azure School女神相邀,把每分钟都过的更充实

    也许你不姓「牛」,但是你技术牛啊 所以,请容我叫你一声「牛郎」 (讲真,只是因为你技术牛,不是其他啥原因哈) 平时忙到昏天黑地,一心一意为技术的你 注意看一下日历,因为: !!!七夕节(8月28日)到 ...

  7. 面向 AWS 专家的 Azure 云服务介绍

    本文是面向 AWS 专家的 Azure 云服务介绍,参考本文可以帮助大家“按图索骥”在 Azure 的平台上找到能满足自己需求的服务. 公有云市场经过多年发展,已经涌现出几家大规模的提供商,如 Azu ...

  8. Python学习日志9月14日

    今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...

  9. iOS的设计备忘录/资源集合(新手快速开发)

    iOS的设计备忘录 随着iOS7更新,风格走上扁平化,大部分iOS设计师及程序员都需要对自己的软件做相关调整,尺寸.Icon.UI等等,我在这里总结一下相关资料,以及提供一些关于iOS7设计素材. 一 ...

  10. 屏蔽系统的Ctrl+c/x/v操作

    实现效果: 知识运用: KeyEventArgs类的Control, public bool Control {get;} //获取一个值 该值指示是否曾按下Ctrl键 KeyCode和Handled ...