usaco2.2partylamps高能等效+规律枚举

Captain_Von Captain_Von     2022-09-08     388

关键词:

题在这:https://www.luogu.org/problem/show?pid=1468#sub

按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭,本来是关着的灯被点亮。

按钮2:当按下此按钮,将改变所有奇数号的灯。

按钮3:当按下此按钮,将改变所有偶数号的灯。

按钮4:当按下此按钮,将改变所有序号是3*K+1(K>=0)的灯。例如:1,4,7...

此题关键:找到4个按钮之间的关系,可发现最终状态只有少数(可枚举的)几种,又:四个操作的影响周期取最小公倍数后,发现   6个灯为一个变化周期,不管如何按按钮,最终N个灯的状态均是以6个灯为基本单位,N/6为循环次数的循环序列

一、首先,从基本操作入手,随意搭配四个按钮,且每种按钮只能使用一次,可发现:(只考虑6个灯,0表示灯灭,1表示灯亮)

1        2         3          4

按1 ====》0 0 0 0 0 0

按2 ====》0 1 0 1 0 1 

按3 ====》1 0 1 0 1 0

按4 ====》0 1 1 0 1 1

按1和2====》1 0 1 0 1 0 ====》相当于按3

按1和3 ====》0 1 0 1 0 1 ====》相当于按2

按1和4 ====》1 0 0 1 0 0

按2和3 ====》0 0 0 0 0 0 ====》相当于按1

按2和4 ====》1 1 0 0 0 1

按3和4 ====》0 0 1 1 1 0

按1、2、3====》相当于按2遍三 ====》不变

按1、2、4====》相当于按3和4 

按1、3、4====》相当于按2和4
 
再加上不按 ====》1 1 1 1 1 1
共计8种最终状态(红色),故以后所有的状态都是由这8个中的一个为基本循环得到的
完成它们的最少操作次数分别为:1,1,1,3,2,2,2
就是按4这种情况,按4 可以一步,也可以三步或者三步以上(224)但是就是不能两步达到,故设为3,把按一次的情况特判
二、又由:
按1和按2相当于按3;
按2和按3相当于按1;
按1和按3相当于按2;
按1按2和按3相当于不按;
 
 
由(一)和(二)得,c 等于任意操作次数时,我们均可以用(一)搭出规律骨架,用(二)扩充(一)中的操作使凑齐c个操作,以这8个结果为基础,构造答案(只是为了证明正确性,不必输出),最后,只输出最终状态,完毕。
 
 
 
下面为参考代码(借鉴了“ly59782的博客”中的代码):
 
技术分享
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int state[9][7]={
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},//press 1
{0,0,0,1,1,1,0},//press 3 & 4
{0,0,1,0,1,0,1},//press 2
{0,0,1,1,0,1,1},//press 4
{0,1,0,0,1,0,0},//press 1 & 4
{0,1,0,1,0,1,0},//press 3
{0,1,1,0,0,0,1},//press 2 & 4
{0,1,1,1,1,1,1} //not pressing
};
int c,n,x,a[8];
int minn[9]={0,1,2,1,3,2,1,2};
bool flag=0;

int main()
{
    freopen("lamps.in","r",stdin);
    freopen("lamps.out","w",stdout);
    for(int i=1;i<=6;i++)
        a[i]=-1;
    cin>>n>>c;
    while(cin>>x,x!=-1)
    {
        int v=x%6;
        if(v==0) v=6;
        a[v]=1;        
    }
    while(cin>>x,x!=-1)
    {
        int v=x%6;
        if(v==0) v=6;
        a[v]=0;        
    }
    for(int i=1;i<=8;i++)
    {
        int f=1;
        for(int j=1;j<=6;j++)    
        {
            if(a[j]==-1)
                continue;
            if(a[j]!=state[i][j])
            {
                f=0;
                break;
            }
        }
        if(f==1&&(c>=minn[i]||(c==1&&i==4)))
        {
            for(int p=1;p<=n;p++)
            {
                int v=p%6;
                if(v==0) v=6;
                cout<<state[i][v];
                flag=1;
            }
            cout<<endl;
        }
    }
    if(!flag)
        cout<<"IMPOSSIBLE"<<endl;
    return 0;
}
View Code

 

等效于 Linux 上的 GetTickCount()

】等效于Linux上的GetTickCount()【英文标题】:EquivalenttoGetTickCount()onLinux【发布时间】:2011-02-2620:21:32【问题描述】:我正在寻找与Linux上的GetTickCount()等效的版本。目前我正在使用Python的time.time(),它可能会调用gettimeofday()。我担心... 查看详情

高能人习惯模型

#以终为始模型 ##任何事物都需要两次创造(第一次思考、第二次行动),改写人生剧本,成为自己的第一次创造者。个人责任感和主动性对于精神创造来说至关重要。再以计算机作为比喻,你是自己的人生程序设计师,你要... 查看详情

核反应堆(代码片段)

某核反应堆有两类事件发生:高能质点碰击核子时,质点被吸收,放出3个高能质点和1个低能质点;低能质点碰击核子时,质点被吸收,放出2个高能质点和1个低能质点。假定开始的时候(0微秒)只有一个高能质点射入核反应堆... 查看详情

rtscon2022沙龙高能回顾

12月3日,一年一度的RTSCon大会如期举行。本次活动由RTS社区、小樱桃科技和LiveVideoStack联合主办,场面热烈、大家提问踊跃,大会获得圆满成功。本次RTSCon依然在线上进行,使用了LiveVideoStack的直播系统。会议邀请... 查看详情

一图看懂|2021阿里云混合云的高能时刻

 更多阿里云混合云产品,欢迎前往【混合云官网】混合云_HybridCloud_解决方案_数字化转型-阿里云更多混合云最佳实践,欢迎前往【混合云体验营】阿里云混合云体验营 查看详情

一图看懂|2021阿里云混合云的高能时刻

 更多阿里云混合云产品,欢迎前往【混合云官网】混合云_HybridCloud_解决方案_数字化转型-阿里云更多混合云最佳实践,欢迎前往【混合云体验营】阿里云混合云体验营 查看详情

如何掌握jquery插件开发(高能)

在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先想到的肯定是寻找现有的jQuery插件来满足相应的展示需求。目前页面中常用的一些组件,都有多种jQuery... 查看详情

kubernetes网络自学系列|前方高能:kubernetes网络故障定位指南

...a;Kubernetes网络自学系列|汇总_COCOgsta的博客-CSDN博客3.9前方高能:Kubernetes网络故障定位指南网络可以说是Kubernetes部署和使用过程中最容易出问题 查看详情

hdu2085

...路:  这是一道递推题;  f(n)=x,y:表示n秒时有x个高能质子,y个低能质子;  f(n).x:表示n秒时高能质子的个数;  f(n).y:同理。  接下来推公式:   (1)高能质点碰击核子时,质点被吸收,放出3个高能质点和1个... 查看详情

杭电2085核反应堆

...String[]args)Scannerinput=newScanner(System.in);long[]gao=newlong[35];//存高能质点数long[]di=newlong[35];//存低能质点数gao[0]=1;//0微秒时的射入的一个高能质点gao[1]=3;//第一微秒产生的高能质点di[1]=1;//第一微妙产生的低能质点for(inti=2;i<=33;i++)gao[i]=... 查看详情

第八次作业,这不是占坑,前方高能预警!!

这不是占坑:这不是占坑:这不是占坑:重要的事情说三遍!!!  1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩... 查看详情

前方高能:1024程序员节读书攻略来来来来啦!

又到一年1024一年1次的程序员专属图书大促省钱攻略(必看!!!)图灵大促详情 京东自营图书  满减+ 优惠券 10.22-10.24大促期间每满100 减50 !但但但这还不够!文末链接 领取优惠券 计算机... 查看详情

面试高并发,凉了(全程高能,赶快收藏)

大家好,我是冰河~~程序员小菜是一家互联网公司的开发人员,主要负责后端Java技术开发,平时的工作中以CRUD为主。从刚毕业来到公司,一转眼3年过去了,小菜突然觉得在这家公司工作没啥意思了,整天... 查看详情

面试高并发,凉了(全程高能,赶快收藏)

大家好,我是冰河~~程序员小菜是一家互联网公司的开发人员,主要负责后端Java技术开发,平时的工作中以CRUD为主。从刚毕业来到公司,一转眼3年过去了,小菜突然觉得在这家公司工作没啥意思了,整天... 查看详情

前方高能,一大波云培训正向你袭来!

云的江湖藏龙卧虎,百家争鸣。过硬的技术和可靠的服务支撑为微软云技术在如今的云市场占得一席之地,而背后的顶尖工程师和来自各路微软合作伙伴人才的不断努力,也为微软云带来了不断的创新与颠覆。近期,我们特别邀... 查看详情

3星|《高能量姿势》:主动采取强势的姿势可以提高自信和工作学习表现

...一个更优秀的人,总是害怕被人揭穿。 后半部分提出高能量姿势和低能量姿势,高能量姿势就是让人显得更强势的姿势,具体表现在不同文化中可能不同。作者认为:高能量姿势可以让人更自信,工作和学习更积极主动效果... 查看详情

前方高能,终于有人把接口测试讲明白了!

一、前言接口测试是测试系统之间接口的一种测试,只要用于检测外部系统和内部系统之间的或者内部的各个子系统之间的交互点。测试的重点是检测系统之间数据的交换,传递,权限控制,处理次数以及系统之... 查看详情

高能直播,大咖云集!邀你共启bizdevops探索之路。

简介:《开发者评测局》第二期特别节目——阿里云DevOps平台云效专场阿里云、南京大学、Thoughtworks、InfoQ产学研6位领军人物共话产研数字化未来,开启立足于数字化转型浪潮下的BizDevOps探索之路。数字经济时代,数... 查看详情