这次测试规模较小,前两题也较水,但需要整理

T1(Jelly的男♂难题1):

从一个点出发,以四连通的方式扩散,可以走#,不能走o,走过的格子每单位时间会增加1点高度,问扩散完整间屋子需要的时间,以及此时高度的和。

并且
(起点格不算高度)

water_lift一看:哇,钻出来一个光头这不s*题吗,

然后爆0了...

这题一看就是喜闻乐见的广搜题,判断由来就是众所周知,当每一步的花费一致并且求最小步数时,用广搜吧.

正确性白书已给出证明,

对于这道题,最小步数很好求,然而看似剩下了一个问题,实际剩下的是2个问题,其中一个可以调一上午(对菜鸡而言,I can do this all day!!!)

第一个问题就是剩下的求高度总和的问题,对于此问题,只需保存下到达每个格子的步数,最后再用最终步数减去该格步数,再求和,即为答案,

公式看起来这个样子:

\(\sum\limits_{i=1}^{n} \ finalstep(代码中的maxn)-step_i+1\)

还有最后一个问题,就是读入,读入搞不好可以调一天...

原因在于你需要读的地图以字符串形式展现,然而每个字符之间有空格...

也就是说在数据读入时要不断处理字符,空格与换行符,(这就很TM糟心了...)

那么考虑这样两种思路:

将非字符(这里指用于表示地图的标点符号)用while语句除去,既然能跳出while循环就说明读到了字符,那么将字符保存...

要么就是不管\(3*7=2147483648%1000\)全部整行读入,然后逐个分析,处理思路如上...

然后最难的问题就完成咧...

至于为什么可以调一上午夸张手法,下一个

其实就是因为其代码实现很容易手残把标记变量或是指针变量(就是用来标记处理字符串位置的东西)写错或者根本来说忽略了细节,或是根本上的读入错误(比如用了gets)会导致山一样的WA

但这样也有好处:

至少我那天上午学会了cmd 的fc(文件比较)...

fc好啊

忘贴代码了:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
struct node{
int x,y;
int step;
node(int _x,int _y,int _step):x(_x),y(_y),step(_step){}
};
queue<node> q;
int n,m;
string aa;
char pos[505][505];
bool vis[505][505];
int stp[505][505];
int sx,sy;
int mx[5]={0,-1,0,1,0};
int my[5]={0,0,1,0,-1};
int main(){
scanf("%d%d",&n,&m);
char ch=getchar();
while(ch!='\n') ch=getchar();
for(int i=1;i<=n;i++){
getline(cin,aa);
int t=0;
int s=0;
while(t<aa.size()){
if(aa[t]=='*'||aa[t]=='#'||aa[t]=='o')
pos[i][++s]=aa[t];
if(pos[i][s]=='*'){
sx=i;
sy=s;
}
t++;
}
}
vis[sx][sy]=1;
q.push(node(sx,sy,0));
int maxn=0;
while(!q.empty()){
node u=q.front();
q.pop();
for(int i=1;i<=4;i++){
int nx=u.x+mx[i];
int ny=u.y+my[i];
if(nx<=0||n<nx) continue;
if(ny<=0||m<ny) continue;
if(pos[nx][ny]=='#'&&!vis[nx][ny]){
vis[nx][ny]=1;
stp[nx][ny]=u.step+1;
maxn=max(stp[nx][ny],maxn);
q.push(node(nx,ny,u.step+1));
}
}
}
int sum=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i==sx&&j==sy)continue;
if(vis[i][j])
sum+=(maxn-stp[i][j]+1);
sum%=19260817;
}
}printf("%d\n%d\n",maxn,sum);
return 0;
}

T2(【音乐会】二重变革):



MD数据范围:

对于20%的数据,\(1\leq n\leq10000\)

对于100%的数据,\(1.5e6\leq n\leq 2e6\ 1\leq X[i] \leq 1e9\)且不保证随机生成

一看把代码贴上去就是T的吗?!



这题真正思路是搞exgcd上去,

证明(黈):



代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
int x;
inline int read(){
int x=0;
char c=getchar();
while(!isdigit(c))
c=getchar();
while(isdigit(c)){
x=(x<<3)+(x<<1)+(c^48);
c=getchar();
}
return x;
}
inline int gcd(const int &a,const int &b){
if(b==0) return a;
return gcd(b,a%b);
}
int ans;
int main(){
scanf("%d",&n);
ans=read();
for(int i=2;i<=n;i++){
x=read();
ans=gcd(ans,x);
}
printf("%d",ans*n);
return 0;
}

前两题就这样啦

小测试整理(含T1 T2)的更多相关文章

  1. DateTime.Compare(t1,t2)比較两个日期大小

    DateTime.Compare(t1,t2)比較两个日期大小,排前面的小,排在后面的大,比方:2011-2-1就小于2012-3-2返回值小于零:  t1 小于 t2. 返回值等于零 : t1 等于 ...

  2. java 多线程,T1 T2 T3 顺序执行

    一.程序设计 1.抽象公共类PublicThread,具有先前线程属性previousThread.父类为Thread 2.在PublicThread的run()方法中判断previousThread ...

  3. 三个线程T1,T2,T3.保证顺序执行的三种方法

    经常看见面试题:有三个线程T1,T2,T3,有什么方法可以确保它们按顺序执行.今天手写测试了一下,下面贴出目前想到的3种实现方式 说明:这里在线程中我都用到了sleep方法,目的是更容易发现问题.之前 ...

  4. DateTime.Compare(t1,t2)比较两个日期大小

    DateTime.Compare(t1,t2)比较两个日期大小,排前面的小,排在后面的大,比如:2011-2-1就小于2012-3-2返回值小于零:  t1 小于 t2. 返回值等于零 : t1 等于 ...

  5. Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试

    文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...

  6. Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试

    CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...

  7. Action<T1, T2>委托

    封装包含两个参数的方法委托,没有返回值. 语法 public delegate void Action<in T1, in T2>( T1 arg1, T2 arg2 ) 类型参数 in ...

  8. CSS小tip整理

    CSS小tip整理 1.利用css在列表靠头和末尾添加箭头: /* 左箭头*/ ol a[rel="prev"]:before { content: "\00AB&quo ...

  9. 使用Func<T1, T2, TResult>

    使用Func<T1, T2, TResult> 委托返回匿名对象   Func<T1, T2, TResult> 委托 封装一个具有两个参数并返回 TResult 参数指定的类 ...

随机推荐

  1. String的源码理解(未写完)

    String本质上是一个char数组(jdk 9之后是byte数组),并且是一个声明为final的数组,并且String的不可变也是通过这种把数组声明为final来实现的 public final c ...

  2. Java面试题的个人总结

    面试总结 第一轮:电话初面 第二轮:技能面谈[技能职位尽量避免多谈处理上的作业] 第三轮:高管复试 第四轮:HR终究供认 一面:首要供认对阿里的意向度(假定异地更会考虑对作业地址(杭州)的意向度!阿里 ...

  3. Codeforces Round #603 (Div. 2) E. Editor 线段树

    E. Editor The development of a text editor is a hard problem. You need to implement an extra module ...

  4. npm查看本地包版本号和远程包的版本号

    npm 查看远程包 第一种方法: npm info <packageName> 第二种方法: npm view <packageName> versions --json np ...

  5. 实例属性和方法的动态处理(__getattr__)

    正常情况下,当调用类的方法或属性时,如果不存在,就会报错 要避免这个错误,除了可以加上那个要调用但不存在的属性外,Python还有另一个机制,那就是写一个__getattr__()方法,动态返回一个属 ...

  6. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 9

    18.7  PDO的事务处理 事务是确保数据库一致的机制,是一个或一系列的查询,作为一个单元的一组有序的数据库操作.如果组中的所有SQL语句都操作成功,则认为事务成功,那么事务被提交,其修改将作用于所 ...

  7. 持续集成(CI):WEB自动化+Allure+Jenkins定时构建

    一.allure插件安装 pytest可以通过allure集成展示优美的测试报告,同样allure也可以与Jenkins集成,并且Jenkins有构建记录,所以可以看到历史构建曲线图,通过曲线图可以清 ...

  8. POJ 1724 (分层图最短路)

    ### POJ 1724 题目链接 ### 题目大意: 给你 N 个点 ,M 条有向路,走每条路需要花费 C 元,这段路的长度为 L . 给你 K 元,问你能否从 1 走到 N 点且花费不超过 K 元 ...

  9. oracle学习笔记(十八) PL/SQL 游标

    游标 说明 查询结果的光标,相当于java中的一个迭代器,方便遍历操作 可使用的属性 %FOUND SQL语句查询或影响了一行或多行时为 TRUE.如:mycursor%FOUND %NOTFOUND ...

  10. arcgis api 3.x for js 地图加载多个气泡窗口展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...