ZOJ Monthly, November 2012


A.ZOJ 3666 Alice and Bob

组合博弈,SG函数应用
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;const int maxn = 10000 + 100;
int SG[maxn];
vector<int> g[maxn];int mex(int u) { //minimal excludantif(SG[u]!=-1) return SG[u];int i;bool vis[maxn];memset(vis, 0, sizeof vis );for(i=0; i<g[u].size(); ++i) {vis[mex(g[u][i])] = true;}for(i=0; vis[i]; ++i);return SG[u] = i;
}int main() {int n, c, x, q, m;int cas= 1;while(~scanf("%d", &n)) {for(int i=0; i<=n; ++i) g[i].clear();for(int i=1; i<n; ++i) {scanf("%d", &c);while(c--) {scanf("%d", &x);g[i].push_back(x);}}memset(SG, -1, sizeof SG );printf("Case %d:\n", cas++);scanf("%d", &q);while(q--) {scanf("%d", &m);int ans = 0;while(m--) {scanf("%d", &x);ans ^= mex(x);}if(ans) puts("Alice");else puts("Bob");}}return 0;
}



C.ZOJ3668 Launching the Spacecraft
约束条件 :f[i]  表示前i块石头的能量总和。


f[R]-f[L-1]>=A  
f[R]-f[L-1]<=B
f[i]-f[i-1]<=10000
f[i]-f[i-1]>=-10000
关于为什么是字典序。

。。

在网上看到例如以下:
总结了一下。差分约束系统有两个解决方式:
1, 最短路模型。 全部的约束条件都是形如f(X)<=f(Y)+B。B正负不分。这样在有向图中addEdge(Y, X, B)这条边。这样依据最短路求解的性质我们能够得到X的最短路值满足了全部的f(X)<=f(Yi)+Bi,而且使得某个(某些)f(X)=f(Yk)+Bk。本来是f(X)<=f(Yk)+Bk的,如今都f(X)=f(Yk)+Bk了。因此利用最短路模型求出来的f值是最大值。
2。最长路模型。
全部的约束条件都是形如f(X)>=f(Y)+B,B正负不分。这样在有向图中addEdge(Y, X, B)这条边,这样依据最长路求解的性质我们能够得到X的最长路值满足了全部的f(X)>=f(Yi)+Bi。而且使得某个(某些)f(X)=f(Yk)+Bk。本来是f(X)>=f(Yk)+Bk的,如今仅仅是f(X)=f(Yk)+Bk了,因此利用最长路模型求出来的f值是最小值。


回归到本题,全部值求是最大值。sum[0]和sum[n]确定的,于是能够得到是字典序最大。


 

#include<bits/stdc++.h>
using namespace std;const int maxn = 1010;
const int maxm =  40000 + 100;
const int INF = 1e9;struct Edge{int to, next;int w;
}edge[maxm];
int head[maxn], tot;
void init()
{tot = 0;memset(head, -1, sizeof head );
}void addedge(int u, int v, int w){edge[tot].to = v;edge[tot].next = head[u];edge[tot].w = w;head[u] = tot++;
}bool vis[maxn];
int cnt[maxn];
int dist[maxn];bool spfa(int n)
{memset(vis, false, sizeof vis );for(int i=0; i<=n; ++i) dist[i] = INF;memset(cnt, 0, sizeof cnt );queue<int> q;q.push(0);vis[0] = true;cnt[0] = 1;dist[0] = 0;while(!q.empty()){int u = q.front();q.pop();vis[u] = false;for(int i=head[u]; i!=-1; i=edge[i].next){int v = edge[i].to;int w = edge[i].w;if(dist[v] > dist[u] + w){dist[v] = dist[u] + w;if(!vis[v]){vis[v] = true;q.push(v);if(++cnt[v] > n+1) return false;}}}}return true;
}int main()
{int n, m;while(~scanf("%d%d", &n, &m)){init();for(int i=1; i<=n; ++i){addedge(i-1, i, 10000);addedge(i, i-1, 10000);}int l, r, a, b;while(m--){scanf("%d%d%d%d", &l, &r, &a, &b);addedge(l-1, r, b);addedge(r, l-1, -a);}if(!spfa(n)){printf("The spacecraft is broken!\n");continue;}for(int i=1; i<=n; ++i){printf("%d", dist[i]-dist[i-1]);if(i<n) printf(" ");else printf("\n");}}return 0;
}



D.ZOJ 3669 Japanese Mahjong I

简单粗暴 点击打开链接



F.ZOJ 3671 Japanese Mahjong III
简单模拟
#include<bits/stdc++.h>
using namespace std;
const int maxn = 9;
int z[maxn+10], s[maxn+10], p[maxn+10], m[maxn+10];
char str[100];
bool seven()
{int cnt = 0;for(int i=1; i<=9; ++i){if(z[i]==2) cnt++;if(s[i]==2) cnt++;if(p[i]==2) cnt++;if(m[i]==2) cnt++;}return cnt==7;
}
bool thirteen()
{int cnt = m[1] + m[9] + p[1] + p[9] + s[1] + s[9] + z[1] + z[2] + z[3] + z[4] + z[5]+ z[6] + z[7];if(m[1]>=1&&m[9]>=1&&p[1]>=1&&p[9]>=1&&s[1]>=1&&s[9]>=1&&z[1]>=1&&z[2]>=1&&z[3]>=1&&z[4]>=1&&z[5]>=1&&z[6]>=1&&z[7]>=1){return cnt == 14;}return 0;
}
int main()
{while(~scanf("%s", str)) {int n = strlen(str);memset(z, 0, sizeof z );memset(s, 0, sizeof s );memset(p, 0, sizeof p );memset(m, 0, sizeof m );for(int i=0; i<n; i+=2) {int num = str[i] - '0';if(str[i+1]=='z')z[num]++;else if(str[i+1]=='s')s[num]++;else if(str[i+1]=='m')m[num]++;else if(str[i+1]=='p')p[num]++;}if(seven()) {printf("Seven Pairs\n");} else if(thirteen()) {printf("Thirteen Orphans\n");} else printf("Neither!\n");}return 0;
}



G.ZOJ 3672 Gao The Sequence
1、每一次操作,总共减去2个delta,是个偶数。所以最后的增量和一定是偶数。
2、假设存在2*(a[i]-b[i])>sum,也是不行的。由于这样的情况下。a数组要减去2*(a[i]-b[i]),当中a[i]要减去(a[i]-b[i]),其它数也要减去和为(a[i]-b[i])的量。但明显增量不足,所以不行

#include<bits/stdc++.h>
using namespace std;typedef long long LL;int main () {int n;while (~scanf("%d",&n)) {LL maxx = 0, sum = 0;for (int i=1; i<=n; i++) {LL a,b;scanf("%I64d%I64d",&a, &b);maxx=max(maxx,a-b);sum+=a-b;}cout<<sum<<" "<<maxx<<endl;if ((sum%2==1) ||maxx*2>sum) printf("NO\n");else printf("YES\n");}return 0;
}


H.ZOJ 3673  1729



I.ZOJ 3674 Search in the Wiki
STL应用set、map
#include<bits/stdc++.h>
using namespace std;const int maxn = 100 + 10;set<string> S[maxn];
map<string,int> M;char buf[1001], str[1001];
vector<int> vc;
int n, m;int main() {while(~scanf("%d", &n)) {M.clear();string ss;for(int i=0; i<n; ++i) {S[i].clear();cin>>ss;M[ss] = i;getchar();gets(buf);char *p = strtok(buf," ");while(p) {sscanf(p, "%s", str );S[i].insert(string(str));p = strtok(NULL, " ");}}scanf("%d", &m);getchar();while(m--) {vc.clear();gets(buf);char *p = strtok(buf, " ");while(p) {sscanf(p, "%s", str );vc.push_back( M[string(str)] );p = strtok(NULL, " ");}vector<string> ans;for(set<string>::iterator it = S[vc[0]].begin(); it!=S[vc[0]].end(); ++it) {string tmp = *it;bool found = true;for(int i=1; i<vc.size(); ++i) {if(S[vc[i]].find(tmp) == S[vc[i]].end()) {found = false;break;}}if(found) ans.push_back(tmp);}sort(ans.begin(), ans.end());if(ans.size()==0) puts("NO");else {for(int i=0; i<ans.size(); ++i) {cout<<ans[i];if(i<ans.size()-1) cout<<" ";else cout<<endl;}}}}return 0;
}



J.ZOJ 3675 Trim the Nails
bfs:每次用没实用过的方式去剪指甲,直到结果为0,即指甲剪光了就结束

状态压缩DP:  状态:dp[1<<M-1],结果是dp[0]。状态转移即 枚举指甲剪剪的位置和顺序。然后产生新状态。

#include<bits/stdc++.h>using namespace std;
const int INF = 1e9;int dp[1<<21];int main() {int n, m;char s[20];while(~scanf("%d", &n)) {scanf("%s", s);scanf("%d", &m);int clr = 0, rclr = 0;for(int i=0; i<n; ++i) {clr = (clr<<1) + (s[i]=='*');rclr = (rclr<<1) + (s[n-i-1]=='*');}for(int i=0; i<=(1<<m); ++i) dp[i] = INF;dp[(1<<m)-1] = 0;for(int i=(1<<m)-1; i>=0; --i)if(dp[i]!=INF) {for(int j=0; j<m; ++j) {dp[i& (~(clr<<j))] = min(dp[i&(~(clr<<j))], dp[i] + 1);dp[i& (~(rclr<<j))] = min(dp[i&(~(rclr<<j))], dp[i]+1);dp[i& (~(clr>>j))] = min(dp[i&(~(clr>>j))], dp[i] + 1);dp[i& (~(rclr>>j))] = min(dp[i&(~(rclr>>j))], dp[i]+1);}}if(dp[0]!=INF) {printf("%d\n", dp[0]);} else printf("-1\n");}return 0;
}


转载于:https://www.cnblogs.com/cxchanpin/p/6917374.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Aspect和Spring Profile进行电子邮件过滤

在Web应用程序开发期间&#xff0c;经常需要发送电子邮件。 但是&#xff0c;有时数据库中会包含来自生产的数据&#xff0c;并且存在在电子邮件测试执行期间向真实客户发送电子邮件的风险。 这篇文章将解释如何避免在没有在发送电子邮件功能中明确编写代码的情况下避免这种情…

红旗linux 进不去图形界面,进不了红旗Linux6.0的图形界面请高手帮忙

习生 于 2008-11-02 11:08:42发表:引用:原帖由 zhaoruiqi 于 2008-11-2 10:03 发表 我的也是进不了图形界面&#xff0c;用文本安装后进系统也一样正常按rtl的方法对xorg.conf进行修改,已经能进入图形界面。你看看楼上rtl的回复的能否对你有帮助。zhaoruiqi 于 2008-11-02 10:0…

总结继承的几种方式

简单总结继承的几种方式 JavaScript作为一门弱类型的语言&#xff0c;本着精简的原则&#xff0c;它取消了类的概念&#xff0c;只有对象的概念&#xff0c; 更是有万物皆对象的说法。在基于类的面向对象方式中&#xff0c;对象&#xff08;object&#xff09;依靠类&#xff0…

Oracle SQL精妙SQL语句讲解(二)

- 如果存在就更新&#xff0c;不存在就插入用一个语句实现 DROP TABLE t_mg; CREATE TABLE t_mg(code VARCHAR2(10), NAME VARCHAR2(10)); SELECT * FROM t_mg; MERGE INTO t_mg a USING (SELECT the code code, the name NAME FROM dual) b ON (a.code b.code) WHEN M…

Spring Security –在一个应用程序中有两个安全领域

这篇博客文章主要是关于Spring Security配置的。 更具体地说&#xff0c;它打算显示如何在一个Web应用程序中配置两个不同的安全领域。 第一安全领域是针对浏览器客户端的。 它使我们能够在登录页面中登录并访问受保护的资源。 第二安全领域旨在处理来自android应用程序的REST…

基于Activiti工作流引擎实现的请假审核流程

概要 本文档介绍的是某商用中集成的Activiti工作流的部署及使用&#xff0c;该框架用的Activiti版本为5.19.0。本文档中主要以一个请假流程为例子进行说明&#xff0c;该例子的流程图如下&#xff1a; 这是一个可以正常运作的工作流业务了&#xff0c;但是它也有不足的地方&…

linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件

1.下载ffmpeg源码,官网&#xff0c;我这里直接采用git 方式下载&#xff1a;下载ffmpeg.png终端输入git命令&#xff1a;静静等待~最后下载的版本为3.4.6 。image.png这里注意一下&#xff0c;刚开始我用的ndk版本是ndk-17b&#xff0c;在编译该版本的ffmpeg时始终失败&#xf…

4Web Service中的几个重要术语

4.1WSDL: web service definition language 直译:Webservice定义语言 1.对应一种类型的文件.wsdl 2.定义了webservice的服务端与客户端应用交互传递请求和响应数据的格式和方式 3.一个webservice对应一个唯一的esdl文档 4.2SOAP: simple object access protocal 直译:简单对象访…

云端:亚马逊,谷歌应用引擎,Windows Azure,Heroku,Jelastic

您想在云端吗&#xff1f; 您有很多选择。 我已经评估或使用了许多方法&#xff0c;因此这里有几句话。 &#xff08;当我使用Java时&#xff0c;我将包括一些与Java相关的注释&#xff0c;但大多数情况适用于所有&#xff08;受支持的&#xff09;语言。&#xff09; 但是在深…

JS-字符串操作-替换

<!DOCTYPE HTML><html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>无标题文档</title><style>p { border:10px solid #ccc; background:#FFC; width:400px; padding:20px;…

linux下kegg注释软件,KEGG数据中全部代谢反应和代谢物注释信息的下载

# 加载函数与R包 -----------------------------------------------------------------library(KEGGREST)library(plyr)source("./RbioRXN-master/RbioRXN-master/R/get.kegg.all.R")source("./RbioRXN-master/RbioRXN-master/R/get.kegg.byId.R")## KEGG数…

java常见异常

算术异常类&#xff1a;ArithmeticExecption空指针异常类&#xff1a;NullPointerException 类型强制转换异常&#xff1a;ClassCastException 数组负下标异常&#xff1a;NegativeArrayException 数组下标越界异常&#xff1a;ArrayIndexOutOfBoundsException 违背安全原则异常…

Spring Security 3 Ajax登录–访问受保护的资源

我看过一些有关Spring Security 3 Ajax登录的博客&#xff0c;但是我找不到解决如何调用基于Ajax的登录的博客&#xff0c;匿名用户正在Ajax中访问受保护的资源。 问题 – Web应用程序允许匿名访问某些部分&#xff0c;并且某些部分是受保护的资源&#xff0c;需要用户登录。 …

测试环境下将centos6.8升级到centos7的操作记录(转)

在测试环境下安装openstack&#xff0c;由于在centos6下安装openstack&#xff0c;针对源的问题有很多&#xff0c;安装起来很不顺利&#xff01; 但是在centos7下安装却很顺利&#xff0c;所以考虑将服务器由centos6升级到centos7 这个我是在测试机中运行的&#xff0c;建议不…

linux运维选择题,初学Linux练习题

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中tr ‘a-z’ ‘A-Z’ < /etc/issue > /tmp/issue.out2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中3、一个linux用户给root发邮件&#xff0c;要求邮件标题为”help”&#xff0c…

[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

本文转自&#xff1a;http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了&#xff0c;之前有很多事情&#xff0c;所以拖了很久&#xff0c;非常抱歉。好了&#xff0c;废话不多说&#xff0c;下面开始正题。本篇仍然使用上一季的的项目背景&#xff08;系列地址…

使用Spring 3 MVC处理表单

本文是有关Spring 3的一系列文章的一部分。该系列的上一篇文章可以在此处获得 。 在本文中&#xff0c;我们向Spring MVC迈出了又一步。 [此外&#xff1a; 术语MVC的创建者提供的pdf 。]从上一篇文章构建&#xff0c;让我们添加将“联系人”添加到应用程序所需的代码。 首先&a…

插入排序法之——直接插入排序、折半插入排序、希尔排序

// test20.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> #include<vector> #include<string> #include<queue> #include<stack> #include<cstring> #include<string.h> #include<de…

linux idea 快捷键,Linux 下 IDEA 的 Ctrl+Alt+S

前言这是个困扰我一年多的问题&#xff0c;今天终于解决了……起因一年前将主系统换成 Arch Linux 后&#xff0c;其他一切正常就是 IDEA 的打开设置的快捷键 ctrlalts 失效&#xff0c;让我很是头疼。虽然不是很重要&#xff0c;但是对于我这种强迫症来说别提多难受了……我曾…

修改input的placeholder颜色

1、CSS选择器 因为每个浏览器的CSS选择器有所差异&#xff0c;所以需要针对每个浏览器做单独的设定。 ::-webkit-input-placeholder { /* WebKit browsers */ color: #999; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #999; } ::-moz-placeholder { /* Mozil…