2017.7.15清北夏令营精英班Day1解题报告
成绩:
预计分数:20+10+40
实际分数:100+10+40.
一百三十多人的比赛全场rand7还水了个鼠标+键盘
unbelievable!
考试题目链接:
https://www.luogu.org/team/show?teamid=1353
T1
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#define lli long long
using namespace std;
const int mod=;
void read(int &n)
{
char c='+';int x=;bool flag=;
while(c<''||c>''){c=getchar();if(c=='-')flag=;}
while(c>=''&&c<='')
x=(x<<)+(x<<)+c-,c=getchar();
flag==?n=-x:n=x;
}
lli n,m;
int fastmul(int x,int p)
{
int now=x;
int ans=;
while(p)
{
if(p&)
{
--p;
ans=(ans+now)%mod;
}
p>>=;
now=(now+now)%mod;
}
return (ans-)%mod;
}
int main()
{
freopen("bpmp.in","r",stdin);
freopen("bpmp.out","w",stdout);
//read(n);read(m);
cin>>n>>m;
cout<<fastmul(n,m)%mod;
return ;
}
T1快速乘
一开始搞了个贪心不知道对不对,所以不期望能拿多少分,但没想到居然AC了
而且我以为这个题没有那么水于是就写了个快速乘、
事实上只要输出(n*m-1)%mod 就能AC,
(表示差点被卡成rank8,没奖)
http://www.cnblogs.com/zwfymqz/p/7186080.html
T2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<cstdlib>
using namespace std;
inline void read(int &n)
{
char c='+';int x=;bool flag=;
while(c<''||c>''){c=getchar();if(c=='-')flag=;}
while(c>=''&&c<='')
x=(x<<)+(x<<)+c-,c=getchar();
flag==?n=-x:n=x;
}
int n,m;
struct node
{
int a[][];
int nowmaxn;
int bgx,bgy,edx,edy;
}now,nxt;
int ans=-0x7ffff;
queue<node>q;
int tot=;
inline void calc()
{
/*memset(nxt.a,0,sizeof(nxt.a));
for(int i=now.bgx;i<=now.edx;i++)
for(int j=now.bgy;j<=now.edy;j++)
nxt.a[i][j]=now.a[i][j];*/
nxt=now;
}
inline void print()
{ for(int i=now.bgx;i<=now.edx;i++)
{
for(int j=now.bgy;j<=now.edy;j++)
printf("%d ",now.a[i][j]);
printf("\n");
}
printf("*********************************\n");
}
inline void getans()
{
for(int i=now.bgx;i<=now.edx;i++)
for(int j=now.bgy;j<=now.edy;j++)
ans=max(ans,now.a[i][j]);
}
void check()
{
tot++;
//cout<<tot<<"---"<<endl;
if(tot>)
{
cout<<ans;
exit();
} }
inline void bfs(int hc,int lc)
{
q.push(now);
while(!q.empty())
{
now=q.front();
q.pop();
int num=;
for(int i=now.bgx;i<=now.edx;i++)
for(int j=now.bgy;j<=now.edy;j++)
if(now.a[i][j]>)
num+=now.a[i][j],check();
if(ans>num)
continue; getans();
calc();
// print();
for(int i=now.bgy;i<now.edy;i++)//横向折叠
{
for(int j=;j<=(min((i-now.bgy),(now.edy-i))+);j++)
{
for(int k=;k<=now.edx;k++)
{
nxt.a[k][i+j]+=nxt.a[k][i-j+];
nxt.a[k][i-j+]=;
check();
}
}
// cout<<now.bgy<<"&"<<i<<endl;
nxt.bgy=i+;
// cout<<nxt.bgy<<"^"<<endl;
nxt.edy=max(now.edy,i+i-now.bgy+);
nxt.bgx=now.bgx;
nxt.edx=now.edx;
q.push(nxt);
calc();
}
for(int i=now.bgx;i<now.edx;i++)
{
for(int j=;j<=(min((i-now.bgx),(now.edx-i+))+);j++)
{
for(int k=;k<=now.edy;k++)
{
nxt.a[i+j][k]+=nxt.a[i-j+][k];
nxt.a[i-j+][k]=;
check();
}
}
nxt.edy=now.edy;
nxt.bgy=now.bgy;
nxt.bgx=i+;
nxt.edx=max(now.edx,i+i-now.bgx+);
q.push(nxt);
calc();
}
} }
int main()
{
freopen("cfyw.in","r",stdin);
freopen("cfyw.out","w",stdout);
read(n);read(m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
read(now.a[i][j]);
now.bgx=now.bgy=;
now.edx=n;
now.edy=m;
bfs(,);
printf("%d",ans);
return ;
}
T2爆搜
一开始以为是矩阵什么乱七八糟的肯定不会于是就写超级暴力广搜,
本来以为能过50%的数据结果发现连4*4的都跑不出来。
没办法加了个最优性剪枝又加了个卡时,
结果。
除了第一个点AC其他全MLE,,,,,,,,,,,,,
What' a pity!
http://www.cnblogs.com/zwfymqz/p/7185970.html
T3
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#define lli long long int
using namespace std;
inline void read(int &n)
{
char c='+';int x=;bool flag=;
while(c<''||c>''){c=getchar();if(c=='-')flag=;}
while(c>=''&&c<='')
x=(x<<)+(x<<)+c-,c=getchar();
flag==?n=-x:n=x;
}
int mod=;
int n,m;
int ans=;
int gcd(int a,int b)
{
return b==?a%mod:gcd(b,a%b)%mod;
}
int hash[];
int main()
{
//freopen("hoip.in","r",stdin);
// freopen("hoip.out","w",stdout);
read(n);read(m);
if(n<&&m<)
{
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
ans=(ans+gcd(i,j))%mod;
printf("%d",ans%mod);
}
else if(n>&&m>)
{
printf("");
}
else
{
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
if(hash[(i*)%+(j*)%])
{
ans+=hash[(i*)%+(j*)%];
continue;
}
lli p=gcd(i,j)%mod;
lli a=i,b=j;
while(a<n&&b<m)
{
p=p+p;
a=a+a;
b=b+b;
hash[(i*)%+(j*)%]=p;
}
}
printf("%d",ans);
}
return ;
}
T3暴力+打表
暴力暴力暴力!!!
http://www.cnblogs.com/zwfymqz/p/7189521.html
总结:
这次考试也是比较无语,
感觉自己运气成分比较大,
全场40多个140分.......
也就是说T2接近150行的暴力救了我一命=.=///
不过我们学校居然有A了T3的(但那孩子T1炸了。。。)
以后继续努力吧!
2017.7.15清北夏令营精英班Day1解题报告的更多相关文章
- 洛谷P1080 [NOIP2012提高组D1T2]国王游戏 [2017年5月计划 清北学堂51精英班Day1]
P1080 国王游戏 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 ...
- 洛谷P1650 赛马[2017年5月计划 清北学堂51精英班Day1]
P1650 赛马 题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这 ...
- 洛谷P2258 子矩阵[2017年5月计划 清北学堂51精英班Day1]
题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素 ...
- 洛谷P2327 [SCOI2005]扫雷 [2017年5月计划 清北学堂51精英班Day1]
P2327 [SCOI2005]扫雷 题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一 ...
- 2017 济南精英班 Day1
不管怎么掰都是n*m-1 #include<cstdio> using namespace std; int main() { freopen("bpmp.in",&q ...
- 2017 清北学堂 Day 6终极考试报告
预计分数: 100+70+70 = 240 实际假分数 : 40+80+70= 190 in cena(好吧不得不承认这个分数,,,,,,=.=) 实际真分数 : 100+80+100 = 280 ...
- 10.27night清北刷题班
/* 枚举每个部分的总和,利用前缀和进行检验. 如果能分成4部分就一定能分成2部分,就筛了一边素数优化.清空数组!!! */ #include<bits/stdc++.h> #define ...
- 清北刷题班day3 morning
P99zhx: 竞赛时间:???? 年?? 月?? 日??:??-??:??题目名称 a b c名称 a b c输入 a.in b.in c.in输出 a.out b.out c.out每个测试点时限 ...
- 清北学堂学习总结 day1 数据结构 练习
1.二叉搜索树 STL set直接做就可以了 2.树状数组+差分数列: codevs 1081 线段树练习 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Maste ...
随机推荐
- Java代码运用及算法思路养成——用*号输出形状
简单的了解了一些循环算法后,尝试用循环算法,输出形状图形 例1矩形与平行四边形的比较(可以看做矩形的每一行在输出前都输出了矩形长度数量-1的空格数量并且依次递减) 例2三角形(三角形可看做半个矩形,考 ...
- 03--(二)编程实践中C语言的一些常见细节
编程实践中C语言的一些常见细节(转载) 对于C语言,不同的编译器采用了不同的实现,并且在不同平台上表现也不同.脱离具体环境探讨C的细节行为是没有意义的,以下是我所使用的环境,大部分内容都经过测试,且所 ...
- 文字纵向滚动marquee
<div style="width:200px; height:300px"><marquee direction="up" truespee ...
- Spring cloud父项目的建立
1.建立一个maven项目 注意建立项目的时候.选择pom的包 2.添加架包 <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...
- [tyvj2054] 四叶草魔杖 (最小生成树 状压dp)
传送门 Background 陶醉在彩虹光芒笼罩的美景之中,探险队员们不知不觉已经穿过了七色虹,到达了目的地,面前出现了一座城堡和小溪田园,城堡前的木牌上写着"Poetic Island&q ...
- fun(int **p)的使用
#include <iostream>using namespace std;void fun(int **p){ cout << p[0][0] << endl; ...
- Python学习笔记(3)for循环和while循环
2019-02-25 (1)break语句:终止当前循环,跳出循环体. (2)continue语句:终止本轮循环并开始下一轮循环(在下一轮循环开始前,会先测试循环条件). (3)for循环 ① ran ...
- 20190226-SecureCRT连接linux显示中文乱码
SecureCRT连接我的Ubuntu14时中文显示乱码 解决办法: 在session options里选择UTF-8
- 《黑白团团队》第八次团队作业:Alpha冲刺 第三天
项目 内容 作业课程地址 任课教师首页链接 作业要求 团队项目 填写团队名称 黑白团团队 填写具体目标 认真负责,完成项目 团队项目Github仓库地址链接. 第三天 日期:2019/6/17 成员 ...
- 【Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) A】 Doggo Recoloring
[链接] 我是链接,点我呀:) [题意] 你可以把出现次数大于1的颜色换成其他颜色. 问你最后能不能全都变成同一种颜色 [题解] 判断一下有没有出现次数大于1的就好. 有的话.显然可以一直用它变颜色. ...