【JZOJ 5284】【清华集训2017模拟】超级翻转

清华集训酱油记 Day -INF在YALI训练了十二天,认识了__debug和h10,发现h10是隔膜大师(雾)?!! 然后模拟赛打得一般般,不过也算是体验了一把IOI赛制,虽然jzoj上还能看别人的分数?!Day0Day0发生了什么。。。我不记得了 好像就是报道完然后中午富榄请我和栋栋在thu桃李园下面的西餐厅吃饭,接着好像就是玩了很久,然后好像day0就过去了Day1怀着忐忑的心情进入了考场,虽然只是假集 阅读详情

Description

这里写图片描述

Solution

先枚举一个终点,跑出起点到终点的任意一条简单路径,
我们发现,只要我们在这条路径上的一个位置绕一个圈,这条路径其实就改变了,
(比如:原来是(2,2)->(2,3),绕一圈是(2,2)->(2,3)->(1,3)->(1,2)->(2,2)->(2,3))
因为经过两次的边就等于没走嘛,所以上面这个例子相当于把原路径的这个位置搞凸起来,
又因为题目只要可行解,而这一肯定会有可行解的,

之后我们一行一行做,这一行全部清空,再往下走,
因为我们不能影响到上面,所以要把第i行清空,就必须在i+1行绕圈子(当然这样也会影响到i+2行),
发现,这样是唯一的,只有第一行是没法确认的,其他都可计算出,
有一种暴力就是枚举第一行选哪些绕圈子,

结论:第一行一定不选,
证明:以最上面那个图为例,
如果我们绕(1,2)这个格子,就相当于绕(2,1),(3,2),(4,3),(3,4),(2,3)这5个格子,这是等价的,
其他情况也差不多,这个例子显然是可以推广的,

所以直接做即可

Code

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
#define min(q,w) ((q)>(w)?(w):(q))
#define max(q,w) ((q)<(w)?(w):(q))
using namespace std;
const int N=20;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int n,ans,x,y;
int a[N],b[N];
int er[20];
int s[N*N*N*N][2],s0;
void GOTO(int x,int y,int I,int J)
{
    fo(i,y,J-1)printf("R");
    fo(i,J,y-1)printf("L");
    fo(i,x,I-1)printf("D");
    fo(i,I,x-1)printf("U");
}
void GOTOb(int x,int y,int I,int J)
{
    fo(i,x,I-1)printf("D");
    fo(i,I,x-1)printf("U");
    fo(i,y,J-1)printf("R");
    fo(i,J,y-1)printf("L");
}
int main()
{
    freopen("turn.in","r",stdin);
    freopen("turn.out","w",stdout);
    int q,w,_;
    er[1]=1;fo(i,2,18)er[i]=er[i-1]<<1;
    read(_);
    while(_--)
    {
        read(n);
        fo(i,1,n)
        {
            a[i]=0;
            fo(j,1,n)if(read(q))a[i]+=er[j];
            b[i]=a[i];
        }
        read(x),read(y);
        bool OK=0;
        fo(I,1,n+1)if(!OK)fo(J,1,n+1)if(!OK)
        {
            fo(i,1,n)a[i]=b[i];
            fo(i,y,J-1)a[x-1]=a[x-1]^er[i],a[x]=a[x]^er[i];
            fo(i,J,y-1)a[x-1]=a[x-1]^er[i],a[x]=a[x]^er[i];
            fo(i,x,I-1)a[i]=a[i]^er[J]^er[J-1];
            fo(i,I,x-1)a[i]=a[i]^er[J]^er[J-1];
            s0=0;
            fo(i,1,n-1)
            {
                a[i]=a[i]&(er[n+1]-1);
                q=a[i];
                fo(j,1,n)if(q&er[j])s[++s0][0]=i+1,s[s0][1]=j;
                a[i]^=q;
                a[i+1]=a[i+1]^(q<<1)^(q>>1);
                a[i+2]^=q;
            }
            a[n]=a[n]&(er[n+1]-1);
            if(a[n]==0)
            {
                OK=1;
                s[0][0]=I,s[0][1]=J;
            }
        }
        if(OK)
        {
            fo(i,1,s0)
            {
                GOTO(x,y,s[i][0],s[i][1]);
                printf("RDLU");
                GOTOb(s[i][0],s[i][1],x,y);
            }
            GOTO(x,y,s[0][0],s[0][1]);
            printf("\n");
        }else printf("No Solution!\n");
    }
    return 0;
}
JZOJ 5485. 【清华集训2017模拟11.26】字符串 字符串DP 阅读详情

相关推荐

无监督学习初探:K-Means聚类与主成分分析(PCA)

K-Means适用于快速分组,但对数据分布敏感,可结合轮廓系数评估质量。PCA通过特征值分解实现线性降维,需注意非线性场景的替代方案(如UMAP)。进阶方向:聚类:谱聚类、高斯混合模型(GMM)处理复杂形状。降维:t-SNE、自编码器处理非线性结构。

weixin_69882801的博客 1453

[JZOJ5284] 超级翻转

Description 输出任意一种即可,题目有SPJSolution可以考虑先枚举终点。那么一条路径我们可以通过绕圈来修改它具体而言,从任意一个点,走到一个格子的左上角,绕着这个格子走一圈,再原路返回,这样相当于只将这个格子四个方向的格子取反对于起点到枚举的终点的路径,随便怎么走,都可以通过上面绕格子的方式修改成所有的路径那么枚举终点随便走了一条路径后,原问题转化成可以选择一些格子,将这个格

Never give in. 273

别再手动测接口了!用Pytest+Requests+Allure搭建你的第一个自动化框架(附完整源码)

本文详细介绍了如何使用Pytest+Requests+Allure搭建Python接口自动化测试框架,涵盖环境准备、核心组件封装、测试用例设计、报告生成及CI/CD集成等关键步骤。通过实战案例和完整源码,帮助开发者快速构建高效的接口自动化测试解决方案,提升测试效率和质量。

weixin_42546508的博客 320

【JZOJ5284】 超级翻转

超级翻转(File IO)input:turn.in output:turn.out Description Input Output Sample Input3 1 1 1 1 2 0 1 1 0 2 2 7 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

white_elephant的博客 372

Simulink单相桥式有源逆变电路仿真:从器件选型到波形分析(MATLAB 2018a实战)

本文基于MATLAB 2018a的Simulink平台,详细演示了单相桥式有源逆变电路的完整仿真流程。从Simscape/Power Systems库的器件选型、参数配置,到触发脉冲设置与电路连接,逐步指导搭建仿真模型。通过调整触发角α,直观展示了电路从整流到有源逆变的工作状态切换,并深入分析了负载电压、电流波形,以及逆变颠覆现象的产生条件与特征。

cake8的博客 1159

Clawdbot安装教程:从零开始到接入飞书

这几天,Clawdbot把整个科技圈都刷屏了。就是这个胖逼小龙虾🦞。不过现在改名叫Moltbot了。原因很简单:被Anthropic告了。Anthropic觉得Clawdbot这名字太像Claude Code的延伸产品,要求改名。真的,Anthropic你这家伙…更离谱的是,因为Clawdbot太火,Mac Mini都被抢断货了。无数人为了用它,疯狂买Mac Mini。我刚打开美团外卖,发现居然没货了???

Maynor的博客 2179

【jzoj4668】【腐败】【数论】【快速乘】

题目大意给出一个序列,求两两gcd的积。解题思路可以发现每个质数对答案贡献是独立的,分解质因数后发现数是无序的,排序后可以用前缀和求答案,排序可以用计数排序,快速幂可以放在分解质因数的循环里,还有模数较大,要用快速乘,类似快速幂。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorith

inklutcuah’s blog 490

企业微信开发007_域名主体校验未通过,需配置备案主体与当前企业主体相同或有关联关系的域名_企业内部自建应用开发_配置可信域名_回调URL_可信IP---企业微信开发009

因为我这个企业微信是,已经注册了服务商了,所以我又注册了一个不是服务商的测试企业,没有实名认证的,去试了试。而且,网络上找的教程,都是不够详细的,还是会碰到各种各样的问题,记录下来,为后来者提供便利。首先我用natapp.cn 申请了一个免费的域名,然后去,一个,企业微信上去配置,注意。我这个域名,的主体,可能是域名服务商,比如阿里域名 等等的 不是一般的企业域名。我这个企业微信,是开通了服务商的,企业微信,右上角有服务商管理后台的。到时候,直接用,他们自己企业注册的域名,已经备案的再去尝试,

添柴程序猿的专栏 1697

【JZOJ4807】破解

DescriptionSolution一看到这道题就想到了差分,那么就是把右端点+1。 然后就把一些无用的区间给除掉,比如说有一些区间首尾相接然后拼成的大区间已经出现过了,那么这个大区间就没有用了。 把这个转成图论的形式。 把l向r连边,然后有一个大小为size的联通块有用的边只有size-1,那么方案数就乘上2size−12^{size-1}。 这个用并查集来搞联通块就好了。 然后还要注

Facico的博客 868

【雷达成像】基于matlab SAR雷达成像仿真【含Matlab源码 3750期】

SAR雷达成像仿真 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1084

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

天天酷科研的博客 243

【JZOJ 5284】 超级翻转

Description 1<=n<=15,1<=数据组数<=5Analysis这种题,发现数据范围暴力过不了,就应该发掘一下移动的性质 显然一条边走的次数可以简化成0/1 一个格子的状态取决于其相邻四条边走的次数异或 这样可以对每个格子列出方程,不过并不知道这个idea可不可做 继续发掘 如果一个点四周被绕了一圈,那么造成的影响仅是这个格子四周的格子反色 并且,由于我们可以从起点走到一个点绕

LYD729 391

【Python基础】01 如何安装Python及集成环境

本文详细介绍了Python 3.13开发环境的完整搭建流程,涵盖三大操作系统(Windows/macOS/Linux)的Python安装方法、PyCharm专业IDE的配置使用,以及pip包管理工具的应用技巧。内容包括:Python 3.13各系统安装指南、PyCharm社区版与专业版的安装配置、环境验证方法、pip的基本命令与镜像源优化、虚拟环境管理,以及常见问题的解决方案。通过本教程,读者可获得一个高效完备的Python开发环境,为后续编程学习打下坚实基础。

nmdbbzcl的博客 1419

JZOJ 5496. 【清华集训2017模拟12.09】Tree

树形背包

Luckfort 447

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【JZOJ5295】【清华集训2017模拟】Create

DescriptionData ConstraintSolution这道题很经典。 我们发现一次操作最多使序列多出1段新的连续序列。所以我们考虑维护这个序列。我们将询问按x大小排序后建一棵主席树,那么对于一个修改(l,r,v),我们可以算出修改后(l,r)对答案的贡献。现在问题是怎样取消修改前的贡献。我们用线段树维护每一段连续的颜色的起点和终点。每一次修改暴力跳一下每个颜色段,查询他们原来的贡献。

dance in th dark的博客 532

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[JZOJ4331] 【清华集训模拟】树

题目 题目大意 给你一棵带点权的树,求将树变成一堆不相交的链,而且这些链的权值和非负的方案数。 正解 显然这道题是个DPDPDP。 首先求个前缀和sumsumsum。 为了后面讲述方便,我这样设:fi,jf_{i,j}fi,j​表示以iii为根的子树,其中某条链从xxx伸出到iii的方案数,而且sumx=jsum_x=jsumx​=j。 还有设gig_igi​表示以iii为根的,没有伸出去的链的...

A1847225889的博客 244

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【JZOJ5296】【清华集训2017模拟】Sequence

DescriptionData ConstraintSolution对于S和S’,我们可以用主席树很轻松的求出,但不能求出二关键字的k大。所以我们考虑整体二分。我们可以求出排名在[x,y]内的元素的范围[a,b]。对于一个范围[l,r]设满足排名k在该区间的询问[x,y],我们二分出mid,对于一个询问,若满足区间[l,r]内第一关键字在[a,b]且满足第二关键字小于mid的数量少于k,则答案一定在

dance in th dark的博客 444

【JZOJ 5276】【清华集训2017模拟】神奇的玩具

DescriptionSolution我说这题是暴力剪枝你信不信! 事实如此: 暴力快如闪电: 标准的暴力谁都会, 剪枝1:因为每个礼物只有两商店卖,所以一个不选,另一个就一定选了, 剪枝2:上面那个剪枝保证了每个礼物都会买到,那么每个礼物的代价一定是价格小的那个,这时一定的,如果代价小的不选,那么代价就一定会增加,这个可以用最优性剪枝Code#include <cstdio> #incl

554

【JZOJ 5295】【清华集训2017模拟】Create

DescriptionSolution题目有一个比较显然的性质:因为我们不停的把连续的一段变成一个数的话,那么全局不同的数会越来越少;换句话说,就是如果我们在区间修改时,对于一个数都相同的区间我们才能修改,这样均摊下来复杂度并不是很高,所以,现在的问题就变成了:如何快速求一段数相同的区间内对答案的贡献,设这个区间的值为c,那么只有v小于等于c的三元组才有可能有贡献, 而贡献为多少,则是这个区间被这

564

JZOJ5296.【清华集训2017模拟】Sequence

题意 数据范围 Analysis 首先考虑第二个条件如何解决,不可能直接把元素提取出来,考虑类似求区间第KKK小的方法,在主席树上根据给出的x,yx,yx,y来求,发现是一段连续的权值区间。那么再考虑第三个条件如何解决,不可能再在里面套数据结构,考虑整体二分解决。每次二分出一个值,然后,对于小于等于midmidmid的第二个元素,其权值设为111,然后通过排序和树状数组求出,每个询问...

XLno_name的博客 400

JZOJ5295. 【清华集训2017模拟】Create

题意 数据范围 Analysis 真是一道非常恶心的题目。。。。首先考虑没变化之前的答案怎么求?可以发现,每一个位置的AiAiA_i,只对xxx小于它的询问有贡献,而贡献不变。所以将询问按xxx排序,算答案,我们可以求出该位置被多少个询问覆盖,考虑对排序后的询问建立主席树,每次二分找到位置,然后区间查询即可得到答案。再考虑修改?每次修改一段区间,考虑修改多次以后,整个数组必定是由一段...

XLno_name的博客 325

[JZOJ4330] 【清华集训模拟】几何题

题目 题目大意 也懒得解释题目大意了…… 正解 正解居然是\(FFT\)? 不要看题目的那个式子这么长,也不要在那个式子上下手。 其实我们会发现,不同的\((x_i-x_j,y_i-y_j,z_i-z_j)\)并不多。 如果我们求出每个三元组的出现次数,后面的就好做了。 那怎么求呢? 祭出我们的大杀器——\(FFT\)。 考虑只有一个维怎么做。设两个多项式分别为\(A\)和\(B\)。...

weixin_30855099的博客 123

【JZOJ 5296】【清华集训2017模拟】Sequence

Solution发现,那个条件2其实没有用,可以用主席树预处理一下,转为数值在x,y之间, 那么这题就变成了求二维平面上的第k大, 这个用整体二分即可,复杂度:O(nlog(n)2)O(n\log(n)^2)Code#include <cstdio> #include <cstdlib> #include <algorithm> #define fo(i,a,b) for(int i=a;i<=

523

【JZOJ5317】【清华集训2017模拟8.19】func

DescriptionData ConstraintSolution根据性质我们可以发现,对于一个f(x),f(x-1),若x为奇数,那么f(x)=f(x/2+1)+f(x/2),f(x-1)=f(x/2),若x为偶数,那么f(x)=f(x/2),f(x-1)=f(x/2)+f(x/2-1)。而且转移出来的数仍相邻,这也意味着里面有一个奇数有一个偶数。因为就对奇数满足f(x)=f(x-1)+f(x+

dance in th dark的博客 502
上一篇: 【JZOJ 5282】【清华集训2017模拟】等差划分数
下一篇: 【JZOJ 5295】【清华集训2017模拟】Create
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值