听说标算的点数是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多校题 构造的更多相关文章

  1. HDU 4671 Backup Plan (2013多校7 1006题 构造)

    Backup Plan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  2. luogu 3709 大爷的字符串题 构造 莫队 区间众数

    题目链接 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区间中随机拿出一个字符\(x\),然后把\(x\)从这个区间中删除,你要维护一个集合S 如果\(S\)为空,你\(r ...

  3. UOJ #460. 新年的拯救计划 神仙题+构造

    对于这个神仙题,我还能说什么~ 第一个答案=$n/2$ 还是比较好猜的. 对于构造这个树,大概就是先从 $1$ 号节点向 $n/2$ 距离以内都连一条边,再在第 $n/2$ 个节点进行这个操作,然后从 ...

  4. CodeForces 931C Laboratory Work 水题,构造

    *这种题好像不用写题解... 题意: 一个人要改动别人的实验记录,实验记录记录是一个集合 实验记录本身满足:$max(X)-min(X)<=2$ 改动结果要求: 1.新的集合平均值和之前的一样 ...

  5. 集训第四周(高效算法设计)P题 (构造题)

    Description   There are N<tex2html_verbatim_mark> marbles, which are labeled 1, 2,..., N<te ...

  6. 集训第四周(高效算法设计)O题 (构造题)

    A permutation on the integers from 1 to n is, simply put, a particular rearrangement of these intege ...

  7. 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 ...

  8. HDU4876ZCC loves cards(多校题)

    ZCC loves cards Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tot ...

  9. 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 ...

随机推荐

  1. Python中出现“TabError: inconsistent use of tabs and spaces in indentation”问题的解决

  2. ios审核过程十大常见被拒问题

    欢迎加入ios马甲包经验交流群,群聊号码:744520623 2018年伊始,苹果并没有因为新年的气氛而对CP们“网开一面”.频繁锁榜.调整排名规则以及关键词覆盖算法……不断抛出的大动作,让CP们叫苦 ...

  3. centos7在VMware下配置网络连接

    安装成功以后,首先更改vmwar的虚拟网络设置 1.参考连接:http://www.cnblogs.com/liongis/p/3265458.html 2.然后将虚拟机的设置里面将网络配置的连接方式 ...

  4. CSS实现简单无缝滚动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Qt之log数据展示模块简要实现

    Log模块主要用于实时测井数据的显示和测后曲线数据的预览和打印,为更好的展示对Qt中相关知识点的应用,特以Log模块为例对其进行简要实现. 内容导图: 一.功能需求 1.界面效果图 Log模块实现曲线 ...

  6. BZOJ4088: [Sdoi2015]立体图

    高一联赛之后不久写的.当时看到这题就感觉特别优美.那个时候啥都不会,就只会这种模拟题,还只会最暴力的方法.对于每个方向的灯,枚举每个位置,手动枚举所有遮挡效果,并在枚举位置过程中传递遮挡效果. con ...

  7. Mysql误删了root用户怎么办

    1.停止mysql服务:在mysql安装目录下找到my.ini:在my.ini中找到以下片段[mysqld]:另起一行加入代码:skip-grant-tables 并保存 2.启动mysql服务,并登 ...

  8. P1417烹调方案——背包问题中的排序

    题目:https://www.luogu.org/problemnew/show/P1417 与普通的01背包不同的一点是加入物品的顺序对结果有影响,这里可以考虑贪心的想法,把对全局影响最小的物品排在 ...

  9. MSTAR 平台

    MApp_Menu.c ZUI_exefunc.h //菜单属性 MApp_ZUI_APItables.h #define GETWNDINFO(hwnd) (&g_GUI_WindowLis ...

  10. SpringMVC之三:配置Spring MVC Controller

    一.Controller配置方式 第一种 URL对应Bean如果要使用此类配置方式,需要在XML中做如下样式配置 以上配置,访问/hello.do就会寻找ID为/hello.do的Bean,此类方式仅 ...