动荡的2016。想认认真真说再见。
走过的所有路,都不是弯路。
冥冥之中,一切都是最好的安排。
来路无可留恋,值得期待的只有前方。
谨共勉之。新年快乐。
奔跑吧。
年夜饭在这里。
A
题目太简单我直接贴代码了。
while(5*i*(i+1)/2<=k) i++;
cout<<min(i-1,n);
╮(╯▽╰)╭就这么粗暴
B
不知道为什么当时一直在考虑东西。可怕。
从北极去南极,不管东西怎么转,只要一直往南走,就是对的路啊!
嗨呀好蠢!
注意:当你距离南极100米的时候,你是不可能往南走101米的。
所以其实还是很简单。
int x=0,a,n;
map<string,int>loc;
loc["North"]=0;
loc["South"]=1;
loc["West"]=2;
loc["East"]=3;
string b;
cin>>n;
while(n--)
{
cin>>a>>b;
if((x==0&&loc[b]!=1)||(x==20000&&loc[b]!=0))
{
cout<<"NO"<<endl;
return 0;
}
switch(loc[b])
{
case 0:
if(a>x)
{
cout<<"NO"<<endl;
return 0;
}
else x-=a;
break;
case 1:
if(20000-x-a<0)
{
cout<<"NO"<<endl;
return 0;
}
else x+=a;
break;
}
}
b=x?"NO":"YES";
cout<<b;
C
熬过了一晚上没被hack最后被WA了嘤嘤嘤,心理阴影面积求不出来。
一般来讲对待复杂问题就只有一个方式:别想太多。
要注意的就是细节:
比如用INT_MAX初始化就是找死;
剩下的就是最大最小值的维护了。
if(d==1)
{
a=true;
if(flag)
{
if(x<1900)
{
cout<<"Impossible";
return 0;
}
else x+=c;
}
minx=max(minx+c,1900+c);
}
if(d==2)
{
flag=true;
x=min(1899+c,x+c);
if(a)
{
if(minx>1899)
{
cout<<"Impossible";
return 0;
}
else minx+=c;
}
}
好像年夜饭是很喜庆啊。前三题都是开胃菜。
好吧 有时候我也很弱鸡 ┑( ̄Д  ̄)┍
从这开始就真的是跨年夜在看的东西了。
D
放烟火。求分裂后扩散到哪了。
幸亏有上界(上界还不大)!阿门!想暴力!
30次分裂 每次5格 只要给我个最多300×300大小的涂色就好。
方向8个最多5步。是可以暴力哈。
两种方案 dp和dfs。
dfs我明晚出一版。dp。。。我考试周过了就去推状态转移。
(想起了leetcode还有十几道题,一口老血)
搜了下题解(耿直的我)
暴力的bfs解法
打算用的dfs方法
E
给一个字符串,删去最少的字符来在不破坏2017的前提下删去2016.
原来我真的是个菜鸡。
线段树。区间dp。
题解
F
不说了我要面壁了。
没做出来,我很难过。
题解
G
一颗特别正常的满二叉树,简单路使得其和为s
题解
智商仿佛收到了伤害。
顿悟了下觉得F和G约等于直接上,这就是个辛苦活啊。谁想太多谁GG。
H
给迷宫,查看是否存在两条没有交点的路径。
同没思路。目前感觉是搜索。
按照左到右,上到下的方式找到第一条路去学校并标记;
从右到左,从下到上,寻找第二条路回家。
两重dfs?有点头大。
更尴尬的是找到的题解都是霓虹金写的。只有直接啃代码了
题解
静静狗带 新年快乐
然后还是觉得:我心真大啊