hdu 3564 线段树+dp

实在惭愧。。。理解错了题意还A了。。 

题意:现在第i个数字表示i这个数字放在第几个位置上面,如果这个位置上面已经有数字则向后移动。

一开始我以为是先将所有的数字放好位子之后+二分最长上升就可以,但是思路错了,真正应该记录的值是i这个数字存放在哪个位子,我们在保证数字一定上升的基础上,来求位子的上升。因为第一个数字放的是1,第二个为2,这样的话我们就能求出每次放一个数字产生的最上升序列长度了。。

View Code
 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 const int N = 100005;
 5 int Pos[N],num[N],len[N<<2];
 6 void build(int t,int l,int r)
 7 {
 8      len[t]=r-l+1;
 9      if(l==r)return ;
10      int m=(l+r)>>1;
11      build(t<<1,l,m);
12      build(t<<1|1,m+1,r);
13 }
14 void update(int t,int l,int r,int v,int i)
15 {
16      len[t]--;
17      if(l==r)
18      {
19          Pos[i]=l;
20          return ;
21      }
22      int m=(r+l)>>1;
23      if(len[t<<1]>=v)update(t<<1,l,m,v,i);
24      else update(t<<1|1,m+1,r,v-len[t<<1],i);
25 }
26 int F_pos(int k,int len)
27 {
28     int l=1,r=len;
29     while(l<=r)
30     {
31         int m=(l+r)>>1;
32         if(num[m]<k)l=m+1;
33         else r=m-1;
34     }
35     return l;
36 }
37 int main()
38 {
39     int t,n,top,T=0;
40     scanf("%d",&t);
41     while(t--)
42     {
43           scanf("%d",&n);
44           build(1,1,n);
45           for(int i=1;i<=n;i++)
46           {
47               scanf("%d",&num[i]);
48               num[i]++;
49           };
50           for(int i=n;i>=1;i--)
51           {
52              update(1,1,n,num[i],i);
53           }
54           top=0;
55           printf("Case #%d:\n",++T);
56           for(int i=1;i<=n;i++)
57           {
58              if(top==0||Pos[i]>num[top])
59              num[++top]=Pos[i];
60              else
61              {
62                int f=F_pos(Pos[i],top);
63                num[f]=Pos[i];
64              }
65              printf("%d\n",top);
66           }
67           printf("\n");
68     }
69     return 0;
70 }

 

转载于:https://www.cnblogs.com/nuoyan2010/archive/2012/10/31/2748673.html

# 高校智慧校园解决方案摘要 智慧校园解决方案是针对高校信息化建设的核心工程,旨在通过物联网技术实现数字化校园的智能化升级。该方案通过融合计算机技术、网络通信技术、数据库技术和IC卡识别技术,初步实现了校园一卡通系统,进而通过人脸识别技术实现了更精准的校园安全管理、生活管理、教务管理和资源管理。 方案包括多个管理系统:智慧校园管理平台、一卡通卡务管理系统、一卡通人脸库管理平台、智能人脸识别消费管理系统、疫情防控管理系统、人脸识别无感识别管理系统、会议签到管理系统、人脸识别通道管理系统和图书馆对接管理系统。这些系统共同构成了智慧校园的信息化基础,通过统一数据库和操作平台,实现了数据共享和信息一致性。 智能人脸识别消费管理系统通过人脸识别终端,在无需接触的情况下快速完成消费支付过程,提升了校园服务效率。疫情防控管理系统利用热成像测温技术、视频智能分析等手段,实现了对校园人员体温监测和疫情信息实时上报,提高了校园公共卫生事件的预防和控制能力。 会议签到管理系统和人脸识别通道管理系统均基于人脸识别技术,实现了会议的快速签到和图书馆等场所的高效通行管理。与图书馆对接管理系统实现了一卡通系统与图书馆管理系统的无缝集成,提升了图书借阅的便捷性。 总体而言,该智慧校园解决方案通过集成的信息化管理系统,提升了校园管理的智能化水平,优化了校园生活体验,增强了校园安全,并提高了教学和科研的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值