ACM集训日记-8月4日
2017-08-04 19:14
190 查看
感觉今天题目出的还是慢啊= =,还是只出了两道题,感觉速度有些提不上来啊···
今天做的第一道题点击打开链接,题目意思一开始捉摸不透,以为只要求两个节点之间的距离加起来最大的那个值就行了,结果too
young too simple~烦了我好久,我只好先找别人写的题目大意看了看,果然理解错了,它这道题的意思是把所有点分成两堆,求这两堆点之间的数据流量之和的最大值,另外,相同堆里的数据流量不用算。这次是深搜,因为是题目中并没有要求最短路径类似的东西,所以用深搜把可能的情况罗列一遍
void dfs(int num,int data)
{
vis[num]=1;//把num这个节点放进B堆里
int temp=data;
for(int i=1;i<=n;i++)
{
if(vis[i]==1)temp-=c[num][i];//如果i这个点已经在B堆里,减去num到i的数据流量
else temp+=c[num][i];//如果i这个点不在B堆里,加上num到i的数据流量
}
MAX=max(temp,MAX);//求和的最大值
for(int i=num+1;i<=n;i++)
{
if(temp>data)
{
dfs(i,temp);
vis[i]=0;
}
}
} 今天的第二题点击打开链接,做的是数独,完成这题以后数独放进程序里跑一跑就出结果了(笑),一开始我用的是二维数组用深搜遍历到最后就行了,但是发现很费时,也费空间,后来参考了前辈的题解,顿觉明悟,发现数独的每一个空格其实是可以用一个数来表示的,而且,也可以由这个数来表示该数所在的小方格的左上的数,在判断是否符合条件的时候很方便,以后在遇到这种表格啊,地图啊之类的,也许可以用一个数来表示二维的坐标。
今天可能最大的收获就是这第二题的一种技巧了。
希望明天会更好。
今天做的第一道题点击打开链接,题目意思一开始捉摸不透,以为只要求两个节点之间的距离加起来最大的那个值就行了,结果too
young too simple~烦了我好久,我只好先找别人写的题目大意看了看,果然理解错了,它这道题的意思是把所有点分成两堆,求这两堆点之间的数据流量之和的最大值,另外,相同堆里的数据流量不用算。这次是深搜,因为是题目中并没有要求最短路径类似的东西,所以用深搜把可能的情况罗列一遍
void dfs(int num,int data)
{
vis[num]=1;//把num这个节点放进B堆里
int temp=data;
for(int i=1;i<=n;i++)
{
if(vis[i]==1)temp-=c[num][i];//如果i这个点已经在B堆里,减去num到i的数据流量
else temp+=c[num][i];//如果i这个点不在B堆里,加上num到i的数据流量
}
MAX=max(temp,MAX);//求和的最大值
for(int i=num+1;i<=n;i++)
{
if(temp>data)
{
dfs(i,temp);
vis[i]=0;
}
}
} 今天的第二题点击打开链接,做的是数独,完成这题以后数独放进程序里跑一跑就出结果了(笑),一开始我用的是二维数组用深搜遍历到最后就行了,但是发现很费时,也费空间,后来参考了前辈的题解,顿觉明悟,发现数独的每一个空格其实是可以用一个数来表示的,而且,也可以由这个数来表示该数所在的小方格的左上的数,在判断是否符合条件的时候很方便,以后在遇到这种表格啊,地图啊之类的,也许可以用一个数来表示二维的坐标。
今天可能最大的收获就是这第二题的一种技巧了。
希望明天会更好。
相关文章推荐
- ACM集训日记—8月1日
- ACM暑假集训日记 17.8.9 POJ 2774 字符串 Hash
- ACM暑假集训日记 17.8.8
- ACM暑假集训日记 17.8.10
- ACM暑假集训日记 17.8.16 树状数组
- ACM集训日记-8月8日
- ACM集训日记-8月10日
- ACM集训日记-8月17日
- ACM暑假集训日记 17.8.18 树状数组
- ACM暑假集训日记 17.8.1
- ACM暑假集训日记 17.8.2
- ACM暑假集训日记 17.8.3
- ACM集训日记-8月7日
- ACM暑假集训日记 17.8.4
- ACM集训日记-8月23日
- ACM集训日记-8月9日
- ACM集训日记-8月15日
- ACM暑假集训日记 17.8.5
- ACM集训日记-8月22日
- ACM集训日记-7月31日