1. 程式人生 > >Codeforces Round #553 (Div. 2)

Codeforces Round #553 (Div. 2)

選擇 技術分享 sin syn clas esp 為什麽 異或 define

題目鏈接:

https://codeforces.com/contest/1151

A. Maxim and Biology

題解:

水題直接上代碼

代碼:

技術分享圖片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,ans=123456789;
 4 string ss,s="ACTG";
 5 
 6 int main()
 7   {
 8     #ifndef ONLINE_JUDGE
 9     freopen("aa.in","r",stdin);
10     #endif
11 ios::sync_with_stdio(false); 12 cin>>n; 13 //for(int i=1;i<=n;i++) 14 cin>>ss; 15 for(int i=0;i<=n-4;i++) 16 { 17 int tp=0; 18 for(int j=i;j<=i+3;j++) 19 { 20 int x=fabs(ss[j]-s[j-i]); 21 tp+=min(x,26-x); 22 }
23 ans=min(ans,tp); 24 } 25 cout<<ans; 26 }
View Code

B. Dima and a Bad XOR

題意:

給你一個n*m的矩陣,每一行選一個數,是他們的異或和大於0.

題解:

這題慘遭hack,其實不難,還是太菜了,分類討論能力不夠導致思維有些小混亂。

因為只需要大於零,我們可以枚舉每一位二進制位。

對於某一位某一行只有三種情況:

(1) 這一行每個數這一位都為1

(2)這一位都為0

(3)這一位既有0又有1

顯然如果某一行滿足(3),就一定有解(想一想為什麽),然後我們先假定所有滿足(3)的行都選擇放0。

如果沒有(3),則每一行這一位都是固定的,算一下等不等於1就行了。

代碼

技術分享圖片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define N 600
 4 int n,m,ans=123456789;
 5 int mp[N][N];
 6 int a[N][20],b[N][20];
 7 int flag[N],c[N];
 8 int main()
 9 {
10 #ifndef ONLINE_JUDGE
11   freopen("aa.in","r",stdin);
12 #endif
13   ios::sync_with_stdio(false);
14   cin>>n>>m;
15   for(int i=1;i<=n;i++)
16     for(int j=1;j<=m;j++)
17       cin>>mp[i][j];
18   for(int k=0;k<=9;k++)
19     {
20       for(int i=1;i<=n;i++)
21     {
22       for(int j=1;j<=m;j++)
23         {
24            
25           if ((mp[i][j]>>k)&1)
26         a[i][k]=j;else b[i][k]=j;
27         }
28       if (a[i][k]>0&&b[i][k]>0)flag[k]=1;
29       if (a[i][k]>0&&b[i][k]==0)c[k]^=1;
30     }
31     }
32   for(int k=0;k<=9;k++)
33     {
34       if (flag[k]==1||c[k]==1)
35     {
36       cout<<"TAK"<<endl;
37       for(int i=1;i<=n;i++)
38         {
39           if (b[i][k]==0)cout<<a[i][k]<<" ";
40           if (a[i][k]==0)cout<<b[i][k]<<" ";
41           if (a[i][k]>0&&b[i][k]>0)
42         {
43           if (c[k]==0)cout<<a[i][k]<<" ";
44           if (c[k]==1)cout<<b[i][k]<<" ";
45           c[k]=1;
46         }
47         }
48       return 0;
49     }
50     }
51   cout<<"NIE";
52    
53 }
View Code

Codeforces Round #553 (Div. 2)