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