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 ...
随机推荐
- Python中出现“TabError: inconsistent use of tabs and spaces in indentation”问题的解决
- ios审核过程十大常见被拒问题
欢迎加入ios马甲包经验交流群,群聊号码:744520623 2018年伊始,苹果并没有因为新年的气氛而对CP们“网开一面”.频繁锁榜.调整排名规则以及关键词覆盖算法……不断抛出的大动作,让CP们叫苦 ...
- centos7在VMware下配置网络连接
安装成功以后,首先更改vmwar的虚拟网络设置 1.参考连接:http://www.cnblogs.com/liongis/p/3265458.html 2.然后将虚拟机的设置里面将网络配置的连接方式 ...
- CSS实现简单无缝滚动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Qt之log数据展示模块简要实现
Log模块主要用于实时测井数据的显示和测后曲线数据的预览和打印,为更好的展示对Qt中相关知识点的应用,特以Log模块为例对其进行简要实现. 内容导图: 一.功能需求 1.界面效果图 Log模块实现曲线 ...
- BZOJ4088: [Sdoi2015]立体图
高一联赛之后不久写的.当时看到这题就感觉特别优美.那个时候啥都不会,就只会这种模拟题,还只会最暴力的方法.对于每个方向的灯,枚举每个位置,手动枚举所有遮挡效果,并在枚举位置过程中传递遮挡效果. con ...
- Mysql误删了root用户怎么办
1.停止mysql服务:在mysql安装目录下找到my.ini:在my.ini中找到以下片段[mysqld]:另起一行加入代码:skip-grant-tables 并保存 2.启动mysql服务,并登 ...
- P1417烹调方案——背包问题中的排序
题目:https://www.luogu.org/problemnew/show/P1417 与普通的01背包不同的一点是加入物品的顺序对结果有影响,这里可以考虑贪心的想法,把对全局影响最小的物品排在 ...
- MSTAR 平台
MApp_Menu.c ZUI_exefunc.h //菜单属性 MApp_ZUI_APItables.h #define GETWNDINFO(hwnd) (&g_GUI_WindowLis ...
- SpringMVC之三:配置Spring MVC Controller
一.Controller配置方式 第一种 URL对应Bean如果要使用此类配置方式,需要在XML中做如下样式配置 以上配置,访问/hello.do就会寻找ID为/hello.do的Bean,此类方式仅 ...