2019西安多校联训 Day1
试题链接:http://www.accoders.com/contest.php?cid=1893 考试密码请私信;
T1
明明就是O(n)的模拟,强行打成二分QAQ
思路:判断收尾是否为1或n如果不是自己往上添加山峰,高度是
最接近的山峰的高度+两者之间的差值打完跑一遍即可,大水题.
#include <bits/stdc++.h>
using namespace std;
int a[][];
int n,m,maxx,ans;
bool ac,wa;
int ef(){
for(register int i=;i<=m;i++){
if(ac==false&&i==) continue;
if(wa==false&&i==m) continue;
ans=max(maxx,max(ans,((a[i+][]-a[i][])-abs(a[i][]-a[i+][]))/+max(a[i][],a[i+][])));
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);
for(register int i=;i<=m;i++){
scanf("%d%d",&a[i][],&a[i][]);
if(i==&&a[i][]!=){a[][]=;a[][]=(a[][]+a[][]-);ac=;maxx=max(a[][],maxx);}
maxx=max(maxx,a[i][]);
}
if(a[m][]!=n){wa=;a[m+][]=n;a[m+][]=(n-a[m][]+a[m][]);maxx=max(a[m+][],maxx);}
for(register int i=;i<=m;i++){
if(ac==false&&i==) continue;
if(wa==false&&i==m) continue;
int midd=a[i+][]-a[i][];
if(abs(a[i+][]-a[i][])>midd){printf("IMPOSSIBLE");return ;}
}
cout<<ef();
return ;
}
旅行日记
T2
本题难度中上,思路不太好想
zkc大佬思路:将所有棋子点存储好,用每一个棋子遍历所有
的打击点,存储所有点共有的打击点,然后复制一张图以剩下的攻击
方式消除"o"和"x",若场面上还有"x"则为"NO",若无则为"YES",然
干完了这事后我们以所有打击方式来打击2*n-1那张图,然后输出即
可
事实证明,暴力出奇迹,打表出省一(这么暴力谁想得到啊QAQ)
#include <bits/stdc++.h>
using namespace std;
int n,qwq,lala;
char a[][];
char heiheihei[][];
int dis[][];
int xx[][];
char ans[][];
string s;
bool check3(int px,int py){
int cnt=;
for(register int i=;i<=qwq;i++){
int nx=dis[i][]+px;
int ny=dis[i][]+py;
if(nx>=&&nx<=n&&ny>=&&ny<=n)
if(a[nx][ny]=='x'){
cnt++;
if(cnt==qwq) return false;
}
}
return true;
}
bool check2(){
for(register int i=;i<=n;i++)
for(register int j=;j<=n;j++){
if(heiheihei[i][j]=='x') return false;
}
return true;
}
bool check1(int px,int py){
for(register int i=;i<=qwq;i++){
int nx=dis[i][]+px;
int ny=dis[i][]+py;
if(nx>=&&nx<=n&&ny>=&&ny<=n) if(a[nx][ny]=='.') return false;
}
return true;
}
int main(){
scanf("%d",&n);
for(register int i=;i<=n;i++){
cin>>s;
for(register int j=;j<n;j++){
a[i][j+]=s[j];
if(a[i][j+]=='o') dis[++qwq][]=i,dis[qwq][]=j+;
}
}
for(register int k=;k<=qwq;k++){
for(register int i=;i<=n;i++)
for(register int j=;j<=n;j++){
if((a[i][j]=='x')||(a[i][j]=='o'&&i!=dis[k][]&&j!=dis[k][])){
int px=i-dis[k][],py=j-dis[k][];
if(check1(px,py)) xx[++lala][]=px,xx[lala][]=py;
}
}
}
for(register int i=;i<=n;i++)
for(register int j=;j<=n;j++){
heiheihei[i][j]=a[i][j];
}
for(register int i=;i<=qwq;i++){
heiheihei[dis[i][]][dis[i][]]='.';
for(register int j=;j<=lala;j++){
heiheihei[dis[i][]+xx[j][]][dis[i][]+xx[j][]]='.';
}
}
if(check2()) printf("YES\n");
else{printf("NO\n");return ;}
memset(xx,,sizeof(xx));
lala=;
for(register int k=;k<=qwq;k++){
for(register int i=;i<=n;i++)
for(register int j=;j<=n;j++){
if(a[i][j]=='.'){
int px=i-dis[k][],py=j-dis[k][];
if(check3(px,py)) xx[++lala][]=px,xx[lala][]=py;
}
}
}
memset(ans,'x',sizeof(ans));
ans[n][n]='o';
for(register int i=;i<=lala;i++){
ans[n+xx[i][]][n+xx[i][]]='.';
}
for(register int i=;i<=*n-;i++){
for(register int j=;j<=*n-;j++) cout<<ans[i][j];printf("\n");}
return ;
}
奇怪的棋
T3
本题找规律,难度中等,但记住要开long long,同时记住每算一个就%一下
思路:在k之后的点不能通往1,所以后面得点不能通往k前
因为k前的点按题意都必须通往1,所以k后的种类数即为(n-k)^(n-k),
在k前的点需要以奇异的算法来算,不难发现在k前的点只要构成循环
或者都指向返回1的点即可成立,所以得出结论在k前的种类数即为
(k-1)^k,最后将两者相乘取mod便可
#include <bits/stdc++.h>
using namespace std;
long long modd=1e9+;
long long x,y,ans;
long long n,m;
long long ksm(long long a,long long b,long long p){
long long ans=;
while(b){
if(b&) ans=(ans*a)%p;
a=(a*a)%p;
b/=;
}
return ans;
}
int main(){
scanf("%lld%lld",&n,&m);
if(n-m!=){
x=ksm((n-m)%modd,n-m,modd);
}
if(n-m==) x=;
y=ksm(m%modd,m-,modd);
ans=x*y%modd;
printf("%lld",ans);
return ;
}
小明的城堡
end;
2019西安多校联训 Day1的更多相关文章
- 2019西安多校联训 Day5
T1 光哥为了不让某初二奆佬恶心到我们而留下的火种 (貌似没这题平均分就100-了) 思路:就一横一竖让后就gztopa嘛 #include <bits/stdc++.h> using n ...
- 2019西安多校联训 Day4
T1 大水题!!难度简单,显然的贪心策略即可,but... 思路:首先我们按与i点作战后活下来的士兵排序,然后 若当前剩余兵力足够直接减掉战斗死亡人数,如果不够就加 够再打它,但是!我们在考完试观察测 ...
- 2019西安多校联训 Day3
试题链接:http://www.accoders.com/contest.php?cid=1895 考试密码请私信; 特别鸣谢:zkc奆佬帮助我优化本篇题解(语言表达方面) T1 显然二分求解的 ...
- 2019西安多校联训 Day2
试题链接:http://www.accoders.com/contest.php?cid=1894 考试密码请私信; T1 残忍WA 0,明明就是一道非常菜的字符串QAQ 思路:一共找四种东西,A ...
- Contest1893 - 2019年6月多校联训b层测试1
传送门 密码:waxadyt T1 暴力 对于任意相邻的两个值 中间能到达的最大高度是固定的 加上头尾,判一下就好了 代码//感谢Th Au K #include<bits/stdc++.h&g ...
- 2019 牛客国庆集训day1 2019 点分治
题目链接:https://ac.nowcoder.com/acm/contest/1099/I 点分治,计算路径数的时候,先将每个点到根的距离模2019,计算的时候就可以O(n)求出数目,对于模201 ...
- 正睿 2019 省选附加赛 Day1 T1 考考试
比较奇怪的一个枚举题. 注意到10=2*5,所以10^k的二进制表示一定恰好在末尾有k个0. 考虑从小到大去填这个十进制数. 填的时候记录一下当前的二进制表示. 每次尝试去填0或者10^k. 如果要填 ...
- [DBSDFZOJ 多校联训] 就
就 背景描述 一排 N 个数, 第 i 个数是 Ai , 你要找出 K 个不相邻的数, 使得他们的和最大. 请求出这个最大和. 输入格式 第一行两个整数 N 和 K. 接下来一行 N 个整数, 第 i ...
- [DBSDFZOJ 多校联训] Password
Password password.in/.out 描述 你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s. 传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s ...
随机推荐
- [办公自动化]计算机突然死机后asd自动恢复文档未能恢复,如何打开使用
今天计算机突然死机,但是word未能提示自动恢复窗格.所以无法自动恢复word文档.但是在文档所在的文件夹看到了一个“自动恢复”开头的asd恢复文档. 该如何使用这个文档呢? 按照以前的惯例,尝试了如 ...
- 在shell脚本中执行shell脚本
任务下发 主节点脚本 任务管控脚本 [root@admin1 ~]# cat mytest.sh echo lovecode [root@admin1 ~]# cat myfor.sh #!/bin/ ...
- android 反编译 for mac
android反编译现在来说的话很方便. windows上有不好好用的工具,当然我比较喜欢dex2jar 这个是比较好用的,打开他的文件目录会发现,里面有很多.sh .bat文件 那也就是说在wind ...
- makefile 参数
GNU Make make是负责从项目的源代码中生成最终可执行文件和其他非源代码文件的工具. make命令本身可带有四种参数:标志.宏定义.描述文件名和目标文件名. 其标准形式为:make [flag ...
- Gamma的完全理解
Gamma校正 问题:什么是Gamma曲线矫正?Gamma曲线矫正是什么意思? Gamma曲线是一种特殊的色调曲线,当Gamma值等于1的时候,曲线为与坐标轴成45°的直线,这个时候表示输 ...
- JavaScript代码优化新工具UglifyJS
jQuery 1.5 发布的时候 john resig 大神说所用的代码优化程序从Google Closure切换到UglifyJS,新工具的压缩效果非常令人满意. UglifyJS 是一个服务端no ...
- 【174】C#添加非默认字体
参考:C# WinForm程序安装字体或直接调用非注册字体 参考:百度知道 在Debug文件夹下面新建一个font的文件夹,然后将字体的文件复制到里面,使用的时候,直接调用字体文件! private ...
- bzoj 1572: [Usaco2009 Open]工作安排Job【贪心+堆】
先按照时间顺序加,价值塞进小根堆里,碰到不合法情况就从堆里减去 #include<iostream> #include<cstdio> #include<queue> ...
- 源码阅读之LinkedHashMap(JDK8)
概述 LinkedHashMap继承自HashMap,实现了Map<K,V>接口.其内部还维护了一个双向链表,在每次插入数据,或者访问.修改数据时,会增加节点.或调整链表的节点顺序.以决定 ...
- 在Chrome与火狐中,输入框input类型为number时,如何去除掉的自带的上下默认箭头
如何移除input='number'时浏览器自带的上下箭头: CSS样式: /* 去除input[type=number]浏览器默认的icon显示 */ input::-webkit-outer-sp ...