
JZOJ7月25日提高组T1 挑竹签
发布日期:2021-05-06 15:39:39
浏览次数:16
分类:精选文章
本文共 862 字,大约阅读时间需要 2 分钟。
JZOJ7月25日提高组T1 挑竹签
题目
挑竹签——小时候的游戏
夏夜,早苗和诹访子在月光下玩起了挑竹签这一经典的游戏。 挑竹签,就是在桌上摆上一把竹签,每次从最上层挑走一根竹签。如果动了其他的竹签,就要换对手来挑。在所有的竹签都被挑走之后,谁挑走的竹签总数多,谁就胜了。 身为神明的诹访子自然会让早苗先手。为了获胜,早苗现在的问题是,在诹访子出手之前最多能挑走多少竹签呢? 为了简化问题,我们假设当且仅当挑最上层的竹签不会动到其他竹签。题解
题意
有 n n n个竹签,竹签之间有压着的关系
要取当前竹签,必须满足它不被任何竹签压着 求能取的最多竹签分析
把压着的关系转换成有向图
这题就很明显是一个拓扑题 每次寻找入度为0的点,答案加一 然后就是:删边、找点、加答案、删边、找点 找到最后找不到点了 输出答案Code
#include#include using namespace std;struct node{ int head,to,next;}a[1000005];int n,m,i,x,y,h,t,tot,ans,d[10000005],num[1000005];bool b[1000005];int main(){ freopen("mikado.in","r",stdin); freopen("mikado.out","w",stdout); scanf("%d%d",&n,&m); for (i=1;i<=m;i++) { scanf("%d%d",&x,&y); tot++; a[tot].to=y; a[tot].next=a[x].head; a[x].head=tot; num[y]++; } h=0; t=0; for (i=1;i<=n;i++) { if (num[i]==0) { t++; d[t]=i; b[i]=true; ans++; } } while (h
发表评论
最新留言
很好
[***.229.124.182]2025年04月16日 03时45分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
c++ static笔记
2019-03-06
C++中头文件相互包含与前置声明
2019-03-06
JQuery选择器
2019-03-06
多线程之volatile关键字
2019-03-06
2.2.2原码补码移码的作用
2019-03-06
Java面试题:Servlet是线程安全的吗?
2019-03-06
Java集合总结系列2:Collection接口
2019-03-06
Linux学习总结(九)—— CentOS常用软件安装:中文输入法、Chrome
2019-03-06
MySQL用户管理:添加用户、授权、删除用户
2019-03-06
比技术还重要的事
2019-03-06
linux线程调度策略
2019-03-06
软中断和实时性
2019-03-06
Linux探测工具BCC(可观测性)
2019-03-06
流量控制--2.传统的流量控制元素
2019-03-06
SNMP介绍及使用,超有用,建议收藏!
2019-03-06
51nod 1596 搬货物(二进制处理)
2019-03-06
来自星星的祝福(容斥+排列组合)
2019-03-06
Hmz 的女装(递推)
2019-03-06
HDU5589:Tree(莫队+01字典树)
2019-03-06
不停机替换线上代码? 你没听错,Arthas它能做到
2019-03-06