题目列表:hdu5214~5223

5214:

当时第一反应是由递推公式推出通项公式,事实证明这就是作!大!死!

因为通项公式是这样的:L[n]=a^(n-1)*(b+L[1])-b

于是就需要快速幂。然而用了快速幂还是慢。。。【实际上是被卡在了7000ms多一点点。。。】

其实直接放到数组里一项一项递推就行。。速度并不慢还省事

另外本题还有一个point:被mod的那个数字很奇怪,所以直接用unsigned int存就行。不仅省空间还不用mod了(溢出相当于自动mod)

当时没想起来这个于是用了long long,于是数组存不下,于是T^T

 #include <iostream>
#include <cstdio>
#include <cstring>
#define LL unsigned int
//#define MOD 4294967296
using namespace std;
LL N,L1,R1,a,b,c,d,T;
LL ll[],rr[];
LL li,ri; int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d%d%d%d",&N,&L1,&R1,&a,&b,&c,&d);
ll[]=L1; rr[]=R1;
if(L1>R1) swap(L1,R1);
LL minl=L1,minr=R1,maxl=L1,maxr=R1;
for(LL i=;i<=N;i++)
{
ll[i]=ll[i-]*a+b;
rr[i]=rr[i-]*c+d;
li=ll[i],ri=rr[i];
if(li>ri) swap(li,ri);
if (ri<minr)
{
minl=li;
minr=ri;
}
if (li>maxl)
{
maxl=li;
maxr=ri;
}
}
bool ok=false;
//cout<<minl<<","<<minr<<" "<<maxl<<","<<maxr<<endl;
for(LL i=;i<=N;i++)
{
li=ll[i]; ri=rr[i];
if(li>ri) swap(li,ri);
//cout<<li<<","<<ri<<endl;
if((li>minr)&&(ri<maxl))
{
ok=true;
break;
}
}
if (ok) printf("YES\n"); else printf("NO\n");
}
return ;
}

5222:

并查集+拓扑排序

对于双向边联通的那些点,可以看作一个点。(因为它们任意两点之间都可以到达)

最后把这个union作为一个点,和剩下的单向边放一起构图。然后拓扑排序判断有没有环。

  #pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstdio>
#include<vector>
#include<cstring>
using namespace std;
#define MAXN 10000000
int f[MAXN]; //father
int d[MAXN]; //->i
int nxt[MAXN];
int head[MAXN];
int ev[MAXN];
int cnt;
int N,M1,M2,T,x,y; int find(int x)
{
if (f[x]!=x)
f[x]=find(f[x]);
return f[x];
} void iunion(int x,int y)
{
int fx,fy;
fx=find(x);
fy=find(y);
if (fx!=fy)
f[fx]=fy;
} void addedge(int x,int y) //x->y
{
d[y]++; //d[i]:点i的入度
ev[cnt]=y; //ev[i]:第i条边的destination
nxt[cnt]=head[x]; //nxt[i]:第i条边的下一条边
head[x]=cnt; //head[i]:由i节点出发的第一条边的序号
cnt++;
} void topsort()
{
int res=;
vector<int>vec;
for(int i=; i<=N; i++)
if(i==find(i))
{
++res;
if(d[i]==)
vec.push_back(i);
}
for(int i=; i<vec.size(); i++)
{
int u=vec[i];
for(int j=head[u]; ~j; j=nxt[j])
{
int v=ev[j];
d[v]--;
if(!d[v])
vec.push_back(v);
}
}
int last=vec.size();
if(last!=res)
printf("YES\n");
else printf("NO\n");
} int main()
{
cin>>T;
while(T--)
{
scanf("%d%d%d",&N,&M1,&M2);
for(int i=; i<=N; i++) f[i]=i;
bool ok=false;
for(int i=; i<=M1; i++)
{
scanf("%d%d",&x,&y);
int fx=find(x),fy=find(y);
if(fx==fy) ok=true;
else f[fx]=fy;
}
cnt=;
memset(d,,sizeof(d));
memset(head,-,sizeof(head));
for(int i=; i<=M2; i++)
{
scanf("%d%d",&x,&y);
int tx=find(x),ty=find(y);
addedge(tx,ty);
}
if(ok)
{
printf("YES\n");
}
else
topsort(); } return ;
}

5223:

这题当时交给队友了。。。。

题意:给出若干L,R,A,表示gcd(p[L],p[L+1],...,p[R])=A。要求解出原数组p[]

sol:首先来看几个有代表性的情况:

1 9 7     1 9 6    1 9 8    1 9 3    1 9 4    1 9 8    1 5 3

2 5 3     2 5 4    2 5 4    2 5 7    2 5 6    2 5 4    2 7 7

stupid     stupid     stupid    stupid     stupid    ok      ok

对所有的L,R,A,令p[i]=lcm(p[i],A)(L<=i<=R)。最后再验证一遍

其实最后验证的时候求区间的gcd可以用优化的方法(类似RMQ的那个)。本题数据小懒得用了= =

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define LL long long LL p[]; //array
int L[],R[]; //Li,Ri
LL A[]; //Ansi
int T,N,Q; LL gcd(LL a,LL b) //辗转相除法,返回gcd(a,b)
{
if (b==) return a;
return gcd(b,a%b);
} LL lcm(LL a,LL b)
{
LL t=gcd(a,b);
t=a*b/t;
return t;
} LL ggcd(int l,int r)
{
LL aa=p[l];
for(int i=l+;i<=r;i++)
aa=gcd(aa,p[i]);
return aa;
} LL llcm(int l,int r)
{
LL aa=p[l];
for(int i=l+;i<=r;i++)
aa=lcm(aa,p[i]);
return aa;
} int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&N,&Q);
for(int i=;i<=;i++)p[i]=;
for(int i=;i<=Q;i++)
{
scanf("%d%d%I64d",&L[i],&R[i],&A[i]);
//LL t=llcm(L[i],R[i]);
//t=lcm(t,A[i]);
for(int j=L[i];j<=R[i];j++)
p[j]=lcm(p[j],A[i]);
//p[j]=t;
}
bool ok=true;
for (int i=;i<=Q;i++)
{
LL t=ggcd(L[i],R[i]);
// printf("%d,%d = %I64d\n",L[i],R[i],t);
if (t!=A[i]) ok=false;
}
// for(int i=1;i<=N;i++)
// printf("%d ",p[i]);
// printf("\n");
if(ok)
{
for(int i=;i<N;i++)
printf("%I64d ",p[i]);
printf("%I64d\n",p[N]);
}
else
printf("Stupid BrotherK!\n");
}
return ;
}

bestcoder杯回顾的更多相关文章

  1. IDDD 实现领域驱动设计-一个简单业务用例的回顾和理解

    上一篇:<IDDD 实现领域驱动设计-由贫血导致的失忆症> 这篇博文是对<实现领域驱动设计>第一章后半部分内容的理解. Domain Experts-领域专家 这节点内容是昨天 ...

  2. 4星|《情感驱动》:可口可乐营销VP的案例回顾与经验总结

    情感驱动 作者是西班牙人,1963年出生,可口可乐前营销VP. 作者大学是法律专业,毕业后5年,在西班牙开了一个律师事务所,干了1年后去读MBA.1988年进入宝洁工作,1996年跳槽到可口可乐,辗转 ...

  3. 【BestCoder】【Round#42】

    模拟+链表+DP Orz AK爷faebdc A Growin要跟全部的n个人握手共2n杯香槟,再加上每对关系的两杯香槟,直接统计邻接矩阵中1的个数,再加2n就是answer //BestCoder ...

  4. 如何获取(GET)一杯咖啡——星巴克REST案例分析

    英文原文:How to GET a Cup of Coffee 我们已习惯于在大型中间件平台(比如那些实现CORBA.Web服务协议栈和J2EE的平台)之上构建分布式系统了.在这篇文章里,我们将采取另 ...

  5. [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)

    期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...

  6. 程序语言与编程实践2-> 蓝桥杯C/C++备赛记录1 | 入门了解与首周训练

    寒假前班主任帮我们报了名,是得好好准备准备.作为一个CSer,coding能力一定不能太弱.我反思,好久没写C/C++代码了,净是些随手写的python脚本,刚开始上手题目bug一大堆. 由于也不是啥 ...

  7. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  8. SQL Server-表表达式基础回顾(二十四)

    前言 从这一节开始我们开始进入表表达式章节的学习,Microsoft SQL Server支持4种类型的表表达式:派生表.公用表表达式(CTE).视图.内嵌表值函数(TVF).简短的内容,深入的理解, ...

  9. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

随机推荐

  1. HFSS学习

    关于边界条件和端口激励的设置,是HFSS应用和学习的重点和难点:“边界条件决定场”,正确地理解和使用边界条件是正确使用HFSS仿真分析电磁问题的前提:HFSS中定义了多种边界条件,大家在学习过程中必须 ...

  2. SQLServer(MSSQL)、MySQL、SQLite、Access相互迁移转换工具 DB2DB v1.4

    最近公司有一个项目,需要把原来的系统从 MSSQL 升迁到阿里云RDS(MySQL)上面.为便于测试,所以需要把原来系统的所有数据表以及测试数据转换到 MySQL 上面.在百度上找了很多方法,有通过微 ...

  3. 用 canvas 做个好玩的网站背景

    不知不觉又好久没更过博客了,老调新弹一下,之前做的一个小效果,觉得蛮有意思的,也有朋友问是怎么做的,就分享一下,写个博文吧. 先上demo吧:http://whxaxes.github.io/canv ...

  4. Altera SoC与Matlab的联合---第一步 软件安装与硬件测试

    参考设计:http://cn.mathworks.com/help/hdlcoder/examples/getting-started-with-hardware-software-codesign- ...

  5. Codeforces Round #370(div 2)

    A B C :=w= D:两个人得分互不影响很关键 一种是f[i][j]表示前i轮,分差为j的方案数 明显有f[i][j]=f[i-1][j-2k]+2*f[i-1][j-2k+1]+...+(2k+ ...

  6. optiontransferselect例子

    Struts2 OptionTransferSelect标签 动态赋值: 1.html片面: <td class="td2"> <s:optiontransfer ...

  7. CSS3自动添加省略号

    text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 不换行,一行显示溢出时,文本自动换行.以前都是js计算的,现在可好. elli ...

  8. SharePoint 站点集和子站点数据互相读取

    1.站点集中可以使用SPSite.AllWeb,然后遍历所有站点的isRootWeb,根据siteTemplate取得需要的子站点. /// <summary> /// Handles t ...

  9. 软件工程(FZU2015)增补作业

    说明 张老师为FZU软件工程2015班级添加了一次增补作业,总分10分,deadline是2016/01/01-2016/01/03 前11次正式作业和练习的迭代评分见:http://www.cnbl ...

  10. CSS选择器优先级排列

    CSS选择器的效率从高到低做了一个排序: 1.id选择器(#myid) 2.类选择器(.myclassname) 3.标签选择器(div,h1,p) 4.相邻选择器(h1+p) 5.子选择器(ul & ...