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.pswp.cn/news/372073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372073.shtml
英文地址,請注明出處:http://en.pswp.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…