当前位置: 首页 > news >正文

怎么做私服发布网站/怎么做个人网页

怎么做私服发布网站,怎么做个人网页,最新的疫情数据图片,赣州做网站优化Abstract HDU 4413 Logical Expression 乱搞 卡诺图 Body Source http://acm.hdu.edu.cn/showproblem.php?pid4413 Description 给定N变量的所有2^N最小项,求一个符合所有最小项的最优美(长度最短的情况下字典序最小)的与或式。 Solution 天…

Abstract

HDU 4413 Logical Expression

乱搞 卡诺图

 

Body

Source

http://acm.hdu.edu.cn/showproblem.php?pid=4413

Description

给定N变量的所有2^N最小项,求一个符合所有最小项的最优美(长度最短的情况下字典序最小)的与或式。

Solution

天王还是太自信了……唉……

思路其实很简单。

复习一下卡诺图吧,考虑在卡诺图上圈一些圈,这些圈(可以重叠)覆盖且仅覆盖了所有为1的最小项,表达式就是这些圈项的或。

考虑卡诺图上的某个1,则所有覆盖这个1的非极大圈都不可能是最终答案的项,反证如下:假设某个覆盖这个1的非极大圈是最终答案的项,由于圈非极大,那么它一定属于某个极大圈,显然极大圈化简出的项长度比非极大圈要小。

于是所有可能的属于最终答案的项就是卡诺图上的所有极大圈。天王的错误就在于他只求出覆盖了每个1的最大(在所有极大圈中最优美)圈,这就相当于贪心,肯定是不对的(有可能某个非最大拼上其它的会更优)。这个地方不是很容易想明白,我也是试了一些数据才知道。

所以我们就对每个1求覆盖它的所有极大圈,得到一个极大圈集合(注意unique一下)。注意每个极大圈的表达式长度一定,所以先对每个极大圈求最优表达式(sort每个与项,比较函数是str1+str2<str2+str1)。然后就是用这些极大圈求最优覆盖,这个好像没什么好方法,只能搜。对极大圈集合排序一下可以加快搜索速度。

Code

代码是在天王那个wa的代码基础上改的,所以挺难看的……

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;typedef pair<string, int> node;
vector<node> ans;
bool vis[50];
int V[50];bool cmp(string s1,string s2){return s1+s2<s2+s1;
}
bool cmp2(string s1,string s2){return s1+"+"+s2<s2+"+"+s1;
}
bool hmr(node a, node b) {if (a.second==b.second) {if (a.first.length()==b.first.length()) return a.first<b.first;return a.first.length()<b.first.length();}return a.second<b.second;
}bool operator==(node a, node b) {return a.first==b.first && a.second==b.second;
}string StInS(int s,int n,int ors){int i;vector<string> tmpAns;for (i=0;i<(1<<n);i++){if ((i&s)==(ors&s))if (V[i]==0) return "";}if (s==0) return "1";string tmp;for (i=0;i<n;i++) if (s&(1<<i)){tmp="";if (!(ors&(1<<i)))tmp+='-';tmp+=(char)(i+'A');tmpAns.push_back(tmp);}sort(tmpAns.begin(),tmpAns.end(),cmp);tmp="";for (i=0;i<tmpAns.size();i++)tmp+=tmpAns[i];return tmp;
}void getans(int s, int n) {int i,j;int minsize = 0x3fff;vector<node> tmp;for (i=0;i<(1<<n);i++) {int ctrl=__builtin_popcount(i);if (ctrl>minsize) continue;string tans2=StInS(i,n,s);if (tans2.empty()) continue;if (ctrl<minsize) {minsize = ctrl;tmp.clear();}int res = 0;for (j = 0; j < 1<<n; ++j)if ((j&i)==(s&i)) res |= 1<<j;tmp.push_back(make_pair(tans2, res));}for (i = 0; i < tmp.size(); ++i)ans.push_back(tmp[i]);
}int N, M;
int all;
int best;
bool use[64], ause[64];void dfs(int i, int len, int cover) {if (len >= best) return;if (cover==all) {memcpy(ause, use, sizeof(use));best = len;return;}if (i==M) return;use[i] = 1;dfs(i+1, len+ans[i].first.length()+1, cover|ans[i].second);use[i] = 0;dfs(i+1, len, cover);
}int main(){int i,s,j,v;int cas=0;for (;;){scanf("%d",&N);if (N==0) break;for (i=0;i<(1<<N);i++){s=0;vis[i] = 0;for (j=0;j<N;j++){scanf("%d",&v);s^=(v<<j);}scanf("%d",&V[s]);}ans.clear();memset(vis, 0, sizeof vis);all = 0;for (s = 0; s < 1<<N; ++s)if (V[s]){all |= 1<<s;getans(s, N);}if (ans.size()==0) {puts("-AA");continue;}if (ans[0].first[0]=='1') {puts("-A+A");continue;}sort(ans.begin(), ans.end(), hmr);M = unique(ans.begin(), ans.end())-ans.begin();sort(ans.begin(), ans.begin()+M);best = 0x3fffffff;memset(use, 0, sizeof use);memset(ause, 0, sizeof ause);dfs(0, 0, 0);vector<string> astr;for (i = 0; i < M; ++i)if (ause[i]) astr.push_back(ans[i].first);sort(astr.begin(), astr.end(), cmp2);string fin = astr[0];for (i = 1; i < astr.size(); ++i)fin += "+"+astr[i];cout << fin << '\n';}return 0;
}

转载于:https://www.cnblogs.com/jffifa/archive/2012/09/23/2699253.html

http://www.jmfq.cn/news/4796461.html

相关文章:

  • 网站设计维护合同/免费seo视频教程
  • 网站设置手机才能播放/手机网站制作教程
  • 企业网络推广运营技巧/seo静态页源码
  • 做网站赚钱嘛/网络营销做得好的品牌
  • 中国建设承包商网站/百度推广官网首页
  • 修改网站照片需要怎么做/seo顾问服务 乐云践新专家
  • 建工网校官网app/龙岗seo网络推广
  • 提供免费建网站的网/百度广告联盟平台官网
  • 烟台网站title优化/个人网站制作软件
  • 北京装饰公司电话/免费的seo教程
  • 如何建设新闻网站/泰安做网站公司
  • 开发公司未售的空置房物业费/seo收费
  • 帝国做的网站打开速度/东莞网络优化公司
  • 微网站怎么做的好处/电商网
  • 织梦网站被攻击/网络营销以什么为中心
  • 做软件网站/百度快照入口
  • 槐荫区网站建设/百度指数移动版app
  • 顺德网站建设教程/seo咨询师招聘
  • 哪家网站建设服务好/百度竞价推广代理
  • 做内衣的网站/网站优化排名怎么做
  • 网页设计 网站/郑州千锋教育培训机构怎么样
  • 上海高端网站建设定制/网站收录怎么做
  • 哪个网站做攻略比较好/seo 优化 工具
  • asp与php做网站哪个好/网站制作流程图
  • 舟山网站建设设计/杭州百度seo
  • wordpress 域名分离/关键词优化公司哪家好
  • 做网页的素材网站/查询域名网站
  • 网站建设推荐公司/sem和seo
  • 找外包做网站要多久/老哥们给个关键词
  • 昆明seocn整站优化/青岛网站建设培训学校