56 条题解
-
0laijingtao LV 8 @ 2009-08-15 21:51:00
第一次前一百名AC
刚开始不会染色,郁闷了半天 -
02009-08-03 21:00:59@
终于过了
-
02009-08-03 15:50:08@
第一次提交的时候。。居然忘把调试的东西删掉嘞。。。郁闷哦。。。。
-
02009-08-02 23:13:15@
二分图染色判定(bfs dfs 都行)
pas版都掉了
现在才出题
贪心都100
不刷题
无聊
水 -
02009-08-02 09:47:24@
不懂…………
-
02009-08-01 18:16:19@
汗...打错变量名+交错编译环境*2
最近做了什么掉RP的事么...
4次AC...
题解http://hi.baidu.com/sk_raucous/blog/item/4b752ff86a79ec50252df2bd.html -
02009-08-01 12:44:50@
晕,怎么不加到原题里
-
02009-08-09 11:38:26@
去年这道题终于出现了!核心思路:如果有序列里下标为i,j,k(ia[k],那么i、j不能进一个栈。也就是,比如说,123不能以231的形式入同一个栈。 如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html
-
02009-08-01 10:44:50@
可以用DFS染色,再加上二分图匹配。
NOIP2008的复赛试题为什么没有加到原题里? -
02009-08-01 10:41:50@
去年这道题终于出现了!要是早点出现我就不在RQNOJ交了。。。核心思路:如果有序列里下标为i,j,k(ia[k],那么i、j不能进一个栈。也就是,比如说,123不能以231的形式入同一个栈。
-
02009-08-01 10:15:27@
嗯!the tenth !
-
02009-08-01 10:06:34@
原题的N《=1000吧
-
02009-08-04 21:47:58@
我是沙茶!我是沙茶!!我是沙茶!!!
好不容易0ms了!!!!!!!! -
02009-07-31 16:25:09@
嗯,又是一道推来推去的题……
-
-12015-05-19 22:32:41@
快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷快来膜拜我,我是宇宙金牌爷
-
-12013-10-22 22:01:50@
0毫秒通过~~~~~~~~~~~~~~~~~~~~~~~
cpp 37行 ~~~~~~~~~~~~~~~~~~~~~~~
评测结果
编译成功测试数据 #0: Accepted, time = 0 ms, mem = 708 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 700 KiB, score = 10
测试数据 #2: Accepted, time = 0 ms, mem = 704 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 704 KiB, score = 10
测试数据 #4: Accepted, time = 0 ms, mem = 704 KiB, score = 10
测试数据 #5: Accepted, time = 0 ms, mem = 700 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 708 KiB, score = 10
测试数据 #7: Accepted, time = 0 ms, mem = 704 KiB, score = 10
测试数据 #8: Accepted, time = 0 ms, mem = 704 KiB, score = 10
测试数据 #9: Accepted, time = 0 ms, mem = 704 KiB, score = 10
Accepted, time = 0 ms, mem = 708 KiB, score = 100
代码
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int p [1010 ],col[1010 ],Min[1010 ],pai[3][1010],l[3],wei[10010],las[10010],too[10010];
int n,t=0,should=1;void line(int x,int y) {
las[++t] = wei[x]; wei[x] = t; too[t] = y;
las[++t] = wei[y]; wei[y] = t; too[t] = x;
}void draw(int x,int c) {
if (!col[x] ) col[x]=c; else
if ( col[x]!=c) {printf("0");exit(0);} else return;
for (int i=wei[x]; i; i=las[i]) draw(too[i],3-c);
}int main() {
scanf("%d",&n); for (int i=1 ; i<=n; i++) scanf("%d",&p[i]);
Min[n] = p[n]; for (int i=n-1; i>=1; i--) Min[i]=min(Min[i+1],p[i]);
pai[1][0]=1002; col[n+1]=1; pai[2][0]=1002; p[n+1]=1001;
for (int i=1 ; i<=n-2; i++)
for (int j=i+1; j<=n-1; j++)
if(p[i]<p[j]&&Min[j+1]<p[i]) line(i,j);
for (int i=1 ; i<=n ; i++)
if ( !col[ i ] ) draw(i,1);
for (int i=1 ; i<=n+1; i++) {
int f=1;
while (f)
if ( pai[1][l[1]] == should ) {should++; l[1]--; printf("b ");} else
if ( pai[2][l[2]] == should ) {should++; l[2]--; printf("d ");} else f=0;
pai[ col[i] ][ ++l[ col[i] ] ]=p[i];
if (i<n+1) printf("%c ", char(2*col[i]+95) );
}
}