中山DAy2——普及
今天挺不友好的,早上忘记定闹钟,晚了半小时起床,然后早上信心满满打算弄他个300分。结果……132.2分·。WTF???
T1:disease
题意:有n头奶牛,k种细菌(k<=15),给你每头奶牛携带的细菌种类,问:若让选出所有奶牛携带细菌少于d种,最多选几头奶牛?
思路:上手就用了动归,可能是昨天打积木那题,自己信心爆棚。然后……神奇的22.2分出炉啦! 之后,我痛定思痛,发现动归真的是伪得快。
正解:反正k小,把可能情况枚举一下,最多也没几种。不就是$C_k^d$种吗?然后比较打擂台就可以了。
见代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,ans,d,k,inf=-0x3f3f3f,flag[],use[];
bool a[][];
void dfs(int x)
{
for(int i=use[x-]+;i<=d;i++)
{
if(flag[i]==)
{
flag[i]=;
use[x]=i;
if(x==k)
{
for(int j=;j<=n;j++)
{
for(int i=;i<=d;i++)
{
if(a[j][i]==true&&flag[i]==)
{
ans--;
break;
}
}
}
if(ans>inf)
inf=ans;
ans=n;
}
else
dfs(x+);
flag[i]=;
use[x]=;
}
}
}
int main()
{
scanf("%d%d%d",&n,&d,&k);
ans=n;
for(int i=;i<=n;i++)
{
scanf("%d",&a[][]);
for(int j=;j<=a[][];j++)
{
scanf("%d",&a[][]);
a[i][a[][]]=true;
}
}
dfs();
printf("%d",inf);
return ;
}
注意事项:
要开一个数组,依次向后走,去记录,万万不能从1到k来回搞,不然就不是$C_d^k$而是C!了。
好题哉!!!
T2: jumpcow
题意:有一个序列,你可以选择其中任意个数组成一个子序列,其中有个弹跳值,弹跳值为子序列奇数项的和乘上偶数项的和,问:弹跳值最大为多少?
思路:熟悉的操作,熟悉的味道——动归!一开始在考场上,把奇偶混在一起,没有分开奇数项和偶数项,只有10分。
正解:奇偶分开是什么意思呢?很简单。就是设一个二维数组:a[n][2],其中第二维为1表示此项做奇数项是的情况,第二维为0表示此项是偶数项的情况。
转移方程:a[n][1]=max(a[n-1][0]+a[n][1],a[n-1][1])这个意思就是:如果不选此项就是前一个奇数项,然后依次向后转移。若选此项就是前一项为偶数项那就加上。
同理:a[n][0]=max(a[n-1][1]-a[n][0],a[n-1][0])。
神奇的O(n)算法!
见代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,max1=-0x3f3f3f,max2=-0x3f3f3f,inf=-0x3f3f3f;
int a[][];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i][]);
}
for(int i=;i<=n;i++)
{
max1=-0x3f3f3f;
max2=-0x3f3f3f;
for(int j=;j<i;j++)
{
if(a[j][]>max1)
max1=a[j][];
if(a[j][]>max2)
max2=a[j][];
}
a[i][]=max1-a[i][];
a[i][]+=max2;
}
for(int i=;i<=n;i++)
{
if(inf<a[i][])
inf=a[i][];
if(inf<a[i][])
inf=a[i][];
}
printf("%d",inf);
return ;
}
好题哉!!!
T3:town
题意:有一个被水淹没小镇,给你小镇每块地的高度,每块地上的水可以流到上、下、左、右当中不高于它高度的格子里,可以在任何格子里安装一台水泵,水泵可以抽走无限量的水。问:最少需要安装几台水泵可以抽走所有的水?
正解:宽搜。先找到最低的格子,然后向高处拓展标记,如果没有抽完就找第二小的格子继续搜,以此类推。用一个变量记录一下次数即可。
见代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,m,k,head,ans,tail=;
int h1[],l1[],p[]={,-,,,},y[]={,,,-,};
char a[][];
bool flag[][];
void bfs(int h,int l)
{
head=;
tail=;
h1[]=h;
l1[]=l;
flag[h][l]=true;
while(head!=tail)
{
head++;
for(int i=;i<=;i++)
{
if(a[h1[head]+p[i]][l1[head]+y[i]]>&&flag[h1[head]+p[i]][l1[head]+y[i]]==false&&a[h1[head]+p[i]][l1[head]+y[i]]>=a[h1[head]][l1[head]])
{
tail++;
h1[tail]=h1[head]+p[i];
l1[tail]=l1[head]+y[i];
flag[h1[tail]][l1[tail]]=true;
}
}
}
}
int main()
{
scanf("%d",&k);
for(int q=;q<=k;q++)
{
ans=;
memset(a,-,sizeof(a));
memset(flag,false,sizeof(flag));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
cin>>a[i][j];
}
while()
{
bool flag2=false;
int min=0x3f3f3f,minh=,minl=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
if(a[i][j]<min&&flag[i][j]==false)
{
min=a[i][j];
minh=i;
minl=j;
flag2=true;
}
}
if(flag2==false)
break;
bfs(minh,minl);
ans++;
}
printf("%d\n",ans);
}
return ;
}
好题哉!!!
T4:cowtract
最大生成树模板题:没啥好讲的,博主也不会讲,上网搜呗。
见代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,ans,ans1,fa[],flag;
struct cow{
int father,son,cost;
};
cow tree[];
bool cmp(cow x,cow y)
{
return x.cost>y.cost;
}
int find(int x)
{
if(fa[x]==x)
return x;
else
return fa[x]=find(fa[x]);
}
void add(int x,int y)
{
fa[fa[x]]=fa[y];
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
fa[i]=i;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&tree[i].father,&tree[i].son,&tree[i].cost);
}
sort(tree+,tree++m,cmp);
for(int i=;i<=m;i++)
{
if(find(tree[i].father)!=find(tree[i].son))
{
ans1++;
add(tree[i].father,tree[i].son);
ans+=tree[i].cost;
}
}
if(ans1==n-)
{
printf("%d",ans);
return ;
}
else
printf("-1");
return ;
}
好题哉!!!
中山DAy2——普及的更多相关文章
- 中山Day10——普及
		
今天又是愚蠢的一天,估分230,实得110.其中T2.4不会,这里就只说题意和简要思路. 收获:scanf>>a,以及printf<<a. T1:模板题 此题相对简单,就是读入 ...
 - 中山Day5——普及
		
今天题目真是贼难呐...才38... 收获:树状数组单个修改 树状数组区间修改 T1:旅行 题意:有n个数,问;从中取任意个数,他们的和为质数的方案数是多少?(n<=50) 暴力模拟即可,这里不 ...
 - 中山Day4——普及
		
生活开始日益平淡了呢...今天130分. 收获:归并排序求逆序对 背包问题(01.完全.多重)(外带滚动数组优化) T1:题目链接(才不会告诉你们下面的代码也是洛谷上弄来的) 思路:动态规划.首先,设 ...
 - [GDKOI2021] 普及组 Day2 总结
		
[ G D K O I 2021 ] 普 及 组 D a y 2 总 结 [GDKOI2021] 普及组 Day2 总结 [GDKOI2021]普及组Day2总结 时间安排和昨天的GDKOI2021 ...
 - 中山纪中集训Day4双是测试(划沝)  九校联考-DL24凉心模拟Day2
		
A组T1 锻造 (forging) 1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆 ...
 - 中山纪中集训Day2又是测试(划水)
		
A组T1 bzoj 2674 Attack Description chnlich 非常喜欢玩三国志这款游戏,并喜欢用一些策略出奇制胜.现在,他要开始征服世界的旅途了.他的敌人有N 座城市和N 个太守 ...
 - 2019中山纪念中学夏令营-Day2[JZOJ]
		
博客的开始,先聊聊代码实现: 每次比赛以后,要有归纳错误的习惯. 错误小结: 1.读入:scanf(“%c”)会读入回车和空格,但cin不会. 2.对于二维数组的输入,不能把m,n搞混了,会引起严重的 ...
 - 中山普及Day17——普及
		
今天换教室,本来教室多好嘛,易守难攻,结果...今天今天仅下午就被熊抄了2次,熊超真TMD不是人呐,走路连脚步声都没有. 然后,播报分数: 爆0了!!!
 - 中山普及Day13——普及
		
又是迷之自信的说...估的230,考的50整,我欲上天呐!!! T1:深渊(怕不是黑暗种族聚集地???) 思路:动归.而且是简单动归.转移方程:Fi,j=max(Fi-1,j,Fi,j,Fi-1,(j ...
 
随机推荐
- 16,div+css的布局较table布局有什么优点?
			
改版的时候更加方便,只要改css文件 页面加载速度更快,结构化清晰,页面显示简洁 表现与结构相分离 易于搜索引擎优化,排名更靠前
 - Kakfa概述及安装过程
			
一.概述 1. Kafka是由LinkedIn(领英)开发的一个分布式的消息系统,最初是用作LinkedIn的活动流(Activity Stream)和运营数据处理的基础 a. 活动流数据包括页面访问 ...
 - python基础教程系列1-基础语法
			
最近在学习python,主要通过廖雪峰的python教程入门,看看自己能够花多少时间最快入门.通过写博客梳理自己的知识点,强化自己的记忆.总的学习思路是,快速学习一遍教程,然后做一些算法题目实践,再然 ...
 - 「CF894E」 Ralph and Mushrooms
			
传送门 Luogu 解题思路 首先我们要发现:在同一个强连通分量里的所有边都是可以无限走的. 那么我们就有了思路:先缩点,再跑拓扑排序. 那么问题就是 \(\text{DP}\) 状态如何初始化. 我 ...
 - Javascript——(1)
			
1.Javascript有两种解释表示形式:1)在html的<header>中写<script><script/>,另一种是将另一个文件保存为xxx.js文档,然后 ...
 - 使用Kubespray在ubuntu上自动部署K8s1.9.0集群
			
Kubespray 是 Kubernetes incubator 中的项目,目标是提供 Production Ready Kubernetes 部署方案,该项目基础是通过 Ansible Playbo ...
 - Python中注释与声明
			
Python中注释的写法 #:使用井号进行单行注释 Python中貌似没有提供多行注释,不过我们可以利用三引号的多行字符串来进行多行注释 """ 多行注释内容 多行注释内 ...
 - ES-elasticsearch安装-linux
			
(1)安装JDK(ES是使用java开发的) (2)安装ES(虚拟机内存大于一个g) 1)创建普通用户启动 2)非常占用内存(默认1个g的内存) (3)创建一个普通用户(用于启动ES) groupad ...
 - CDH
			
CDH 1.CDH简介 CDH 2.Cloudera Manager的安装 软件下载地址: 链接:https://pan.baidu.com/s/1C5HpiVEOtH_4PjylyJaXvA ...
 - 洛谷 P3371 【模板】单源最短路径(弱化版) && dijkstra模板
			
嗯... 题目链接:https://www.luogu.org/problem/P3371 没什么好说的,这是一个最短路的模板,这里用的dijkstra做的... 注意: 1.dijkstra和邻接表 ...