真題描述(友情提示題目太長)
每個測試點(輸入檔案)存在多組測試資料。
每個測試點的第一行為乙個整數task,表示測試資料的組數。
在一組測試資料中:
第1行為1個整數n,表示迷宮的寬度。
第2行為n個整數a_1 … a_n,依次表示迷宮第二行的n個格仔裡標註的數字。
對於100%的資料,滿足1<=n<=10^5, 0<=a_i<=3.<>
對於100%的資料,滿足符合資料描述的地圖一定存在。
對於每組測試資料,輸出2行,其中第一行先輸出一定為地雷的格仔的數量,然後按照從小到大的順序輸出所有一定為地雷的格仔的位置,第二行先輸出一定不為地雷的格仔的數量,按照從小到大的順序輸出所有一定不為地雷的格仔的位置。
2
31 1 1
101 2 1 2 2 3 2 2 2 2
1 2
2 1 3
7 1 3 5 6 7 9 10
3 2 4 8
我的思路有些暴力,大致就是對於首位的數字進行分類討論。
其餘的都是一些dp的基本思想。
#include
#include
#include
using
namespace
std;
const
int maxn=100005;
int t,n,o[maxn],x[maxn];
int l1,l2,b[maxn],c[maxn];
int ans[5][maxn],s;
int main()
l1=l2=s=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&x[i]);
if(n==1)
else
if(x[1]==1)
}o[0]=o[n+1]=0;
if(!you&&x[n]==o[n-1]+o[n])
for(int i=1;i<=n;i++)
o[i]=0;
o[2]=1;you=0;
for(int i=3;i<=n;i++)
}if(!you&&x[n]==o[n-1]+o[n])
}if(x[1]==2)
}if(s==1)
}else
}//printf("%d\n",s);
printf("%d",l1);
for(int i=1;i<=l1;i++)
printf(" %d",b[i]);
printf("\n%d",l2);
for(int i=1;i<=l2;i++)
printf(" %d",c[i]);
puts("");
}return0;}
/*51 1 1 1 1
1 0 0 1 0
0 1 0 0 1
*/
小Hi和小Ho的禮物
某人有n袋金幣,其中第i袋內金幣的數量是ai。現在他決定選出2袋金幣送給小hi,再選2袋金幣送給小ho,同時使得小hi和小ho得到的金幣總數相等。他想知道一共有多少種不同的選擇方法。具體來說,有多少種下標四元組 i,j,p,q 滿足i,j,p,q兩兩不同,並且i j,p q,ai aj ap aq。...
小Hi和小Ho的禮物
某人有n袋金幣,其中第i袋內金幣的數量是ai。現在他決定選出2袋金幣送給小hi,再選2袋金幣送給小ho,同時使得小hi和小ho得到的金幣總數相等。他想知道一共有多少種不同的選擇方法。具體來說,有多少種下標四元組 i,j,p,q 滿足i,j,p,q兩兩不同,並且i j,p q,ai aj ap aq。...
hihoCoder 1606 小Hi和小Ho的密碼
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi和小ho一直使用加密的方式傳輸訊息。他們使用如下方法來生成一組密碼 首先小hi和小ho選擇乙個整數 n pk 其中p質數 k是正整數,也即n是質數或質數的冪 其次,他們會求出兩個整數a和b滿足0 a b n,並且,n...