1/*la3713
2典型的2-sat模型
3太空飛行員分兩類:
41、年齡少於平均 young
52、至少為平均
6矛盾:
7情況一:如果兩個太空飛行員屬於同一類且相互矛盾的話,則他們兩個的選擇一定是不相同的
8情況二:如果不屬於同一組相互矛盾,不能同時選c任務
9建模:a/b 2*i
10c 2*i+1
11情況一:2x-->2y+1,2x+1-->2y;2y-->2x+1;2y+1-->2x;
12情況二:2x+1-->2y,2y+1-->2x;
1314
*/15 #include 16 #include 17 #include
18 #include 19 #include 20 #include
21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include
29 #include 30
#define inf 0x3f3f3f3f
31#define ll long long
32#define eps 1e-4
33#define maxn 100010
34using
namespace
std;
35int
age[maxn];
36int
n,m;
37double
**er;
38int nextint()
39int kind(int
age)
4043
struct
twosat
4459
void init(int
n)60
65//
x=xval or y=xval ,x 則 xval=0,x'則xval=1
66void add_clause(int x ,int y,int
k)67
72if (k==1)76
}77bool
solve()
7889}90
}91return
true;92
}93void
printans()
9498
} sat;
99void
read()
100103
//cout<<"a="<104 **er=**er/n;
105//
cout<<"a="<106
}107
void
solve()
108else
120
123}
124if(sat.solve()) sat.printans();else printf("
no solution.\n");
125}
126int
main()
127134
return0;
135 }
搜尋專項 LA 5844
一開始用map記錄對映dfs,結果tle了。然後發現第乙個串中只會出現 a z 所以可以以這26個字母用乙個vis記錄該字母是否被對映,再記錄該字母對映下的字串就可以了。include include include using namespace std char s1 20 s2 60 int ...
LA 1453 旋轉卡殼
include using namespace std struct point typedef point vector int cross vector a,vector b vector operator vector a,vector b vector operator point a,po...
la3716( 數學變形)
translation 給出兩條字串a,b。找出一段最長的子區間,使得區間所有位置x,有不超過p 的位置存在a x b x solution 利用數學變形 構造乙個數列,兩字串相等的位置為0,不等的為1。另sum i 為字首和。則就是求 sum e sum s e s 不超過p 的最長長度是多少?n...