您的位置:首页 > 其它

2011,3.13(纠结的四小时)

2016-01-15 00:00 232 查看
刚参加完HDUContest Ranklist,前所未有的纠结,也是前所未有的尝到了“不是努力的不够,而上效率的滞后”,一直在努力,一直期盼着能小试牛刀,一展身手。可谁想第一道题就给泼了冷水,貌似简单的面罩下隐藏着捉摸不透的不确定性因素,使劲浑身解数,最终以提交n次超时而结束,就这样抱着试试的心态开始看艰难的第二题。一看,简单!

当带着激动的心情迅速地拿出方案并顺利地写完后,这下总该给个a鼓励鼓励了吧,感觉是标准答案了,一提交,w; 后来改了数遍,也没想明白究竟是哪儿出了错,就在最后的十几分钟突然灵感一闪,原来错的很深啊,这也是这道题的关键所在,又是算法,又是效率。。。

看来需要改进的地方还很多,继续奋斗acm!





View Code

1
#include
"
iostream
"

2

using

namespace
std;

3

char
a[
110
],b[
110
];

4

int
i,j,k;

5

int
L1;

6

int
mark
=
0
;

7

int
yy[
1000
],ss[
1000
];

8

void
Xun_huan()
//
实现一次循环

9

{

10

char
ch
=
a[
0
];

11

int
ss
=
yy[
0
];

12

for
(
int
q
=
0
;q
<=
L1
-
1
;q
++
)

13
{

14
a[q]
=
a[q
+
1
];

15
yy[q]
=
yy[q
+
1
];

16
}

17
a[L1
-
1
]
=
ch;

18
yy[L1
-
1
]
=
ss;

19
}

20

void
X_Sub()
//
将序列一分为二

21

{

22

char
c[
110
],d[
110
];

23

24

for
(i
=
0
; i
<
L1
/
2
; i
++
)

25
c[i]
=
a[i];

26

27

int
k
=
0
;

28

for
(i
=
L1
-
1
,k
=
0
;i
>=
L1
/
2
+
1
; i
--
,k
++
)

29
d[k]
=
a[i];

30

31

int
flag
=
0
;

32

int
s
=
0
;

33

for
(i
=
0
, s
=
0
; i
<
L1
/
2
, s
<
k; s
++
,i
++
)

34
{

35

if
(c[i]
==
d[s]) flag
++
;

36
}

37

if
(flag
==
L1
/
2
) mark
=
1
;

38
}

39

int
main()

40
{

41

while
(scanf(
"
%s
"
,a)
!=
EOF,a[
0
]
!=
'
#
'
)

42
{

43

44

char
xx;

45
mark
=
0
;

46
L1
=
strlen(a);

47

if
(L1
%
2
==
0
) cout
<<
"
NO
"
<<
endl;
//
排除偶数的情况

48

else

49
{

50

int
mark1
=
0
;

51

int
fuck
=
0
;

52

for
(i
=
0
;i
<
L1;i
++
)

53
{

54

if
(a[i]
==
a[i
+
1
]) fuck
++
;

55
}

56

if
(fuck
+
1
==
L1) cout
<<
"
YES
"
<<
"

"
<<
L1
/
2
<<
endl;
//
字符相同时

57

else

58
{

59
strcpy(b,a);

60

for
(
int
r
=
0
;r
<
L1;r
++
)

61
{

62
yy[r]
=
r;
//
用于记录循环后的位置

63

ss[r]
=
r;
//
用于保存起始位置

64

}

65

for
(
int
p
=
0
;p
<
L1;p
++
)

66
{

67
xx
=
a[L1
/
2
];

68
X_Sub();

69

if
(mark
==
1
)
break
;

70

else
Xun_huan();

71
}

72

if
(mark
==
1
)

73
{

74
cout
<<
"
YES
"
<<
"

"
;

75

for
(i
=
0
;i
<
L1;i
++
)

76

if
(b[i]
==
xx)

77
{

78
cout
<<
yy[L1
/
2
]
<<
endl;
break
;

79
}

80
}

81

else
cout
<<
"
NO
"
<<
endl;

82
}

83
}

84
}

85

return

0
;

86
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: