锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1錛夊拰2錛夊叾瀹炴槸鍚屼竴縐嶇姸鎬侊紝浣嗘槸鎸?/span> 綆楅夊嚭錛?/span>1錛?/span>2錛夋槸涓縐嶏紝閫夊嚭錛?/span>3錛?/span>4錛夋槸涓縐嶏紝鎵浠ヤ駭鐢熶簡閲嶅銆?/span> 閭d箞璇ユ庝箞淇敼鍛紝鍏跺疄鍙鍥哄畾涓涓偣錛屽亣璁炬槸1錛屽啀浠?/span>n-1涓偣涓夊嚭i-1涓偣鍘昏窡1鏋勬垚榪為氬浘鍗矯i-1n-1錛岄偅鏍峰氨鍙互閬垮厤閲嶅浜嗭紱 鎵浠ュ紡瀛愪慨姝d負(fù)
浠g爜錛?br />
2 # include <map>
3 # include <cstring>
4 # include <algorithm>
5 using namespace std;
6 int pa[2000],pp=0,sa[10],sp=0;
7 int refer[5][10001];
8 void make_prime()
9 {
10 bool used[10001];
11 memset(used,true,sizeof(used));
12 for(int i=2;i<=10000;i++)
13 if(used[i])
14 {
15 pa[pp++]=i;
16 for(int j=2*i;j<=10000;j+=i)
17 used[j]=false;
18 }
19 }
20 void spilt(int n)
21 {
22 sp=0;
23 for(int i=0;i<pp&&n!=1;i++)
24 if(n%pa[i]==0)
25 {
26 sa[sp++]=pa[i];
27 while(n%pa[i]==0)
28 n/=pa[i];
29 }
30 }
31 void putmap(int n)
32 {
33 spilt(n);
34 for(int i=1;i<(1<<sp);i++)
35 {
36 int n1=0,n2=1;
37 for(int j=0;j<5;j++)
38 if(i&(1<<j))
39 n1++,n2*=sa[j];
40 refer[n1-1][n2]++;
41 }
42 }
43 long long c(int n)
44 {
45 return (long long)n*(n-1)*(n-2)*(n-3)/4/3/2;
46 }
47 long long getans(int n)
48 {
49 long long ans=c(n);
50 for(int i=0;i<5;i++)
51 {
52 bool flag=false;
53 for(int j=1;j<=10000;j++)
54 if(refer[i][j]>=4)
55 flag=true,
56 ans+=c(refer[i][j])*(i%2?1ll:-1ll);
57 if(!flag)break;
58 }
59 return ans;
60 }
61 int main()
62 {
63 int n;
64 make_prime();
65 while(scanf("%d",&n)!=EOF)
66 {
67 memset(refer,0,sizeof(refer));
68 for(int i=0;i<n;i++)
69 {
70 int t;
71 scanf("%d",&t);
72 putmap(t);
73 }
74 printf("%lld\n",getans(n));
75 }
76 return 0;
77 }
]]>
錛?img src="http://acm.hdu.edu.cn/data/images/3682-1.gif" alt="" />
寮濮嬪啓鐨勬椂鍊欏嚭鐜頒釜BUG錛屾棤濂堬紝涓婄綉鎵鵑瑙o紝鏇存棤濂堬紝閮芥槸浜涘嚑鍙ヨ瘽hash鐒跺悗灝辨槸涓鍫嗛毦鎳傜殑浠g爜銆傘?br />鍚庢潵浠旂粏鎯充簡鎯籌紝鎶婇噸澶嶇殑鎿嶄綔鍘婚櫎鍚庯紙灝辨槸涓ゆ鍒犻櫎鐨勫悓涓涓湪鏉★級錛屼笅闈㈠氨鏄釜寰堢畝鍗曠殑瀹規(guī)枼鍘熺悊浜?br />鍥犱負(fù)鍘婚櫎浜嗛噸澶嶆搷浣滐紝涓涓湪鍧楁渶澶氳鍒犻櫎3嬈★紝鐒跺悗鍒犻櫎鐨勪釜鏁板氨涓鴻鍒犻櫎鑷沖皯涓嬈$殑涓暟-鍒犻櫎鑷沖皯涓ゆ鐨勪釜鏁?鍒犻櫎鑷沖皯3嬈$殑涓暟銆備笉鑳藉己琛屾灇涓撅紝鍙互鐢╩ap鎴栬呬紶璇翠腑鐨刪ash璁板綍琚垹闄ゆ帀鏈ㄥ潡鐨勬鏁般傝繖閲岋紝鐢變簬鎿嶄綔鏈澶歮=1000錛屽垹闄ゆ湪鍧楁暟鏈澶氫負(fù)C(m,2)錛岀劧鍚庝袱涓ゆ灇涓炬搷浣滐紝鎶婄浉浜ゆ湪鍧楀垹闄ゆ鏁?1錛岀劧鍚庢渶鍚巑ap涓墍鏈夋湪鍧楀垹闄ゆ鏁板彧鑳芥湁2涓鹼細(xì)1鍜?錛屽綋鍊間負(fù)1鏃訛紝total-1,鍊間負(fù)3鏃訛紝total-2
涓轟粈涔堬紵鍥犱負(fù)鎴戣浜嗭紝涓涓湪鍧楁渶澶氳鍒犻櫎3嬈★紝鐒跺悗淇╀咯鏋氫婦鐨勬椂鍊欙紝浣犳噦鐨勩?br />
2 # include <utility>
3 # include <cstring>
4 # include <algorithm>
5 # include <functional>
6 # include <set>
7 # include <cstdlib>
8 # include <map>
9 using namespace std;
10 struct node
11 {
12 int p[3];
13 bool operator<(const node &pos) const
14 {
15 for(int i=0;i<3;i++)
16 if(p[i]!=pos.p[i])
17 return p[i]<pos.p[i];
18 return false;
19 }
20 };
21 pair<int,int> data[1000][2];
22 set<pair<pair<int,int>,pair<int,int> > > r1;
23 map<node,int> r2;
24 int main()
25 {
26 int test;
27 scanf("%d",&test);
28 while(test--)
29 {
30 int n,m,p=0;
31 char str[128];
32 scanf("%d%d",&n,&m);
33 r1.clear();r2.clear();
34 while(m--)
35 {
36 scanf("%s",str);
37 char *t=strtok(str,",");
38 data[p][0].first=(*t)-'X';
39 data[p][0].second=atoi(t+2);
40 t=strtok(NULL," ");
41 data[p][1].first=(*t)-'X';
42 data[p][1].second=atoi(t+2);
43 if(data[p][0].first>data[p][1].first) swap(data[p][0],data[p][1]);
44 pair< pair<int,int>,pair<int,int> > tt;
45 tt.first=data[p][0];
46 tt.second=data[p][1];
47 if(data[p][0].second>=1&&data[p][0].second<=n&&data[p][1].second>=1&&data[p][1].second<=n&&r1.find(tt)==r1.end()) p++,r1.insert(tt);
48 }
49 m=p;
50 for(int i=0;i<m;i++)
51 for(int j=i+1;j<m;j++)
52 if(data[i][0]==data[j][0]&&data[i][1].first!=data[j][1].first||
53 data[i][1]==data[j][0]&&data[i][0].first!=data[j][1].first||
54 data[i][0]==data[j][1]&&data[i][1].first!=data[j][0].first||
55 data[i][1]==data[j][1]&&data[i][0].first!=data[j][0].first)
56 {
57 node t;
58 t.p[data[i][0].first]=data[i][0].second;
59 t.p[data[i][1].first]=data[i][1].second;
60 t.p[data[j][0].first]=data[j][0].second;
61 t.p[data[j][1].first]=data[j][1].second;
62 r2[t]++;
63 }
64 int total=m*n;
65 for(map<node,int>::iterator i=r2.begin();i!=r2.end();i++)
66 if(i->second==1) total--;
67 else total-=2;
68 printf("%d\n",total);
69 }
70 //system("pause");
71 return 0;
72 }
73
]]>
瑙f硶錛?br>棣栧厛鐪嬪埌榪欓灝卞簲璇ユ兂鍒版柟紼嬬粍銆傛垨鑰呰錛屾槸涓涓ā2鏂圭▼緇勩?br>浣嗘槸錛岃繖涓細(xì)緇欐垜浠甫鏉ユ眰瑙g殑楹葷儲銆傛眰瑙f柟紼嬬粍鏈夌粡鍏哥殑楂樻柉娑堝厓娉曪紝浣嗘槸鍑虹幇妯¤繍綆楋紝紜疄璁╀漢澶寸柤銆傝繖閲岋紝鎴戜滑鎯沖埌浜嗗紓鎴栬繍綆楋紝鑱旂郴楂樻柉娑堝厓鐨勬湰璐紝鏄敤涓涓柟紼嬫潵浠f崲鍙﹀涓涓柟紼嬶紝鍗佽繘鍒舵ā浜岃繍綆椾腑鐨勫姞銆佸噺榪愮畻涓庝簩榪涘埗涓殑寮傛垨榪愮畻姝eソ瀵瑰簲錛佺劧鍚庝笅闈㈢殑浜嬫儏灝辯畝鍗曞浜?br>
鏈変竴涓皬鎶宸э紝浣跨敤浣嶈繍綆楄兘澶熷ぇ澶х畝鍖栫紪紼嬪鏉傚害銆?br>鍙互灝嗗師鏉ョ煩闃電殑姣忎竴琛屽帇緙╂垚涓涓?2浣嶆暣鏁幫紝榪欐牱姣忔娑堝厓鐨勮繃紼嬩腑閫夋嫨鍒椾富鍏冪殑榪囩▼鍙互鐢ㄦ帓搴忚交鏉捐В鍐硚錛岀劧鍚庢秷鍘葷殑榪囩▼鍜屽洖浠g殑榪囩▼涔熷氨闈炲父濂藉疄鐜頒簡銆傜敤榪欑鏂規(guī)硶錛岃繖棰樼殑浠g爜閲忓彲浠ユ帶鍒跺湪60琛屼互鍐呫?br>蹇界劧鎯寵搗浜嗚侀槦闀胯榪囩殑璇?100琛屼互鍐呯殑紼嬪簭鎵嶆槸姝hВ錛屽仛浜嗚繖涔堝棰橈紝瓚婃潵瓚婂彂鐜拌繖鍙ヨ瘽鏄涔堢殑緇忓吀銆傝瘽璇寸幇鍦ㄩ儹鑰佸ぇ鍦ㄩ┈鍖栬吘閭e簲璇ョ畻涓孩浜轟簡~
榪樻湁浠跺緢鍥х殑浜嬶紝浣跨敤STL閲岀殑greater浠垮嚱鏁扮珶鐒惰鍖呮嫭涓涓彨functional鐨勫ご鏂囦歡錛岀敋鏄寮傘傘?/span>
浠g爜:
2 # include <algorithm>
3 # include <functional>
4 # include <cstring>
5 using namespace std;
6 inline void setbit(int &num,int bit)
7 {
8 num|=1<<(30-bit);
9 }
10 inline bool getbit(int &num,int bit)
11 {
12 if(num&(1<<(30-bit))) return true;
13 else return false;
14 }
15 int main()
16 {
17 int test;
18 scanf("%d",&test);
19 for(int t=1;t<=test;t++)
20 {
21 int e[30];
22 memset(e,0,sizeof(e));
23 for(int i=0;i<30;i++)
24 {
25 int tmp;
26 scanf("%d",&tmp);
27 setbit(e[i],i);
28 if(i%6!=0) setbit(e[i],i-1);
29 if(i%6!=5) setbit(e[i],i+1);
30 if(i/6!=0) setbit(e[i],i-6);
31 if(i/6!=4) setbit(e[i],i+6);
32 if(tmp) setbit(e[i],30);
33 }
34 for(int i=0;i<30;i++)//娑堝厓
35 {
36 sort(e+i,e+30,greater<int>());
37 if(getbit(e[i],i))
38 for(int j=i+1;j<30;j++)
39 if(getbit(e[j],i))
40 e[j]^=e[i];
41
42 }
43 for(int i=29;i>=0;i--)//鍥炰唬
44 if(getbit(e[i],i))
45 for(int j=i-1;j>=0;j--)
46 if(getbit(e[j],i))
47 e[j]^=e[i];
48 printf("PUZZLE #%d\n",t);
49 for(int i=0;i<30;i++)
50 {
51 if(e[i])
52 printf("%d",getbit(e[i],30));
53 else printf("0");
54 if(i%6==5) printf("\n");
55 else printf(" ");
56 }
57 }
58 return 0;
59 }
]]>
瑙g瓟錛?br>榪欓鍜屼竴鑸殑姒傜巼棰樹笉鍚岋紝浜岃呯殑鐐規(guī)暟鏄笉鐙珛鐨勶紝鎵浠ヨ鐢ㄤ竴涓猵air鍜宮ap瀛樺偍浠栦滑鐨勬鐜囥?br>緇撳悎浠g爜鏉ヨ鍚?
2 # include <cstring>
3 using namespace std;
4 # include <map>
5 # define encode(a,b) (((a)<<6)|(b))
6 # define getp1(a) ((a)>>6)
7 # define getp2(a) ((a)&63)
8 int main()
9 {
10 double res[21][2];
11 //p[i][j]錛孉寰楀埌i-1鍒嗭紝B寰楀埌j-1鍒嗙殑姒傜巼錛屼互鍚庝負(fù)浜嗗鐞嗘柟渚匡紝鍙互灝嗗緱-1,0,1,2鍒嗙湅浣滃緱0,1,2,3鍒?/span>
12 double p[4][4]={{0,0,0,1.0/16},{1.0/16,3.0/8,1.0/8,0},{1.0/8,3.0/16,0,0},{1.0/16,0,0,0}};
13 memset(res,0,sizeof(res));
14 map<int,double> table[21];
15 table[0][encode(0,0)]=1.0;//杈圭晫鎯呭喌錛欰寰?鍒嗭紝B寰?鍒嗙殑姒傜巼涓?
16 for(int step=1;step<=21;step++)
17 {
18 for(map<int,double>::iterator ita=table[step-1].begin();ita!=table[step-1].end();ita++)
19 {
20 int p1=getp1(ita->first),p2=getp2(ita->first);
21 if(step!=21)
22 {
23
24 for(int i=0;i<4;i++)
25 for(int j=0;j<4;j++)
26 table[step][encode(p1+i,p2+j)]+=(ita->second)*p[i][j];//鐘舵佽漿縐?/span>
27 }
28 if(p1<p2)//绱姞A杈撶粰B鐨勬鐜?/span>
29 res[step-1][0]+=ita->second;
30 else if(p1==p2)//绱姞鎵撳鉤鐨勬鐜?/span>
31 res[step-1][1]+=ita->second;
32 }
33 }
34 printf("Round A wins B wins Tie\n");
35 for(int i=1;i<=20;i++)//杈撳嚭鏍煎紡娉ㄦ剰,濡傛灉闇瑕佸湪printf鍐呰緭鍑?鐨勮瘽瑕佺敤%%
36 printf("%5d%10.4f%%%9.4f%%%9.4f%%\n",i,(1-res[i][0]-res[i][1])*100,res[i][0]*100,res[i][1]*100);
37 return 0;
38 }
39
]]>
棣栧厛錛屾瘡涓槦鏄嫭绔嬬殑銆?br>璁綿p[i][j]涓哄墠i涓鐩仛鍑簀棰樼殑姒傜巼錛屾湁dp鏂圭▼dp[i][j]=dp[i-1][j-1]*(p[pos][i])+dp[i-1][j]*(1-p[pos][i])
杈圭晫鏉′歡錛歞p[0][0]=0;dp[i][0]=dp[i-1][0]*(1-p[pos][i])
鐒跺悗緇撴灉搴旇鏄瘡闃熻嚦灝戝仛鍑轟竴棰樼殑姒傜巼鍑忓幓鍦ㄨ繖涓熀紜涓婃墍鏈夐槦鍋氶鏁板皬浜嶯鐨勬鐜囥?br>涓囨伓鐨凷treamTokenizer錛屼笉鐭ラ亾璇誨叆鏁版嵁鐨勬椂鍊欏嚭浜嗕粈涔堣寮傜殑闂錛屽鐓ф爣紼嬪鎷嶏紝灝辨槸娌¢敊璇紝涓鎻愪氦灝盬A錛佹渶鍚庢崲Scanner錛岄『鍒〢C銆傘傛棤璇?br>姣旇禌鐨勬椂鍊欑煡閬撲簡錛屾暟鎹瘮杈冨ぇ鎴栬呮誕鐐圭殑鎯呭喌涓嬭繕鏄埆鐢⊿treamTokenizer浜嗐傘?br>
import java.io.*;
2
import java.text.DecimalFormat;
3
import java.util.Arrays;
4
import java.util.Scanner;
5
public class Main
{
6
7
/** *//**
8
* @param args
9
*/
10
11
static double dp[][]=new double[35][35],map[][]=new double[1001][31];
12
static int m,t,n;
13
public static void main(String[] args) throws Exception
{
14
Scanner in=new Scanner(System.in);
15
while(true)
16
{
17
m=in.nextInt();t=in.nextInt();n=in.nextInt();
18
if(m==0&&t==0&&n==0) break;
19
for(int i=1;i<=t;i++)
20
for(int j=1;j<=m;j++)
21
map[i][j]=in.nextDouble();
22
double total=1.0,minus=1.0;
23
for(int i=1;i<=t;i++)
24
{
25
for(int j=0;j<=m;j++)
26
Arrays.fill(dp[j],0.0);
27
double t1=0.0,t2=0.0;
28
dp[0][0]=1.0;
29
for(int j=1;j<=m;j++)
30
{
31
dp[j][0]=dp[j-1][0]*(1-map[i][j]);
32
for(int k=1;k<=m;k++)
33
dp[j][k]=dp[j-1][k-1]*map[i][j]+dp[j-1][k]*(1-map[i][j]);
34
}
35
for(int j=1;j<=m;j++)
36
{
37
t1+=dp[m][j];
38
t2+=(j<n?dp[m][j]:0);
39
}
40
41
total*=t1;
42
minus*=t2;
43
}
44
System.out.printf("%.3f\n",total-minus);
45
}
46
47
}
48
49
}
50
]]>
2 import java.io.*;
3 public class Main {
4
5 /**
6 * @param args
7 */
8 static StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
9 static final int nextInt() throws Exception
10 {
11 in.nextToken();
12 return (int)in.nval;
13 }
14 public static void main(String[] args) throws Exception{
15
16 int num=nextInt();
17 int step[]=new int[num+1];
18 int id[]=new int[num+1];
19 step[1]=1;
20 for(int i=2;i<=num;i++)
21 step[i]= (step[i-1]<<1)%1000000;
22 ArrayList<Integer> data[]=new ArrayList[3];
23 for(int i=0;i<3;i++)
24 data[i]=new ArrayList<Integer>();
25 int a=nextInt(),b=nextInt(),c=nextInt();
26 while((a--)!=0)
27 id[nextInt()]=0;
28 while((b--)!=0)
29 id[nextInt()]=1;
30 while((c--)!=0)
31 id[nextInt()]=2;
32 int s=id[num],e=s,mid=0,total=0;
33 for(int i=num;i>=1;)
34 {
35 if(s!=e)
36 {
37 total=(step[i]+total)%1000000;
38 e=mid;
39 }
40 s=id[--i];
41 mid=3-s-e;
42 }
43 System.out.println(id[num]+1);
44 System.out.println(total);
45
46
47
48 }
49
50 }
51
]]>
n涓《鐐圭殑鏃犵浉榪為氬浘鏋勬垚鏂規(guī)硶涓哄湪n-1涓妭鐐逛腑鍒嗙鍑轟竴涓ぇ灝忎負(fù)i鐨勮仈閫氬垎閲忓姞涓婄n涓妭鐐逛笌鍓╀綑鐨刵-1-i涓偣鏋勬垚鐨勮仈閫氬垎閲忥紙鍙兘n-1-i涓偣騫朵笉鑱旈氾紝浣嗘槸鍙互閫氳繃絎琻涓偣鑱旈氾級錛屾墍浠ュ垵姝ョ殑寮忓瓙鏄繖鏍鳳細(xì)
dp[i]=sum{dp[j]*(1 shl j-1)*dp[i-j]*c[j-1][i]}
浣嗘槸榪欎釜寮忓瓙鏈夌偣闂錛屼細(xì)浜х敓閲嶅錛屽鍥炬墍紺?br>
1錛?/span>
2錛?/span>
涓嶇煡閬撶綉涓婂緢澶氫漢涓轟粈涔堣浠庡弽闈㈣冭檻錛屽嵆綆楀嚭n鏃犲悜鍥劇殑涓暟2^C[n][2]鐒跺悗鍐嶅噺鍘諱笉榪為氱殑璇卞瀛愬浘鏁扮洰錛屾劅瑙夋槸澶氭涓涓緙
2 import java.math.*;
3 public class Main {
4
5 /**
6 * @param args
7 */
8 public static void main(String[] args) throws IOException{
9 BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
10 BigInteger dp[]=new BigInteger[60];
11 BigInteger c[][]=new BigInteger[51][51];
12 c[0][0]=BigInteger.ONE;
13 for(int i=1;i<=50;i++)
14 c[i][0]=c[i][i]=BigInteger.ONE;
15 for(int i=2;i<=50;i++)
16 for(int j=1;j<i;j++)
17 c[i][j]=c[i-1][j].add(c[i-1][j-1]);
18 dp[1]=BigInteger.ONE;
19 dp[0]=BigInteger.ONE;
20 for(int i=2;i<=50;i++)
21 {
22 dp[i]=BigInteger.ZERO;
23 for(int j=1;j<i;j++)
24 dp[i]=dp[i].add(dp[j].multiply((BigInteger.ONE.shiftLeft(j)).add(BigInteger.ONE.negate())).multiply(dp[i-j]).multiply(c[i-2][j-1]));
25 }
26 int num=0;
27 while(true)
28 {
29 num=Integer.parseInt(in.readLine());
30 if(num==0) break;
31 System.out.println(dp[num]);
32 }
33
34 }
35
36 }
37
]]>