F.A.Qs Home ProblemSet Status Ranklist Contest LoginRegister
Notice:祝各位Oier新年快乐,Rp++!
大视野在线测评-欢迎您
[ New Thread ]
Problem 1000 >> 我女装学搜索又TLE又WA又RE ,谁能帮我看看
jloi_yyc @ 2018-01-17 11:20:25
[ Quote ] [ Edit ] [ Delete ] 1#
#include <set>
#include <map>
#include <queue>
#include <ctime>
#include <cmath>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <bitset>
#include <cstring>
#include <cstdlib>
#include <utility>
#include <iostream>
#include <algorithm>
#define lowbit(x) (x)&(-x)
#define REP(i,a,b) for(int i=(a);i<=(b);i++)
#define PER(i,a,b) for(int i=(a);i>=(b);i--)
#define RVC(i,S) for(int i=0;i<(S).size();i++)
#define RAL(i,u) for(int i=fr[u];i!=-1;i=e[i].next)
using namespace std;
typedef long long LL;
typedef pair<int,int> pii;

template<class T> inline
void read(T& num) {
bool start=false,neg=false;
char c;
num=0;
while((c=getchar())!=EOF) {
if(c=='-') start=neg=true;
else if(c>='0' && c<='9') {
start=true;
num=num*10+c-'0';
} else if(start) break;
}
if(neg) num=-num;
}
/*============ Header Template ============*/

const int maxn=20;
int cnt[maxn];
int res;
void dfs(int x) {
if(x>=res) return;
int temp=x;
int s1,s2,s3,t1,t2,t3; //3种顺子的首尾
s1=s2=s3=t1=t2=t3=3;
REP(i,3,15) {
if(cnt[i]) {
t1=i; //单顺子
if(t1-s1>=4 && i<15) REP(j,s1,t1-4) {
REP(k,j,t1) cnt[k]--;
dfs(x+1);
REP(k,j,t1) cnt[k]++;
}
} else s1=i+1;
if(cnt[i]>=2) {
t2=i; //双顺子
if(t2-s2>=2 && i<15) REP(j,s2,t2-2) {
REP(k,j,t2) cnt[k]-=2;
dfs(x+1);
REP(k,j,t2) cnt[k]+=2;
}
} else s2=i+1;

if(cnt[i]>=3) {
t3=i; //三顺子
if(t3-s3>=1 && i<15) REP(j,s3,t3-1) {
REP(k,j,t3) cnt[k]-=3;
dfs(x+1);
REP(k,j,t3) cnt[k]+=3;
}
cnt[i]-=3;
REP(j,3,17) if(i!=j && cnt[j]>=1) { //三带一
cnt[j]--;
dfs(x+1);
cnt[j]++;
}
REP(j,3,15) if(i!=j && cnt[j]>=2) { //三带二
cnt[j]-=2;
dfs(x+1);
cnt[j]+=2;
}
cnt[i]+=3;
} else s3=i+1;
if(cnt[i]>=4) {
cnt[i]-=4;
REP(j,3,17) if(i!=j && cnt[j]>=1) //四带二(单)
REP(k,3,17) if(i!=k && cnt[k]>=1) {
cnt[j]--;cnt[k]--;
dfs(x+1);
cnt[j]++;cnt[k]++;
}
REP(j,3,15) if(i!=j && cnt[j]>=2) //四带二(对)
REP(k,3,15) if(i!=k && cnt[k]>=2) {
cnt[j]-=2;cnt[k]-=2;
dfs(x+1);
cnt[j]+=2;cnt[k]+=2;
}
cnt[i]+=4;
}
}
if(cnt[16] && cnt[17]) { //火箭特判
cnt[16]--;cnt[17]--;
dfs(x+1);
cnt[16]++;cnt[17]++;
}
REP(i,3,17) if(cnt[i]) temp++;
res=min(res,temp);
}

int main() {
int T,n;
read(T);
read(n);
while(T--) {
memset(cnt,0,sizeof(cnt));
res=14;
int a,b;
REP(i,1,n) {
read(a);
read(b);
if(a==0) cnt[15+b]++;
else if(a<=2) cnt[a+13]++;
else cnt[a]++;
}
dfs(0);
printf("%d\n",res);
}
return 0;
}
YuhangQ @ 2018-01-17 11:22:21
[ Quote ] [ Edit ] [ Delete ] 2#
沙发
lkhlkh @ 2018-01-17 11:22:56
[ Quote ] [ Edit ] [ Delete ] 3#
洋芋叉叉!
yycc @ 2018-01-17 11:23:07
[ Quote ] [ Edit ] [ Delete ] 4#
你们有毒
lkhlkh @ 2018-01-17 11:25:22
[ Quote ] [ Edit ] [ Delete ] 5#
楼上是妹子
GXZIegend @ 2018-01-17 12:36:22
[ Quote ] [ Edit ] [ Delete ] 6#
后排吃瓜
oscar2001 @ 2018-02-12 21:18:54
[ Quote ] [ Edit ] [ Delete ] 7#
您好,为什么要强调您女装呢?
[Top] [Previous Page] [Next Page]

HOME Back