今天挺不友好的,早上忘记定闹钟,晚了半小时起床,然后早上信心满满打算弄他个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——普及的更多相关文章

  1. 中山Day10——普及

    今天又是愚蠢的一天,估分230,实得110.其中T2.4不会,这里就只说题意和简要思路. 收获:scanf>>a,以及printf<<a. T1:模板题 此题相对简单,就是读入 ...

  2. 中山Day5——普及

    今天题目真是贼难呐...才38... 收获:树状数组单个修改 树状数组区间修改 T1:旅行 题意:有n个数,问;从中取任意个数,他们的和为质数的方案数是多少?(n<=50) 暴力模拟即可,这里不 ...

  3. 中山Day4——普及

    生活开始日益平淡了呢...今天130分. 收获:归并排序求逆序对 背包问题(01.完全.多重)(外带滚动数组优化) T1:题目链接(才不会告诉你们下面的代码也是洛谷上弄来的) 思路:动态规划.首先,设 ...

  4. [GDKOI2021] 普及组 Day2 总结

    [ G D K O I 2021 ] 普 及 组 D a y 2 总 结 [GDKOI2021] 普及组 Day2 总结 [GDKOI2021]普及组Day2总结 时间安排和昨天的GDKOI2021 ...

  5. 中山纪中集训Day4双是测试(划沝) 九校联考-DL24凉心模拟Day2

    A组T1 锻造 (forging) 1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆 ...

  6. 中山纪中集训Day2又是测试(划水)

    A组T1 bzoj 2674 Attack Description chnlich 非常喜欢玩三国志这款游戏,并喜欢用一些策略出奇制胜.现在,他要开始征服世界的旅途了.他的敌人有N 座城市和N 个太守 ...

  7. 2019中山纪念中学夏令营-Day2[JZOJ]

    博客的开始,先聊聊代码实现: 每次比赛以后,要有归纳错误的习惯. 错误小结: 1.读入:scanf(“%c”)会读入回车和空格,但cin不会. 2.对于二维数组的输入,不能把m,n搞混了,会引起严重的 ...

  8. 中山普及Day17——普及

    今天换教室,本来教室多好嘛,易守难攻,结果...今天今天仅下午就被熊抄了2次,熊超真TMD不是人呐,走路连脚步声都没有. 然后,播报分数: 爆0了!!!

  9. 中山普及Day13——普及

    又是迷之自信的说...估的230,考的50整,我欲上天呐!!! T1:深渊(怕不是黑暗种族聚集地???) 思路:动归.而且是简单动归.转移方程:Fi,j=max(Fi-1,j,Fi,j,Fi-1,(j ...

随机推荐

  1. windows centos php-beast 安装

    https://github.com/imaben/php-beast-binaries windows下 可以直接在这里下载dll 根据自己的php版本  还有是不是线程安全的 来选择下载对应的 放 ...

  2. Java面向对象封装优化2_构造方法

    1. 类 package cn.itcast.day06.demo05; /* 一个标准的类通常要拥有下面四个组成部分: 1. 所有的成员变量都要使用private关键字修饰 2. 为每一个成员变量编 ...

  3. 【前端之BOM和DOM】

    " 目录 #. window对象介绍 #. window子对象 1. 浏览器对象 navigator 2. 屏幕对象 screen 3. 历史 history 4. 地址(URL)  loc ...

  4. 计算机二级-C语言-程序填空题-190117记录-对文件的处理,复制两个文件,往新文件中写入数据。

    //给定程序的功能是,调用函数fun将指定源文件中的内容赋值到指定目标文件中,复制成功时函数返回1,失败时返回0,把复制的内容输出到终端屏幕.主函数中源文件名放在变量sfname中,目标文件名放在变量 ...

  5. tomcat 开机自启

    d /usr/lib/systemd/system touch tomcat.service chmod 777 tomcat.service vi tomcat.service [Unit]Desc ...

  6. uWSGI配置参数释义

    uWSGI配置参数释义 socket : 地址和端口号,例如:socket = 127.0.0.1:50000 processes : 开启的进程数量 workers : 开启的进程数量,等同于pro ...

  7. 吴裕雄 python 神经网络——TensorFlow ckpt文件保存方法

    import tensorflow as tf v1 = tf.Variable(tf.random_normal([1], stddev=1, seed=1)) v2 = tf.Variable(t ...

  8. Cisco 3702i TX功率图

    有关思科TX Power选择的一些基本信息: 思科使用1到8的等级,其中1是最高功率,8是最低功率虽然比例上升到8,但不是每个band都使用(0-7)8个数据中的所有值.每个数字都有一个相应的dBm值 ...

  9. 20200213springboot日记

    ------------恢复内容开始------------ ------------恢复内容开始------------ ------------恢复内容开始------------ 数据库管理 L ...

  10. Maven____笔记摘抄

    1 1.maven的作用 i.增加第三方Jar (spring-context.jar spring-aop.jar ....) ii.jar包之间的依赖关系 (spring-context.jar ...