很欢乐的ACM欢乐赛欢乐地开始了《------------------------------(假的)
一共八题:(对不起找不到链接)
1.CodeForces 984A
2.CodeForces 984B
3.CodeForces 984C
4.CodeForces 984D
5.CodeForces 984E
6.CodeForces 559C
7.CodeForces 519E
8.AtCoder 3621
/*-----------------------------------------------第一题是水题掠过不讲------------------------------------------------*/
/*------------------------------------------------然后是激动人心的第二题----------------------------------------------*/
这题明显欺负我们组不会玩扫雷,只好摸着石子过河,WA了6次之后才过
#include <bits/stdc++.h>
using namespace std;
#define C getchar()
#define maxn 1010
#define rep(i,p) for(int i=1;i<=p;i++)
inline int read()
{
int x=0;
char ch;
bool flag=true;
for(;ch>'9'||ch<'0';ch=C)
if(ch=='-')
flag=false;
for(;ch>='0'&&ch<='9';ch=C)
x=(x<<3)+(x<<1)+(ch^48);
return flag?x:-x;
}
int n,m;
struct game
{
int biao;
char d;
} g[maxn][maxn]={};
void intt()
{
n=read();
m=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>g[i][j].d;
}
void work()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(g[i][j].d=='*')
{
g[i+1][j].biao++;
g[i+1][j+1].biao++;
g[i+1][j-1].biao++;
g[i][j+1].biao++;
g[i][j-1].biao++;
g[i-1][j].biao++;
g[i-1][j+1].biao++;
g[i-1][j-1].biao++;
}
else
continue;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(g[i][j].d!='*')
{
if(g[i][j].d=='.')
{
if(g[i][j].biao!=0)
{
cout<<"NO";
exit(0);
}
continue;
}
else if(g[i][j].biao!=g[i][j].d-48)
{
cout<<"NO"<<endl;
exit(0);
}
}
}
cout<<"YES"<<endl;
}
int main()
{
intt();
work();
return 0;
}
这个题目我们一开始是顺着做的,然后蒙题蒙了6次之后改变思路,写出正解。要说有什么好总结的就是:要好好读题!要好好读题!!要好好读题!!!要好好读题!!!当都不懂题目的时候最好多读几次,慢慢揣摩题目的意思,不到万不得已,千万不要蒙题(要知道ACM不AC不但不给分,还罚时)。
/*--------------------------------------------------------第三题----------------------------------------------------------*/数论没学好系列明明是很简单的一道题目,却应为数论没学好白白扔掉了一个气球。这个故事告诉我们:一道噱头噱脑的题目其实并不是看上去那么难,要静下心来思考,方可破敌。/*-------------------------------------------------------第四题------------------------------------------------------------------*/很明显的dp题,据说有人使用那个区间dp写的,但好像我们组不是这样的#include <bits/stdc++.h>
using namespace std;
#define C getchar()
#define maxn 5010
#define rep(i,p) for(int i=1;i<=p;i++)
inline long long read()
{
long long x=0;
char ch;
bool flag=true;
for(;ch>'9'||ch<'0';ch=C)
if(ch=='-')
flag=false;
for(;ch>='0'&&ch<='9';ch=C)
x=(x<<3)+(x<<1)+(ch^48);
return flag?x:-x;
}
struct GG
{
int zhi;
int maxx;
}solve[maxn][maxn]={};
int n,q;
void intt()
{
n=read();
for(int i=1;i<=n;i++)
solve[1][i].zhi=solve[1][i].maxx=read();
}
void build()
{
for(int i=2;i<=n;i++)
for(int j=1;j<=n-i+1;j++)
{
solve[i][j].zhi=solve[i-1][j].zhi^solve[i-1][j+1].zhi;
solve[i][j].maxx=max(solve[i-1][j].maxx,solve[i-1][j+1].maxx);
solve[i][j].maxx=max(solve[i][j].maxx,solve[i][j].zhi);
}
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=n-i+1;j++)
// cout<<solve[i][j].maxx<<' ';
// cout<<endl;
// }
}
void work()
{
q=read();
for(int i=1;i<=q;i++)
{
int s1,s2;
s1=read();
s2=read();
printf("%d\n",solve[s2-s1+1][s1].maxx);
}
}
int main()
{
intt();
build();
work();
return 0;
}
这题还是告诉了我们组审题要仔细,一开始题目没看懂,直接略过。差点放过一个气球,在解决了题意之后,就第一时间想到了思路,但细节处理不力,白白罚时两次…………
/*----------------------------------------------4~8题------------------------------------------------------*/
请各位大佬baidu一下,因为我不会iu