很欢乐的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