Codeforces Round #192 (Div. 2)

吐槽一下,这次的CF好简单啊。 可是我为什么这么粗心这么大意这么弱。把心沉下来,想想你到底想做什么!

A

题意:O(-1)

思路:O(-1)

 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cmath>

 4 #include <algorithm>

 5 #include <cstring>

 6 using namespace std;

 7 

 8 int main()

 9 {

10     string s[100];

11     int mp[100][100];

12     int n, m;

13     while(cin >> n >> m)

14     {

15         memset(mp,0,sizeof(mp));

16         for(int i=0; i<n; i++)

17             cin >> s[i];

18         for(int i=0; i<n; i++)

19         {

20             int cnt=0;

21             for(int j=0; j<m; j++)

22                 if(s[i][j]!='S') cnt++;

23             if(cnt==m)

24             {

25                 for(int j=0; j<m; j++) mp[i][j]=1;

26             }

27         }

28         for(int i=0; i<m; i++)

29         {

30             int cnt=0;

31             for(int j=0; j<n; j++)

32                 if(s[j][i]!='S') cnt++;

33             if(cnt==n)

34             {

35                 for(int j=0; j<n; j++) mp[j][i]=1;

36             }

37         }

38         int sum=0;

39         for(int i=0; i<n; i++)

40             for(int j=0; j<m; j++)

41              if(mp[i][j]) sum++;

42         cout << sum <<endl;

43     }

44 }
View Code

B

题意:有n个城市,然后给定m对城市不可建路,一个城市到另一个城市最多经过两条路,问你如何建路。

思路:两个城市之间的距离最多为2说明一条线上最多三个点,且有一点必须再所有三个点的中心。找出一个没有在不可连接的城市的点(因为0<M<N/2).

 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cmath>

 4 #include <algorithm>

 5 #include <cstring>

 6 #include <map>

 7 using namespace std;

 8 

 9 const int maxn=10024;

10 int que[2*maxn];

11 

12 int main()

13 {

14     int n, m;

15     while(cin >> n >> m)

16     {

17         map<int,int>mp;

18         int num=0;

19         for(int i=0; i<m; i++)

20         {

21             int u, v;

22             cin >>u >> v;

23             mp[u]=1;

24             mp[v]=1;

25         }

26         int tp;

27         for(int i=1; i<=n; i++)

28             if(!mp[i]) tp=i;

29         cout << n-1 <<endl;

30         for(int i=1; i<=n; i++)

31         {

32             if(i!=tp) cout << i << " " << tp <<endl;

33         }

34     }

35     return 0;

36 }
View Code

C

题意:O(-1)

思路:开始想复杂了,想成n皇后问题。其实这题想想也就很水的一题,对每行分析,每行能找出一个空点就是可行解,如果有一行找不到,就对每列找,每列能找到一个空点就是可行解。很水的一题,开始写成了N皇后问题,然后再源代码上改的,最后挂了,悲剧,为什么就懒这一些重新写两个for循环不就好了么,下次不能偷懒了。

 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cmath>

 4 #include <algorithm>

 5 #include <cstring>

 6 using namespace std;

 7 

 8 const int maxn=1100;

 9 int a[maxn][maxn], b[maxn]

10 string s[110];

11 

12 int main()

13 {

14     int n;

15     while(cin >> n)

16     {

17         for(int i=0; i<n; i++) cin >> s[i];

18         int top=0, flag=0;

19         for(int i=0; i<n; i++)

20             for(int j=0; j<n; j++)

21                 if(s[i][j]=='.')

22                 {

23                     top++;

24                     break;

25                 }

26         if(top==n)

27         {

28             flag=1;

29             for(int i=0; i<n; i++)

30             for(int j=0; j<n; j++)

31                 if(s[i][j]=='.')

32                 {

33                     cout << i+1 << " " << j+1 <<endl;

34                     break;

35                 }

36         }

37         top=0;

38         for(int j=0; j<n; j++)

39             for(int i=0; i<n; i++)

40                 if(s[i][j]=='.')

41                 {

42                     top++;

43                     break;

44                 }

45         if(top==n&&!flag)

46         {

47             flag=1;

48             for(int j=0; j<n; j++)

49             for(int i=0; i<n; i++)

50                 if(s[i][j]=='.')

51                 {

52                     cout << i+1 << " " << j+1 <<endl;

53                     break;

54                 }

55         }

56         if(!flag) puts("-1");

57     }

58     return 0;

59 }

60 /*

61 3

62 EEE

63 ...

64 ...

65 */
View Code

D:

题意:屌丝从起点S出发去终点E找女神,途中可能会遇见情敌,问屌丝最少能遇见几个情敌。

思路:开始看错了题,以为题目要求最少要遇见一个情敌,然后用了两次广搜,起点和终点分别搜一次。题目木有这么要求啊啊啊啊啊啊啊 O.O O.O O.O。

下次能再给我大意一点么!这题不用想得太复杂,不管这么走,屌丝和情敌都往女神那里走,情敌先到女神那里就一定能遇见屌丝然后干一架,从终点广搜一次就够了。

 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cmath>

 4 #include <algorithm>

 5 #include <cstring>

 6 #include <queue>

 7 using namespace std;

 8 

 9 const int maxn=1024;

10 char map[1024][1024];

11 long long a[maxn][maxn],visit[maxn][maxn];

12 int n, m, si, sj, di, dj;

13 int dir[4][2]= {0,1,0,-1,1,0,-1,0};

14 

15 struct node

16 {

17     int x, y;

18     long long time;

19 } f[maxn*maxn];

20 

21 void bfs(int st, int sd)

22 {

23     queue<node>q;

24     memset(visit,0,sizeof(visit));

25     node s, p;

26     s.x=st, s.y=sd, s.time=0;

27     q.push(s);

28     while(!q.empty())

29     {

30         p=q.front();

31         q.pop();

32         for(int i=0; i<4; i++)

33         {

34             s.x=p.x+dir[i][0];

35             s.y=p.y+dir[i][1];

36             s.time=p.time+1;

37             if(1<=s.x&&s.x<=n&&1<=s.y&&s.y<=m&&map[s.x][s.y]!='T'&&!visit[s.x][s.y])

38             {

39                 visit[s.x][s.y]=1;

40                 a[s.x][s.y]=s.time;

41                 q.push(s);

42             }

43         }

44     }

45 }

46 

47 int main()

48 {

49     while(cin >> n >> m)

50     {

51         int num=0;

52         for(int i=1; i<=n; i++)

53         {

54             scanf("%s",map[i]+1);

55             for(int j=1; j<=m; j++)

56             {

57                 if(map[i][j]=='S') si=i, sj=j;

58                 else if(map[i][j]=='E') di=i, dj=j;

59                 else if('0'<map[i][j]&&map[i][j]<='9')

60                 {

61                     f[num].x=i;

62                     f[num].y=j;

63                     num++;

64                 }

65             }

66         }

67         memset(a,0,sizeof(a));

68         bfs(di,dj);

69         long long  sum=0;

70         for(int i=0; i<num; i++)

71         {

72             int x=f[i].x, y=f[i].y;

73             if(a[x][y]<=a[si][sj]&&a[x][y]) sum+=map[x][y]-'0';

74         }

75         cout << sum <<endl;

76     }

77     return 0;

78 }
View Code

 

E:

不会。

 

你可能感兴趣的:(codeforces)