试题链接:http://www.accoders.com/contest.php?cid=1895    考试密码请私信;

特别鸣谢:zkc奆佬帮助我优化本篇题解(语言表达方面)

   T1

  显然二分求解的一道题,难度中等,但是会被疯狂卡精度

非常恶心,非常毒瘤

  思路:输入时维护一个前缀和数组,然后分别从前,后方向遍历,找最大最小值

,同时记录L,R,二分x,check函数中另起一个数组算一下'-x'后的数组然后,还是

从前后遍历,找最大最小值,记录l,r,最后判断L和R的大小是不是也符合l,r的大小

(就是L<R&&l<r||L>R&&l>r),然后疯狂卡精度即可

T1-

 #include <bits/stdc++.h>
using namespace std;
int a[];
double b[];
double c[];
double maxx,ans,tans,x,num;
int n,L,R=n+,bigg=-,small=;
inline bool check(double x){
double maxx=-,minn=;int l=,r=n+;
for(register int i=;i<=n;i++){
if(L<R) c[i]=b[i]-x*(i*1.0);
else c[i]=b[i]+x*(i*1.0);
}
for(register int i=n;i>=;i--) if(maxx<c[i]) maxx=c[i],r=i;
for(register int i=;i<=n;i++) if(minn>c[i]) minn=c[i],l=i;
ans=maxx-minn;
if((l<r&&L<R)||(l>r&&L>R)) return true;
else return false;
}
double ef(double l,double r){
double mid=(l+r)/(2.0);
if(r-l<0.00000000001) return mid;
if(check(mid)) return ef(mid,r);
else return ef(l,mid);
}
int main(){
scanf("%d",&n);
for(register int i=;i<=n;i++){scanf("%d",&a[i]);b[i]=b[i-]+a[i];}
for(register int i=n;i>=;i--) if(bigg<b[i]) bigg=b[i],R=i;
for(register int i=;i<=n;i++) if(small>b[i]) small=b[i],L=i;
double qwq=ef(,);
check(qwq);
if(ans>&&ans<) ans-=0.000001;
printf("%.6lf",ans);
return ;
}

Weakness

   T2

  显然的宽搜啊~~~ boom 时间超限,但其实难度中等偏下

所以是二分宽搜/二分深搜....(这谁想得到啊!!!!)QAQ

还有一点我用的是宽搜 742ms,而zkc奆佬用的是深搜 255ms QAQ!

  思路:二分找到最小的伤害值,每次二分一个最大的伤害值搜索跑图,高于伤害值的点都不去走

若能走到最后一排则符合二分向下,否则二分向上,最后找到的就是最小的最大伤害值

T2-

 #include <bits/stdc++.h>
using namespace std;
int a[][];
int fx[]={,,-,},fy[]={,,,-};
int x,y,ans,n,m,maxx;
queue <int> q;
bool vis[][];
bool check(int qwq){
while(!q.empty()) q.pop();
for(register int i=;i<=m;i++)q.push(),q.push(i),vis[][i]=;
while(!q.empty()){
x=q.front();q.pop();
y=q.front();q.pop();
if(x==n) return true;
for(register int i=;i<;i++){
int px=x+fx[i];
int py=y+fy[i];
if(px<||px>n||py<||py>m||a[px][py]>qwq||vis[px][py]) continue;
q.push(px);
q.push(py);
vis[px][py]=;
}
}
return false;
}
int ef(int l,int r){
//cout<<l<<" "<<r<<endl;
if(l==r) return l;
int mid=(l+r)>>;
memset(vis,false,sizeof(vis));
if(check(mid)) ef(l,mid);
else ef(mid+,r);
}
int main(){
scanf("%d%d",&n,&m);
for(register int i=;i<=n;i++)
for(register int j=;j<=m;j++){scanf("%d",&a[i][j]);maxx=max(maxx,a[i][j]);}
printf("%d",ef(,));
return ;
}

飓风营救

   T3

  显然打表啊!打表出奇迹!打表nb!难度中等

打表时间复杂度O(285年) 算了吧....

  思路:其实这题跟数论也有点关系,首先先打个素数表,众所周知,素数*素数的得数必然有两个约数

前提是两个素数不等,假设是两个相同素数相乘每乘一次显然约数个数=(i+1)

  举例:

  2 约数=2

  2*2 约数=3

  2*2*2 约数=4

  那搜索方式就是从最大的素数往下搜索,如果乘上当前素数没爆,接着乘

爆了就往回走,无路可走时显然就结束了

T3-

 #include <bits/stdc++.h>
using namespace std;
int p[]={,,,,,,,,,,,,,,,,,,,,,,,,,};
int primenum;
bool ac;
long long ans,tans;
long long n;
void dfs(long long now,long long num,long long deep,long long last){
if(deep>=) return;
else{
if(num>ans){tans=now,ans=num;}
else if(num==ans) tans=min(tans,now);
for(register int i=;i<=last;i++){
if(now*p[deep]<=n){
now*=p[deep];
dfs(now,num*(i+),deep+,i);
}
else break;
}
}
}
int main(){
scanf("%lld",&n);
dfs(,,,);
printf("%lld",tans);
return ;
}

最多约数

  end;

  

  

2019西安多校联训 Day3的更多相关文章

  1. 2019西安多校联训 Day5

    T1 光哥为了不让某初二奆佬恶心到我们而留下的火种 (貌似没这题平均分就100-了) 思路:就一横一竖让后就gztopa嘛 #include <bits/stdc++.h> using n ...

  2. 2019西安多校联训 Day4

    T1 大水题!!难度简单,显然的贪心策略即可,but... 思路:首先我们按与i点作战后活下来的士兵排序,然后 若当前剩余兵力足够直接减掉战斗死亡人数,如果不够就加 够再打它,但是!我们在考完试观察测 ...

  3. 2019西安多校联训 Day2

    试题链接:http://www.accoders.com/contest.php?cid=1894   考试密码请私信; T1 残忍WA 0,明明就是一道非常菜的字符串QAQ 思路:一共找四种东西,A ...

  4. 2019西安多校联训 Day1

    试题链接:http://www.accoders.com/contest.php?cid=1893  考试密码请私信;    T1 明明就是O(n)的模拟,强行打成二分QAQ 思路:判断收尾是否为1或 ...

  5. Contest1893 - 2019年6月多校联训b层测试1

    传送门 密码:waxadyt T1 暴力 对于任意相邻的两个值 中间能到达的最大高度是固定的 加上头尾,判一下就好了 代码//感谢Th Au K #include<bits/stdc++.h&g ...

  6. [DBSDFZOJ 多校联训] 就

    就 背景描述 一排 N 个数, 第 i 个数是 Ai , 你要找出 K 个不相邻的数, 使得他们的和最大. 请求出这个最大和. 输入格式 第一行两个整数 N 和 K. 接下来一行 N 个整数, 第 i ...

  7. [DBSDFZOJ 多校联训] Password

    Password password.in/.out 描述 你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s. 传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s ...

  8. 2019 湖南多校第一场(2018~2019NCPC) 题解

    解题过程 开场shl过B,C,然后lfw写J,J WA了以后shl写A,但是因为OJ上空间开小WA了,而不是MLE?,J加了特判过了.之后一直在检查A错哪了,直到qt发现问题改了空间,浪费许多时间,但 ...

  9. 2019 西安邀请赛 D

    //n件物品,m种关系,(有关系的2个不能在同一组) //把所有物品分为2组,希望最后2组的差值尽可能小,输出较大者 /* 二分图涂色+可行性(01)背包 dp[i] =1表示 最后差值为i可行 建图 ...

随机推荐

  1. Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学题

                                                     C. Vasya and Petya's Game                           ...

  2. 蓝桥 ADV-230 算法提高 12-1三角形 【数学公式】

      算法提高 12-1三角形   时间限制:1.0s   内存限制:256.0MB      问题描述 为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体.分别设计独立的函数计算三角形的 ...

  3. Hibernate - Query简易

    package cn.demo; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; im ...

  4. codeforces 963B Destruction of a Tree

    B. Destruction of a Tree time limit per test 1 second memory limit per test 256 megabytes input stan ...

  5. C的结构体函数

    #include<stdio.h> #include<string.h> struct Test { int age; ]; double score; }std1; //结构 ...

  6. MogileFS介绍

    MogileFS介绍 MogileFS 是一个开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发. Danga团队开发了包括 Memcached.Mog ...

  7. 在visual studio code和visual studio中编写TypeScript文件自动生成JavaScript文件

    注:此处的自动生成都为保存ts文件时自动生成js文件 VS CODE 只需要在TypeScript的终端控制台中输入如下命令即可,并注意需要将其中的*换成对应的文件名,此处的*似乎不能作为通用匹配. ...

  8. E20170526-hm

    plain n. 平原; 平地;   adj. 平的; 素的; 清晰的; 相貌平平的; layout   n. 布局,安排,设计; 布置图,规划图; modularity    n. 模块化; 模块性 ...

  9. 生成自签名ca 证书 使nginx 支持https

    创建服务器私钥,命令会让你输入一个口令:$ openssl genrsa -des3 -out server.key 1024创建签名请求的证书(CSR):$ openssl req -new -ke ...

  10. 计算几何值平面扫面poj2932 Coneology

    Coneology Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4097   Accepted: 859 Descript ...