Jzoj 3888 正確答案

2021-09-29 13:09:42 字數 1431 閱讀 3847

小h與小y剛剛參加完uoip外卡組的初賽,就迫不及待的跑出考場對答案。

「吔,我的答案和你都不一樣!」,小y說道,」我們去找神犇們問答案吧」。

外卡組試卷中共有m道判斷題,小h與小y一共從其他n個神犇那問了答案。之後又從小g那裡得知,這n個神犇中有p個考了滿分,q個考了零分,其他神犇不為滿分或零分。這可讓小y與小h犯了難。你能幫助他們還原出標準答案嗎?如有多解則輸出字典序最小的那個。無解輸出-1。

首先用map

mapma

p記錄每乙個字串出現的次數f1f1

f1,然後把每乙個字串取反也記錄一下出現次數f2f2

f2並排序。

分幾種情況:

1、當p≠0

p\neq0

p​=

0時,比較一下就可以了。

2、如果p=0

,q=0

p=0,q=0

p=0,q=

0,搜出第乙個沒有出現且取反後沒有出現的字串,即第乙個f1[

s]=0

f1[s]=0

f1[s]=

0且f2[s

]=

0f2[s]=0

f2[s]=

0的ss

s。因為要求字典序最小。

3、如果p=0

,q≠0

p=0,q\neq0

p=0,q

​=0,那麼就列舉每乙個s

ss,如果f2[

s]=0

f2[s]=0

f2[s]=

0,那麼就將s

ss取反輸出即可。

#include

#define n 30005

using

namespace std;

int n,m,p,q;

string s[n]

,s0;

mapint> f1,f2;

bool flag;

void

dfs(

int x,string ss)

dfs(x+

1,ss+

'n');if

(flag)

return

;dfs

(x+1

,ss+

'y');}

intmain()

sort

(s+1

,s+1

+n);if(

!p&&

!q)if

(!p)

printf

("-1");

return0;

}for

(int i=

1;i<=n;i++)if

(f1[s[i]

]==p&&f2[s[i]

]==q)

printf

("-1");

}

JZOJ 3888 正確答案 模擬

傳送門 給出n nn個答案,已知其中有p pp個是全對的,q qq個是全錯的,其他的既不是全對也不是全錯 問標準答案是什麼,輸出字典序較小的那乙個 我們用列舉標準答案是多少來求解,用map mapma p或雜湊來判斷全對和全錯時的正確答案是不是這乙個,若是,則當前答案就是我們的結果 有一種特殊情況就...

考前模擬 正確答案

1.正確答案 題目描述 小h與小y剛剛參加完uoip外卡組的初賽,就迫不及待的跑出考場對答案。吔,我的答案和你都不一樣!小y說道,我們去找神犇們問答案吧 外卡組試卷中共有m道判斷題,小h與小y一共從其他n個神犇那問了答案。之後又從小g那裡得知,這n個神犇中有p個考了滿分,q個考了零分,其他神犇不為滿...

暴力 二分答案 JZOJ 蛋糕

有乙個n m n mn m的蛋糕 有數字 橫著切三刀在豎著切三刀分成16份使最小的最大。首先 最小的最大 確定了這題可以二分答案 這題我們先暴枚豎切三刀,再二分判定 include include include using namespace std int n,m,rr,ans,l,r int ...