hdu6062RXD and logic gates多校题 构造
听说标算的点数是2^(n+1)级别的,也不知道我是不是比标算优一点?
(话说这种题一眼看过去怎么跟题答一样)
然而并不是题答,没法手玩,来考虑一下一般解法:
考虑一个规模较小的问题:最后一位一定是0
不难发现变成了条件完全相同的一个子问题
再把最后一位加上
那么总共2^(n-1)个答案中的一部分会翻车,
若把会翻车的部分标记为1,不会翻车的标记为0,又得到一个完全相同的子问题(规模与上一个子问题一样)
那么原问题就可以表示为
(这一位的输入,两个子问题)进行一次操作
没了
考虑复杂度f(x)=2f(x-1)+O(2^x),f(x)=2^x,轻松过
点数应该也差不多是2^n?
#include <bits/stdc++.h>
#define I n+2
#define O n+3
using namespace std;
int n,N,E,sum;
int a[],b[],c[];
bool rule[],fir[];
void addedge(int x,int y,int z)
{
a[++E]=x;b[E]=y;c[E]=z;
}
void work(int st,int en,int len,int pos)
{
if(len==)
{
if((rule[st]&)&&(rule[en]&)) addedge(O,n,pos),fir[pos]=;
else
if(rule[st]&) addedge(I,n,pos),fir[pos]=;
else
if(rule[en]&) addedge(I,n,pos),fir[pos]=;
else
addedge(O,n,pos),fir[pos]=;
return;
}
int mid=st+en>>;
work(st,mid,len-,pos);
for(int i=;i<=mid-st;i++)
rule[mid++i]^=rule[st+i];
int POS=++N;
work(mid+,en,len-,POS);
addedge(POS,n-len+,pos);
for(int i=;i<=mid-st;i++)
rule[mid++i]^=rule[st+i];
}
int main()
{
while(~scanf("%d",&n))
{
N=n+;E=;
fir[I]=;fir[O]=;
for(int i=;i<=<<n;i++)
{
char ch;
for(ch=getchar();!isdigit(ch);ch=getchar());
for(sum=;isdigit(ch);ch=getchar())
sum=sum*+ch-'';
scanf("%d",&rule[sum]);
}
work(,(<<n)-,n,n+);
printf("%d\n",fir[n+]);
printf("%d\n",N-n-);
for(int i=n+;i<=N;i++)
printf("%d\n",fir[i]);
printf("%d\n",E);
for(int i=;i<=E;i++)
printf("%d %d %d\n",a[i],b[i],c[i]);
}
return ;
}
hdu6062RXD and logic gates多校题 构造的更多相关文章
- HDU 4671 Backup Plan (2013多校7 1006题 构造)
Backup Plan Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- luogu 3709 大爷的字符串题 构造 莫队 区间众数
题目链接 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区间中随机拿出一个字符\(x\),然后把\(x\)从这个区间中删除,你要维护一个集合S 如果\(S\)为空,你\(r ...
- UOJ #460. 新年的拯救计划 神仙题+构造
对于这个神仙题,我还能说什么~ 第一个答案=$n/2$ 还是比较好猜的. 对于构造这个树,大概就是先从 $1$ 号节点向 $n/2$ 距离以内都连一条边,再在第 $n/2$ 个节点进行这个操作,然后从 ...
- CodeForces 931C Laboratory Work 水题,构造
*这种题好像不用写题解... 题意: 一个人要改动别人的实验记录,实验记录记录是一个集合 实验记录本身满足:$max(X)-min(X)<=2$ 改动结果要求: 1.新的集合平均值和之前的一样 ...
- 集训第四周(高效算法设计)P题 (构造题)
Description There are N<tex2html_verbatim_mark> marbles, which are labeled 1, 2,..., N<te ...
- 集训第四周(高效算法设计)O题 (构造题)
A permutation on the integers from 1 to n is, simply put, a particular rearrangement of these intege ...
- Codeforces Round #342 (Div. 2) D. Finals in arithmetic(想法题/构造题)
传送门 Description Vitya is studying in the third grade. During the last math lesson all the pupils wro ...
- HDU4876ZCC loves cards(多校题)
ZCC loves cards Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tot ...
- Codeforces 1090D - Similar Arrays - [思维题][构造题][2018-2019 Russia Open High School Programming Contest Problem D]
题目链接:https://codeforces.com/contest/1090/problem/D Vasya had an array of n integers, each element of ...
随机推荐
- C语言中数据类型和变量
C语言中的数据类型 数据类型的本质,固定大小内存块的别名. 数组名代表数组首元素的地址. 数组首元素的地址,&代表整个数组的地址. 数组数据类型,怎么定义数据数组类型,定义数组类型指针,数组类 ...
- 博客和GitHup链接地址
硕哥博客链接:http://www.cnblogs.com/999-/p/6073601.html 硕哥GitHup链接:https://github.com/xiaodoufu
- AI-Info-Micron-Insight:Micron 美光的技术帮助 CERN 解开宇宙奥秘
ylbtech-AI-Info-Micron-Insight:Micron 美光的技术帮助 CERN 解开宇宙奥秘 1.返回顶部 1. Micron 美光的技术帮助 CERN 解开宇宙奥秘 大约 14 ...
- 微信公众平台:扫一扫demo
ylbtech-微信公众平台:扫一扫demo 1.返回顶部 1.Web.config <appSettings> <add key="appid" value=& ...
- python管理Windows服务
上一篇介绍了pywin32模块,它的win32service子模块提供了对服务管理API的包装,相关API如下: ChangeServiceConfig ChangeServiceConfig2 Cl ...
- DDD领域事件与事件总线源码下载
最近在看领域事件的文章.看到了“张占岭”的<DDD~领域事件与事件总线> 原文地址:http://www.cnblogs.com/lori/p/3476703.html 遗憾的是没有提供下 ...
- Tomcat的目录结构详解
转自:https://blog.csdn.net/u012661010/article/details/73381599
- iwork 文件格式分析
根据维基百科,到2015年苹果推出的iwork版本 第一章:iwork2008介绍 1.文档结构: 是一个资源合集:压缩格式的(内含文件夹和文件) 在windows下修改iwork的文件后缀为.rar ...
- C# 生成word 文档 代码 外加 IIS报错解决方案
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 51nod 1831 小C的游戏
小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人 ...