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 ...
随机推荐
- linux用于文件解压缩的命令
1 gzip gzip -<压缩率> 压缩率用数字(1-9)来表示,越大,则压缩率越大. 2 bz2 解压bz2 bzip2 -d filename.bz2
- 第八周 Leetcode 44. Wildcard Matching 水题 (HARD)
Leetcode 44 实现一种类似正则表达式的字符串匹配功能. 复杂度要求不高, 调代码稍微费点劲.. 好像跟贪心也不太沾边, 总之 *把待匹配串分成若干个子串, 每一个子串尽量在模式串中靠前的部分 ...
- nginx 静态目录配置规则,路径匹配与本地资源
经常配了nginx静态目录,死活访问不了,每次访问404.查看文档后,发现nginx配置静态目录使 用以下规则 假如nginx是在本机,静态目录也是在本机, 1.子目录匹配 如下配置 location ...
- bzoj4269
http://www.lydsy.com/JudgeOnline/problem.php?id=4269 裸线性基,一个数取多次就是没取... 又有了些新的理解:a数组的前now个元素是基底,也就是可 ...
- Rails 确认params的统一方法
创建: 2017/11/06 Gemfile ### デバッグ出力の整形 gem 'awesome_print', :group => [:development, :test] a ...
- git分支的理解
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...
- ToolBar教程:AppCompatActivity下用toolbar当actionbar用
参考: https://developer.android.com/training/appbar/index.html 1,自定义toolbar主题 2,在布局xml中使用toolbar 3,在代码 ...
- STL---vector的内存分配策略
2级策略,过程如下: 第一级 __malloc_alloc_template内存分配器 该分配器是对malloc.realloc以及free的封装: 第二级 __default_alloc_temp ...
- scala学习笔记1: scala method
刚接触scala,做练习的时候碰到一个问题,顺便mark一下. 先看下面一段代码: def sum(args:Int*) = { var result = 0 for (arg <- args) ...
- java性能优化读书笔记(1)
1.采用clone()方式创建对象 java语言里面的所有类都默认继承自java.lang.Object,此类里有一个clone()方法: 拷贝对象返回的是一个新的对象,而不是一个对象的引用地址: 拷 ...