1800: [Ahoi2009]fly 飞行棋
来源:互联网 发布:淘宝秒杀是真的假的 编辑:程序博客网 时间:2024/06/05 20:07
1800: [Ahoi2009]fly 飞行棋代码
Description
给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。
Input
第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度
Output
所构成不重复矩形的个数
Sample Input
8
1
2
2
3
1
1
3
3
1
2
2
3
1
1
3
3
Sample Output
3
HINT
N<= 20
Source
这道题还是挺水的 想要构成矩形 那么对角线一定是圆的直径
找到所有圆的直径 判断两组点是否构成矩形 (好像这里是组合数???)
1 #include <cstdio> 2 #include <cctype> 3 #include <cstring> 4 5 const int INF=0x3f3f3f3f; 6 const int MAXN=110; 7 8 int n,c,tot,ans; 9 10 int map[MAXN][MAXN],Sx[MAXN],Sy[MAXN];11 12 inline void read(int&x) {13 int f=1;register char c=getchar();14 for(x=0;!isdigit(c);c=='-'&&(f=-1),c=getchar());15 for(;isdigit(c);x=x*10+c-48,c=getchar());16 x=x*f;17 }18 19 inline int min(int a,int b) {return a<b?a:b;}20 21 inline void DFS() {22 for(int i=1;i<=tot;++i) 23 for(int j=1;j<=tot;++j) {24 if(i==j) continue;25 int x1=Sx[i],y1=Sy[i];26 int x2=Sx[j],y2=Sy[j];27 if(map[x1][x2]==map[y1][y2]&&map[x2][y1]==map[x1][y2]) ++ans;28 }29 }30 31 int hh() {32 freopen("A.in","r",stdin);33 freopen("A.out","w",stdout);34 read(n);35 memset(map,INF,sizeof map);36 for(int i=1;i<n;++i) read(map[i][i+1]),c+=map[i][i+1],map[i+1][i]=map[i][i+1];37 read(map[n][1]),map[1][n]=map[n][1];38 c+=map[n][1];39 for(int k=1;k<=n;++k)40 for(int i=1;i<=n;++i)41 for(int j=1;j<=n;++j)42 map[i][j]=min(map[i][j],map[i][k]+map[k][j]);43 for(int i=1;i<=n;++i)44 for(int j=1;j<=n;++j)45 if(map[i][j]==c/2) {46 Sx[++tot]=i,Sy[tot]=j;47 break;48 }49 tot/=2;50 DFS();51 printf("%d\n",ans/2);52 fclose(stdin);53 fclose(stdout);54 return 0;55 }56 57 int sb=hh();58 int main(int argc,char**argv) {;}
阅读全文
0 0
- 1800: [Ahoi2009]fly 飞行棋
- 1800: [Ahoi2009]fly 飞行棋
- 1800: [Ahoi2009]fly 飞行棋
- 1800: [Ahoi2009]fly 飞行棋
- 1800: [Ahoi2009]fly 飞行棋
- bzoj 1800 [Ahoi2009] fly 飞行棋
- BZOJ 1800 AHOI2009 fly 飞行棋 暴力
- BZOJ 1800 [Ahoi2009]fly 飞行棋
- 【BZOJ 1800】[Ahoi2009]fly 飞行棋
- bzoj 1800: [Ahoi2009]fly 飞行棋
- BZOJ 1800: [Ahoi2009]fly 飞行棋
- [Ahoi2009]fly 飞行棋
- 【BZOJ1800】【Ahoi2009】fly 飞行棋
- [BZOJ1800][Ahoi2009]fly飞行棋
- 【AHOI2009】【BZOJ1800】fly 飞行棋
- [BZOJ1800] [Ahoi2009]fly 飞行棋
- BZOJ1800: [Ahoi2009]fly 飞行棋
- bzoj1800: [Ahoi2009]fly 飞行棋
- Post Office
- 1105 第K大的数
- 1449 砝码称重
- 1117 聪明的木匠
- 1875 丢手绢
- 1800: [Ahoi2009]fly 飞行棋
- 51Nod 1453 抽彩球
- 1806: [Ioi2007]Miners 矿工配餐
- P2424 约数和
- UVa 11440 Help Tomisu 欧拉函数
- UVa 1575 Factors
- 三种求乘法逆元方法详解
- P1463 [SDOI2005]反素数ant
- cocos2d Anroid 打包Apk