复杂的按钮

复杂的按钮
(button.pas/c/cpp)
【题目描述】
小K在遗迹探险时遇到了N个按钮,刚开始所有的按钮都处于开状态,小K的经验告诉他把所有的按钮都关上会有“好事”发生,可是有些按钮按下时会让其他一些已经闭合的按钮弹开。经过研究,每个按钮都对应着一个固定的弹开集合,这个按钮按下时,弹开集合中所有的按钮都会变为开状态。现在小K想知道是否能让所有的按钮变为闭合状态。如果能,打印最少步数以及方案,否则,打印“no solution”。
【输入格式】
第一行一个整数N,表示按钮的个数;
接下来N行,表示编号为1到N个按钮的弹开集合,格式为Mi,B1B2B3...BMi,表示编号为i的按钮按下时,会让编号为B1B2B3...BMi的按钮弹开(注:其中不会出现重复)
【输出格式】
如果无解,输出“no solution”;否则,第一行输出最少步数ret,第二行输出ret个数,表示按顺序按下编号为这些数的按钮就可以解决,每2个整数之间用一个空格隔开;如果有多种方案,请输出字典序最小的方案。
【样例输入】
6
2 2 3
0
2 4 5
0
0
0

【样例输出】
6
1 2 3 4 5 6

【数据规模】
对于40%的数据: 1≤N≤10;
对于100%的数据:1≤N≤30,000;令M=M1+M2+M3+...+MN,则0≤M≤1,000,000;

首先,要看出来这是个鬼畜的图论题。咋么看出来的?比方说,按钮1,不受任何按钮的牵制,更何况他的序号更小,那么肯定先按他,以后就不会再次按到他了。那么我们说第一问的答案如果有解肯定是n。为什么?举个例子,所有按钮都没牵制任何按钮,那么最少最少,也需要按n次。因为你需要的是按下每一个按钮,而每个按钮原来都是开着的,而且只能是自己按下按钮,而不是按下其他按钮导致的,所以得出ans1>=n。那么如果ans1>n,就说明n次以后肯定剩下了几个按钮,比如1,5,6。那么如果再按下1,5,6,必定又

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个更复杂的 3D 按钮的代码示例,它具有渐变色、阴影、鼠标悬停效果和点击效果: ```html <button class="button"> <div class="front">按钮</div> <div class="back">按钮</div> <div class="left"></div> <div class="right"></div> <div class="top"></div> <div class="bottom"></div> <div class="shadow"></div> </button> ``` ```css .button { width: 200px; height: 70px; position: relative; perspective: 1000px; border: none; outline: none; background: linear-gradient(to bottom right, #ff8a65, #ff7043); cursor: pointer; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); transition: transform 0.3s, box-shadow 0.3s; } .front, .back { position: absolute; top: 0; left: 0; width: 100%; height: 100%; padding: 20px; box-sizing: border-box; color: white; text-transform: uppercase; font-size: 24px; font-weight: bold; letter-spacing: 2px; } .front { transform-origin: center center -40px; transform: translateZ(40px); } .back { transform-origin: center center 40px; transform: translateZ(-40px) rotateY(180deg); } .left, .right, .top, .bottom { position: absolute; width: 200px; height: 70px; background: linear-gradient(to bottom right, #ffab91, #ff8a65); transition: transform 0.3s; } .left { transform-origin: left center; transform: rotateY(-90deg) translateX(-40px); } .right { transform-origin: right center; transform: rotateY(90deg) translateX(40px); } .top { transform-origin: center top; transform: rotateX(-90deg) translateY(-40px); } .bottom { transform-origin: center bottom; transform: rotateX(90deg) translateY(40px); } .shadow { position: absolute; width: 200px; height: 70px; background-color: rgba(0, 0, 0, 0.2); transform-origin: center center -100px; transform: translateZ(100px); filter: blur(10px); opacity: 0; transition: opacity 0.3s; } .button:hover, .button:focus { transform: translateY(-5px) translateZ(5px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5); } .button:hover .front { transform: translateZ(40px) rotateX(-30deg); } .button:hover .back { transform: translateZ(-40px) rotateX(30deg) rotateY(180deg); } .button:hover .left { transform: rotateY(-90deg) translateX(-40px) rotateY(-30deg); } .button:hover .right { transform: rotateY(90deg) translateX(40px) rotateY(30deg); } .button:hover .top { transform: rotateX(-90deg) translateY(-40px) rotateX(-30deg); } .button:hover .bottom { transform: rotateX(90deg) translateY(40px) rotateX(30deg); } .button:hover .shadow { opacity: 1; } .button:active { transform: translateY(-2px) translateZ(2px); } .button:active .front { transform: translateZ(40px) rotateX(-10deg); } .button:active .back { transform: translateZ(-40px) rotateX(10deg) rotateY(180deg); } .button:active .left { transform: rotateY(-90deg) translateX(-40px) rotateY(-10deg); } .button:active .right { transform: rotateY(90deg) translateX(40px) rotateY(10deg); } .button:active .top { transform: rotateX(-90deg) translateY(-40px) rotateX(-10deg); } .button:active .bottom { transform: rotateX(90deg) translateY(40px) rotateX(10deg); } .button:active .shadow { opacity: 0.5; } ``` 在这个例子,我们使用了 CSS3 的 `transform` 属性来实现 3D 效果,使用了 `linear-gradient` 实现背景渐变,使用了 `box-shadow` 实现阴影效果。`.front`、`.back`、`.left`、`.right`、`.top` 和 `.bottom` 类定义了按钮的各个面的样式,使用了 `transform` 属性来实现旋转、平移和变形。`.shadow` 类定义了按钮的阴影的样式,使用了 `filter` 属性实现高斯模糊效果。最后,使用 `:hover`、`:focus` 和 `:active` 伪类来定义按钮的鼠标悬停、聚焦和点击效果。 以上代码只是一个示例,实际应用时可能需要根据实际需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值