码迷,mamicode.com
首页 > 其他好文 > 详细

第二周 7.26-8.1

时间:2015-07-26 13:56:40      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

7.26

多校第一场1006的一篇题解看了好几天了。

复习了LCA。只会离线的。

想了很久其中的状态转移。

以及dfs序和求和的方法。

从昨天下午开始码。今天终于码(抄)好了。

一会补在多校那篇里。

先补个BC。

 

HDU 5312 Sequence

按照官方题解。

先看能不能一个。我lower_bound找的。

然后拆两个的时候不能太暴力。会T的。

从两边线性找是可以过的。(然而时间也蛮多。

3-8的情况方便了。

感觉时间主要在2上。目前也不会更快的方法。

技术分享
 1 # include <iostream>
 2 # include <cstdio>
 3 # include <algorithm>
 4 using namespace std;
 5 int a[20000];
 6 
 7 int main(void)
 8 {
 9     int n;
10     for(int i=0;;i++)
11     {
12         a[i]=3*i*(i-1)+1;
13         if(a[i]>1000000000) {n=i;break;}
14     }
15     int T; cin>>T;
16     while(T--)
17     {
18         int m; scanf("%d",&m);
19         int x=lower_bound(a,a+n,m)-a;
20         if(a[x]==m) {printf("1\n"); continue;}
21         int ans=-1,s=1,t=n-1;
22         while(s<=t)
23         {
24             if(a[s]+a[t]==m) {ans=2;break;}
25             if(a[s]+a[t]>m) t--;
26             if(a[s]+a[t]<m) s++;
27         }
28         if(ans>0) {printf("%d\n",ans); continue;}
29         for(int i=3;i<10;i++)if((m-i)%6==0){ans=i;break;}
30         printf("%d\n",ans);
31     }
32     return 0;
33 }
Aguin

 

第二周 7.26-8.1

标签:

原文地址:http://www.cnblogs.com/Aguin/p/4677456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!