2017.7.15清北夏令营精英班Day1解题报告
时间:2022-05-08
本文章向大家介绍2017.7.15清北夏令营精英班Day1解题报告,主要内容包括成绩:、考试题目链接:、https://www.luogu.org/team/show?teamid=1353、T2、T3、总结:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
成绩:
预计分数:20+10+40
实际分数:100+10+40.
一百三十多人的比赛全场rand7还水了个鼠标+键盘
unbelievable!
考试题目链接:
https://www.luogu.org/team/show?teamid=1353
T1
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<algorithm>
6 #include<queue>
7 #include<stack>
8 #define lli long long
9 using namespace std;
10 const int mod=998244353;
11 void read(int &n)
12 {
13 char c='+';int x=0;bool flag=0;
14 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}
15 while(c>='0'&&c<='9')
16 x=(x<<1)+(x<<3)+c-48,c=getchar();
17 flag==1?n=-x:n=x;
18 }
19 lli n,m;
20 int fastmul(int x,int p)
21 {
22 int now=x;
23 int ans=0;
24 while(p)
25 {
26 if(p&1)
27 {
28 --p;
29 ans=(ans+now)%mod;
30 }
31 p>>=1;
32 now=(now+now)%mod;
33 }
34 return (ans-1)%mod;
35 }
36 int main()
37 {
38 freopen("bpmp.in","r",stdin);
39 freopen("bpmp.out","w",stdout);
40 //read(n);read(m);
41 cin>>n>>m;
42 cout<<fastmul(n,m)%mod;
43 return 0;
44 }
一开始搞了个贪心不知道对不对,所以不期望能拿多少分,但没想到居然AC了
而且我以为这个题没有那么水于是就写了个快速乘、
事实上只要输出(n*m-1)%mod 就能AC,
(表示差点被卡成rank8,没奖)
http://www.cnblogs.com/zwfymqz/p/7186080.html
T2
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<algorithm>
6 #include<queue>
7 #include<stack>
8 #include<cstdlib>
9 using namespace std;
10 inline void read(int &n)
11 {
12 char c='+';int x=0;bool flag=0;
13 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}
14 while(c>='0'&&c<='9')
15 x=(x<<1)+(x<<3)+c-48,c=getchar();
16 flag==1?n=-x:n=x;
17 }
18 int n,m;
19 struct node
20 {
21 int a[101][101];
22 int nowmaxn;
23 int bgx,bgy,edx,edy;
24 }now,nxt;
25 int ans=-0x7ffff;
26 queue<node>q;
27 int tot=0;
28 inline void calc()
29 {
30 /*memset(nxt.a,0,sizeof(nxt.a));
31 for(int i=now.bgx;i<=now.edx;i++)
32 for(int j=now.bgy;j<=now.edy;j++)
33 nxt.a[i][j]=now.a[i][j];*/
34 nxt=now;
35 }
36 inline void print()
37 {
38
39 for(int i=now.bgx;i<=now.edx;i++)
40 {
41 for(int j=now.bgy;j<=now.edy;j++)
42 printf("%d ",now.a[i][j]);
43 printf("n");
44 }
45 printf("*********************************n");
46 }
47 inline void getans()
48 {
49 for(int i=now.bgx;i<=now.edx;i++)
50 for(int j=now.bgy;j<=now.edy;j++)
51 ans=max(ans,now.a[i][j]);
52 }
53 void check()
54 {
55 tot++;
56 //cout<<tot<<"---"<<endl;
57 if(tot>63843800)
58 {
59 cout<<ans;
60 exit(0);
61 }
62
63 }
64 inline void bfs(int hc,int lc)
65 {
66 q.push(now);
67 while(!q.empty())
68 {
69 now=q.front();
70 q.pop();
71 int num=0;
72 for(int i=now.bgx;i<=now.edx;i++)
73 for(int j=now.bgy;j<=now.edy;j++)
74 if(now.a[i][j]>0)
75 num+=now.a[i][j],check();
76 if(ans>num)
77 continue;
78
79 getans();
80 calc();
81 // print();
82 for(int i=now.bgy;i<now.edy;i++)//横向折叠
83 {
84 for(int j=1;j<=(min((i-now.bgy),(now.edy-i))+1);j++)
85 {
86 for(int k=1;k<=now.edx;k++)
87 {
88 nxt.a[k][i+j]+=nxt.a[k][i-j+1];
89 nxt.a[k][i-j+1]=0;
90 check();
91 }
92 }
93 // cout<<now.bgy<<"&"<<i<<endl;
94 nxt.bgy=i+1;
95 // cout<<nxt.bgy<<"^"<<endl;
96 nxt.edy=max(now.edy,i+i-now.bgy+1);
97 nxt.bgx=now.bgx;
98 nxt.edx=now.edx;
99 q.push(nxt);
100 calc();
101 }
102 for(int i=now.bgx;i<now.edx;i++)
103 {
104 for(int j=1;j<=(min((i-now.bgx),(now.edx-i+1))+1);j++)
105 {
106 for(int k=1;k<=now.edy;k++)
107 {
108 nxt.a[i+j][k]+=nxt.a[i-j+1][k];
109 nxt.a[i-j+1][k]=0;
110 check();
111 }
112 }
113 nxt.edy=now.edy;
114 nxt.bgy=now.bgy;
115 nxt.bgx=i+1;
116 nxt.edx=max(now.edx,i+i-now.bgx+1);
117 q.push(nxt);
118 calc();
119 }
120 }
121
122 }
123 int main()
124 {
125 freopen("cfyw.in","r",stdin);
126 freopen("cfyw.out","w",stdout);
127 read(n);read(m);
128 for(int i=1;i<=n;i++)
129 for(int j=1;j<=m;j++)
130 read(now.a[i][j]);
131 now.bgx=now.bgy=1;
132 now.edx=n;
133 now.edy=m;
134 bfs(0,0);
135 printf("%d",ans);
136 return 0;
137 }
一开始以为是矩阵什么乱七八糟的肯定不会于是就写超级暴力广搜,
本来以为能过50%的数据结果发现连4*4的都跑不出来。
没办法加了个最优性剪枝又加了个卡时,
结果。
除了第一个点AC其他全MLE,,,,,,,,,,,,,
What' a pity!
http://www.cnblogs.com/zwfymqz/p/7185970.html
T3
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<algorithm>
6 #include<queue>
7 #include<stack>
8 #define lli long long int
9 using namespace std;
10 inline void read(int &n)
11 {
12 char c='+';int x=0;bool flag=0;
13 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}
14 while(c>='0'&&c<='9')
15 x=(x<<1)+(x<<3)+c-48,c=getchar();
16 flag==1?n=-x:n=x;
17 }
18 int mod=998244353;
19 int n,m;
20 int ans=0;
21 int gcd(int a,int b)
22 {
23 return b==0?a%mod:gcd(b,a%b)%mod;
24 }
25 int hash[40000001];
26 int main()
27 {
28 //freopen("hoip.in","r",stdin);
29 // freopen("hoip.out","w",stdout);
30 read(n);read(m);
31 if(n<4000&&m<4000)
32 {
33 for(int i=1;i<=n;i++)
34 for(int j=1;j<=m;j++)
35 ans=(ans+gcd(i,j))%mod;
36 printf("%d",ans%mod);
37 }
38 else if(n>6001&&m>6001)
39 {
40 printf("0");
41 }
42 else
43 {
44 for(int i=1;i<=n;i++)
45 for(int j=1;j<=m;j++)
46 {
47 if(hash[(i*257)%23456789+(j*359)%23456789])
48 {
49 ans+=hash[(i*257)%23456789+(j*359)%23456789];
50 continue;
51 }
52 lli p=gcd(i,j)%mod;
53 lli a=i,b=j;
54 while(a<n&&b<m)
55 {
56 p=p+p;
57 a=a+a;
58 b=b+b;
59 hash[(i*257)%23456789+(j*359)%23456789]=p;
60 }
61 }
62 printf("%d",ans);
63 }
64 return 0;
65 }
暴力暴力暴力!!!
http://www.cnblogs.com/zwfymqz/p/7189521.html
总结:
这次考试也是比较无语,
感觉自己运气成分比较大,
全场40多个140分.......
也就是说T2接近150行的暴力救了我一命=.=///
不过我们学校居然有A了T3的(但那孩子T1炸了。。。)
以后继续努力吧!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Pwnhub Web题Classroom题解与分析
- WTForm的URLXSS谈开源组件的安全性
- 谈一谈复杂的正则表达式分析
- Linux 用户名、主机添加背景色
- percona-toolkit大表操作DDL使用 2.1. 数据库字符集修改2.2. 数据库建库、授权操作2.3. 数据库建表、插入数据4.1. 添加表字段【
- PHPMailer 代码执行漏洞(CVE-2016-10033)分析(含通用POC)
- linux 平均负载 load average 的含义【转】
- zookeeper-01 概述
- zookeeper-02 部署
- zookeeper-03 命令行操作
- java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for ...”
- Linux 内存使用率
- CentOS7.4下编译Hadoop-2.7.6
- VMware安装CentOS6
- VMware安装CentOS7 3.1 主机名修改3.2 网卡名修改3.3 ifconfig安装