结题报告--洛谷P3915
题目:点此。
我处理这种多组数据的方法被我叫做“mains法”,就是先假设只有一组数据,写一个代码,然后把那个main函数改成mains,最后写一个真正的main函数。
这个“真正的”main函数一般有两种 1.告诉你数据组数:
int main(){
int t;
cin >> t;
for(int i=;i<t;i++){
mains();
}
return ;
}
2.不告诉你数据组数:
int main(){
int *|*;//*|*表示根据实际情况会发生变化,这里*|*表示mains中第一个读入的数据,放在main函数里读入
while(cin >> *|*){
mains(*|*);//*|*用参数的形式告诉mains
}
}
好了,进入正题
这道题我的思路是:先读入数据,建立一棵类似于邻接表存储的树(这样方便调 试,而且貌似也没有坏处),然后判断n%k是否等于0,不等直接NO,return 0! 等于继续。进行深搜,首先找到下一个访问的顶点进行访问,然后判断返回值(那个结点是该分组的第几个节点) 是否大于k或=-1(=-1说明已经无法划分),返回-1,否则判断是否等于k,若等于说明已有一组,无需继续配对 否则将ans变量加上这个返回值,该节点访问完毕后return ans,ans初始值为1,不为0。 最后如果根节点返回值不为k,输出Yes,否则NO。
(为什么是不等于?我不知道,不等于就AC,等于就爆零) 代码:
#include <cstdio>
#include <vector>
using namespace std;
bool color[]={true};
vector <int> tree[];
int k;
int dfs(int now){
color[now]=false;
int number=;
for(int i=;i<tree[now].size();i++){
if(color[tree[now][i]]){
int a=dfs(tree[now][i]);
if(a>k||a==-){
return -;
}
if(a==k){
continue;
}
number+=a;
}
}
return number;
}
int mains(){
int n;
scanf("%d %d",&n,&k);
for(int i=;i<n;i++){
tree[i].clear();
color[i]=true;
}
for(int i=;i<n-;i++){
int x,y;
scanf("%d %d",&x,&y);
x--;
y--;
tree[x].push_back(y);
tree[y].push_back(x);
}
if(n%k!=){
puts("NO");
return ;
}
if(dfs()==k){
puts("YES");
}
else{
puts("NO");
}
return ;
}
int main(){
int t;
scanf("%d",&t);
for(int i=;i<t;i++){
mains();
//puts("\n");
}
return ;
}
代码
补充:
在你已熟练printf和scanf的时候,不要用cin、cout,用printf、scanf,不然cin数据一大,光读数据就会 TLE,还有如果你会且熟练getchar()或cin.get()读入整数的话,就用它,应为有些时候数据很大,scanf也 会TLE,所以就要用到它。
附录:
用getchar或cin.get()读入数据的基本模板:
int read()//视需要可变成long long,unsighed long long……
{
int s=,w=;//返回值类型变了,s也要变,w不用变
char ch=getchar();
while(ch<''||ch>'')
{
if(ch=='-')
w=-;
ch=getchar();
}
while(ch>=''&&ch<='')
s=s*+ch-'',ch=getchar();
return s*w;
}
(这次调整了一下顺序,犯的错误和收获在后面)
犯的错误:
1.dfs如果不满足条件应该return不是exit,因为如果是单测试数据,这样做是可以的,可是它有多组数据,这样做会直接结束程序,导致后面的测试数据没法输出答案。
2.tree邻接表没进行初始化(clear)。
3.用vector实现的邻接表不用头节点。
4.exit改成return后输出NO的语句没去掉。
5.判断是否整除的语句应该放在读数据的后面,不然数据就没读完,后面的数据会被认为是下一组数据的开始。
6.color数组没初始化。
7.第十行是tree[now]不是tree[i]。
收获:
1.尽量不用exit,除非不是在做题(别忘了我还在开发游戏)
2.遇到多测试数据的题目,在mains里,三省代码:变量初始化了吗??数组初始化了吗??stl容器初始化了吗??
3.添加头节点的时候,问自己:需要吗??若需要,写dfs时,再问一遍:循环时是否访问了头节点??
4.该要改全面。
5.任何操作(除了输入必须操作)都要在读数据后执行。
结题报告--洛谷P3915的更多相关文章
- 斜率优化dp学习笔记 洛谷P3915[HNOI2008]玩具装箱toy
本文为原创??? 作者写这篇文章的时候刚刚初一毕业…… 如有错误请各位大佬指正 从例题入手 洛谷P3915[HNOI2008]玩具装箱toy Step0:读题 Q:暴力? 如果您学习过dp 不难推出d ...
- 《基于Arm实验箱的国密算法应用》课程设计 结题报告
<基于Arm实验箱的国密算法应用>课程设计 结题报告 小组成员姓名:20155206赵飞 20155220吴思其 20155234昝昕明 指导教师:娄嘉鹏 设计方案 题目要求:基于Arm实 ...
- 《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告
<基于Cortex-M4的ucOS-III的应用>课程设计 结题报告 小组成员姓名:20155211 解雪莹 20155217 杨笛 20155227 辜彦霖 指导教师:娄嘉鹏 一.设计方 ...
- 【刷题】洛谷 P3690 【模板】Link Cut Tree (动态树)
题目背景 动态树 题目描述 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor ...
- 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...
- 2016noipday1t1玩具迷题结题报告
经常读这个代码有益于比赛时想起一些思路.... day1t1,洛谷dalao称之为水题...??然后我去年还是没拿到分,就这个,我还就写了40%的数据,AC到40,然而这不是关键,注释了freopen ...
- 代码源 每日一题 分割 洛谷 P6033合并果子
题目链接:切割 - 题目 - Daimayuan Online Judge 数据加强版链接: [NOIP2004 提高组] 合并果子 加强版 - 洛谷 题目描述 有一个长度为 ∑ai 的木板,需要 ...
- 结题报告--P5551洛谷--Chino的树学
题目:点此 题目描述 Chino树是一棵具有某种性质的满二叉树,具体来说,对于这棵树的每一个非叶子节点,它的左子节点(A)(A)(A)的右子节点(C)(C)(C)与它的右子节点(B)(B)(B)的左子 ...
- 2013山东省ICPC结题报告
A.Rescue The Princess 已知一个等边三角形的两个顶点A.B,求第三个顶点C,A.B.C成逆时针方向. 常规的解题思路就是用已知的两个点列出x,y方程,但这样求出方程的解的表达式比较 ...
随机推荐
- cs231n spring 2017 lecture16 Adversarial Examples and Adversarial Training
(没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比 ...
- python掉包侠与深浅拷贝
今日所得 包 logging模块 hashlib模块 openpyxl模块 深浅拷贝 包 在学习模块的时候我们了解过模块的四种表现形式,其中的一种就是包. 什么是包? 它是一系列模块文件的结合体,表示 ...
- Java开发面试常见问题合集
次面试事故 面试官:你看过哪些源码?我:都挺熟悉的面试官:对hashMap了解程度怎么样?面试官:那你能讲讲 HashMap的实现原理吗?面试官:HashMap什么时候会进行 rehash?面试官:结 ...
- NDK开发之<cpu-features.h模块功能>
今天研究下cpufeatures库,它是一个轻量级的展示CPU特性的模块,调用者在运行时候可以根据这个库提供的简单接口获取到目标机的CPU架构和特性. 一.代码路径: $NDK_ROOT/source ...
- 史无前例的KDD 2014大会记
2014大会记" title="史无前例的KDD 2014大会记"> 作者:蒋朦 微软亚洲研究院实习生 创造多项纪录的KDD 2014 ACM SIGKDD 国际会 ...
- iOS应用程序开发——解决iOS7之前版本与之后版本下app启动图片跳动问题
之前开发的app都是针对iOS6(兼容iOS5),所以在开发之初也出现了启动图片向下跳动的现象,通过网上的解决方法,代码中做了处理(“-20”): _imageView.frame = CGRectM ...
- 隐私标签(Privacy.Tag):轻轻一贴,愉快拍照!
用相机去捕捉精彩瞬间,用照片来记录生活足迹,并实时地与朋友们分享当下的心情,似乎已成为我们忙碌生活中最有趣的调味剂.但随着移动设备照相功能的日益完善,以及各大社交平台的不断兴起,很多时候,你是否也会有 ...
- [洛谷P4777] [模板] 扩展中国剩余定理
扩展中国剩余定理,EXCRT. 题目传送门 重温一下中国剩余定理. 中国剩余定理常被用来解线性同余方程组: x≡a[1] (mod m[1]) x≡a[2] (mod m[2]) ...... x≡a ...
- Memcached笔记——(二)XMemcached&Spring集成
今天研究Memcached的Java的Client,使用XMemcached 1.3.5,做个简单的测试,并介绍如何与Spring集成. 相关链接: Memcached笔记--(一)安装&常规 ...
- 【转载】Scrapy安装及demo测试笔记
Scrapy安装及demo测试笔记 原创 2016年09月01日 16:34:00 标签: scrapy / python Scrapy安装及demo测试笔记 一.环境搭建 1. 安装scrapy ...