ACM集训日记-8月22日
来源:互联网 发布:中欧工程技术学院知乎 编辑:程序博客网 时间:2024/06/04 20:10
今天又是训练赛的一天,今天的第一题点击打开链接,看懂题目后知道,这是一道最小生成树的变形,就是可能有两个点之间的距离可以视为0,然后使用prime算法就行了,比较坑的是一开始有部分的数不是double就WA,全部的数据类型改成double就AC了,今天的第二题点击打开链接,这道题就是一个有些贪心的味道,问最少用几块木板能铺完泥坑,需要注意的处理是,由于给的泥坑的位置不是升序的,需要输完泥坑的位置后sort排序一下,
for(i=1;i<=N;i++)//关键操作 { if(w>=a[i].r) continue; w=max(a[i].l,w); while(w<a[i].r) { ans++; w+=L;//加上一块木板的长度 } }然后今天在训练赛期间没有A出的E题点击打开链接,这道题大致的意思就是求不大于k种病毒数的牛的最大值,我用的广搜,讲道理没什么问题,样例也是过了,但是就是WA,不知道哪里出错了
#include<iostream>#include<cstdio>#include<string.h>using namespace std;const int MAXN=1005;int n,d,k,ans=0,dif[16]={0},m=-1;struct cow{ int di; int dise[16];}c[MAXN];int cd(){ int cnt=0; for(int i=1;i<=15;i++) { if(dif[i]==1)cnt++; } return cnt;}void dfs(int x)//如果把第x头牛放进去{ if(ans>m)m=ans; if(x>n)return; else { for(int i=1;i<=d;i++) { if(c[x].dise[i]!=dif[i]&&!dif[i]) { dif[i]=1; } } if(cd()<=k) { ans++; dfs(x+1); ans--; } for(int i=1;i<=d;i++) { if(c[x].dise[i]==dif[i]&&dif[i]) { dif[i]=0; } } dfs(x+1); }}int main(){ int f; scanf("%d%d%d",&n,&d,&k); for(int i=1;i<=n;i++) { cin>>c[i].di; memset(c[i].dise,0,sizeof(c[i].dise)); for(int j=0;j<c[i].di;j++) { cin>>f; c[i].dise[f]=1; } } dfs(1); cout<<m<<endl; return 0;}晚上回去再跟组里人好好讨论吧,加油,一定要弄个水落石出!
阅读全文
0 0
- ACM集训日记-8月22日
- ACM集训日记-8月8日
- ACM集训日记-8月1日
- ACM集训日记-8月2日
- ACM集训日记-8月3日
- ACM集训日记-8月4日
- ACM集训日记-8月5日
- ACM集训日记-8月7日
- ACM集训日记-8月9日
- ACM集训日记-8月10日
- ACM集训日记-8月11日
- ACM集训日记-8月12日
- ACM集训日记-8月14日
- ACM集训日记-8月15日
- ACM集训日记-8月16日
- ACM集训日记-8月17日
- ACM集训日记-8月18日
- ACM集训日记-8月19日
- Luogu 1282(dp)
- 排序算法—插入排序(python)
- HDU 6166 && 2017 多校训练:Senior Pan(最短路)
- Bootstrap fileinput.js Demo
- Linux 查看log文件
- ACM集训日记-8月22日
- git的基本使用
- C/C++中的参数传递
- SpringMVC详解(三)------基于注解的入门实例
- android开发-dialog与activity 屏蔽Home键详解
- OS X 和 iOS 中的多线程技术
- 从零开始搭建一个项目(rxJava+Retrofit+Dagger2)
- 2017 Multi-University Training Contest
- Java 获取当前时间的上个月信息