最近真是太废柴了,题没做几道,也没学什么新知识,多校做了三场也没总结~诶!好好学吧!

多校第一场感觉被完虐...orz...

Hdu 5288 OO’s Sequence

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288

题意:

  f(l,r)表示满足ai%aj≠0的i的个数(i∈[l,r],j∈[l,r],j≠i)
  已知n个数 a1,a2,…an,求

  

思路:这个题实质是对于一个包含ai的区间,如果ai符合上述条件,即对于aj,ai%aj≠0,则aj不是ai的因子
对于每一个数ai,分别向左向右去找离它最近的因子的下标L[i],R[i],ans+=(i-L[i])*(R[i]-i);

参考代码:

  

 #include<stdio.h>
#include<string.h>
#include<algorithm>
const int N=;
#define Mod 1000000007
using namespace std;
int a[N+],id[N+],L[N+],R[N+];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=; i<=n; i++)
scanf("%d",&a[i]);
memset(id,,sizeof(id));
for(int i=; i<=n; i++) //向左找最近的因子下标
{
L[i]=;
for(int j=; j*j<=a[i]; j++)
if(a[i]%j==) //j和a[i]/j都为a[i]的因子
{
if(id[j])
L[i]=max(L[i],id[j]); //取最大的下标即为最近的
if(id[a[i]/j])
L[i]=max(L[i],id[a[i]/j]);
}
id[a[i]]=i; //记录a[i]的下标
}
memset(id,,sizeof(id));
for(int i=n; i>=; i--) //向右找最近的因子下标
{
R[i]=n+;
for(int j=; j*j<=a[i]; j++)
if(a[i]%j==)
{
if(id[j])
R[i]=min(R[i],id[j]);
if(id[a[i]/j])
R[i]=min(R[i],id[a[i]/j]);
}
id[a[i]]=i;
}
long long ans=;
for(int i=; i<=n; i++)
ans=(ans+(long long)(i-L[i])*(R[i]-i)%Mod)%Mod;
printf("%I64d\n",ans);
}
return ;
}

Assignment

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289

题意:  求有多少个区间满足区间内任意两个数的差值小于k

思路:  区间内最大差值为区间内最大值与最小值的差,只要其差满足条件,

   则该区间符合条件左区间l先固定,去找最大区间符合条件,即[l,r-1]符合,

  那么ans+=((r−l)/2)+r−l,然后r不变,l不断加1,直到找到符合条件的 [l,r]为止,

   那么[l,j-1]会被重复算,需要减掉.

  为了更快的查询每个区间的最大最小值,用线段树实现

参考代码:

  

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; #define LL(x) (x<<1)
#define RR(x) (x<<1|1)
#define MID(a,b) (a+((b-a)>>1))
const int N=;
#define INF (1<<30)
struct node
{
int lft,rht;
int maxm;
int minm;
int mid()
{
return MID(lft,rht);
}
};
struct Segtree
{
node tree[N*];
void build(int lft,int rht,int rt)
{
tree[rt].lft=lft;
tree[rt].rht=rht;
tree[rt].maxm=-INF;
tree[rt].minm=INF;
if(lft==rht)
{
scanf("%d",&tree[rt].minm);
tree[rt].maxm=tree[rt].minm;
}
else
{
int mid=tree[rt].mid();
build(lft,mid,LL(rt));
build(mid+,rht,RR(rt));
tree[rt].maxm=max(tree[LL(rt)].maxm,tree[RR(rt)].maxm);
tree[rt].minm=min(tree[LL(rt)].minm,tree[RR(rt)].minm);
}
}
int querymaxm(int st,int ed,int rt)
{
int lft=tree[rt].lft,rht=tree[rt].rht;
if(st<=lft&&rht<=ed)
return tree[rt].maxm;
else
{
int mid=tree[rt].mid();
int sum1=-INF,sum2=-INF;
if(st<=mid)
sum1=querymaxm(st,ed,LL(rt));
if(ed>mid)
sum2=querymaxm(st,ed,RR(rt));
return max(sum1,sum2);
}
}
int queryminm(int st,int ed,int rt)
{
int lft=tree[rt].lft,rht=tree[rt].rht;
if(st<=lft&&rht<=ed)
return tree[rt].minm;
else
{
int mid=tree[rt].mid();
int sum1=INF,sum2=INF;
if(st<=mid)
sum1=queryminm(st,ed,LL(rt));
if(ed>mid)
sum2=queryminm(st,ed,RR(rt));
return min(sum1,sum2);
}
}
} seg;
__int64 f(__int64 n)
{
if(n%)
{
return (n-)/*n;
}
return n/*(n-);
}
int main()
{
int T;
int i,j;
int n,k;
scanf("%d",&T);
while(T--)
{
__int64 sum=;
scanf("%d%d",&n,&k);
seg.build(,n,);
i=;
j=;
while(i<=n&&j<=n)
{
int ma=seg.querymaxm(i,j,);
int mi=seg.queryminm(i,j,);
if((ma-mi)>=k)
{
sum+=(j-i)+f(j-i);
i++;
for(; i<j; i++)
{
if((seg.querymaxm(i,j,)-seg.queryminm(i,j,))<k)
{
sum-=(j-i)+f(j-i);
j++;
break;
}
}
}
else
{
if(j==n)
sum+=(j-i+)+f(j-i+);
j++;
}
}
printf("%I64d\n",sum);
}
return ;
}

2015 Multi-University Training Contest 1的更多相关文章

  1. 2015 Multi-University Training Contest 8 hdu 5390 tree

    tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ...

  2. 2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】

    2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North ...

  3. 2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】

    2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据 ...

  4. Root(hdu5777+扩展欧几里得+原根)2015 Multi-University Training Contest 7

    Root Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Su ...

  5. 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)

    官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...

  6. HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6

    Hiking Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total S ...

  7. hdu 5288 OO’s Sequence(2015 Multi-University Training Contest 1)

    OO's Sequence                                                          Time Limit: 4000/2000 MS (Jav ...

  8. HDU5294 Tricks Device(最大流+SPFA) 2015 Multi-University Training Contest 1

    Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  9. hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)

    CRB and Tree                                                             Time Limit: 8000/4000 MS (J ...

  10. 2015多校联合训练赛 hdu 5308 I Wanna Become A 24-Point Master 2015 Multi-University Training Contest 2 构造题

    I Wanna Become A 24-Point Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 ...

随机推荐

  1. 一天一个类--NIO 之Buffer

    java.nio  --- 定义了 Buffer 及其数据类型相关的子类.其中被 java.nio.channels 中的类用来进行 IO 操作的 ByteBuffer 的作用非常重要. java.n ...

  2. 2014 HDU多校弟五场A题 【归并排序求逆序对】

    这题是2Y,第一次WA贡献给了没有long long 的答案QAQ 题意不难理解,解题方法不难. 先用归并排序求出原串中逆序对的个数然后拿来减去k即可,如果答案小于0,则取0 学习了归并排序求逆序对的 ...

  3. ognl中的#、%和$

    多学点,谢谢兄弟 原文地址:ognl中的#.%和$作者:百合 ognl中的#.%和$ #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里笔者简单介绍它们的相 ...

  4. Android学习笔记:adb 与 adb shell操作 以及中文乱码解决

    1.安装app >adb install xxx.apk 2.卸载app >adb uninstall app的包路径 如:>adb uninstall com.example.my ...

  5. 全球在一个 level 上思考的价值观和想法是一样的(转)

    近日,福布斯中文版总编辑周建工对话马云,谈到腾讯频繁的大笔收购,马云点评称腾讯收购的所有的案子,老百性都看得懂,这就错了.战略就像买股票一样,如果老太太都开始买股票了,一定有问题. 以下是对话内容,转 ...

  6. 《UNIX环境高级编程》笔记--sync、fsync和fdatasync函数

    传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘 I/O都通过缓冲进行.当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列 ...

  7. HDU 4738 双连通模版题

    九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11711577 题意:给定n个点,m条无向边 下面m行表示u , v ,边权值 求 ...

  8. Xcode4.5 本地化,多语言设置

    网上已有很多关于ios本地化的博客和资料,由于部分原作者使用的Xcode版本较早,4.5以后的版本已不再支持该方法,后来也没有更新,因此在此写一点学习资料分享出来.废话不多说.     ios本地化主 ...

  9. ListView优化问题

    可以参考:http://blog.csdn.net/bill_ming/article/details/8817172和http://blog.csdn.net/xiangjai/article/de ...

  10. Fragment使用

    当我们需要动态的多界面切换的时候,就需要将UI元素和Activity融合成一个模块.在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变.在4.0或以上系统中就可以 ...