高斯消元,可以直接消的
1 #include2 #include3 #include4 #include5view code#define maxn 45*45
6#define for(i,x,y) for(register int i=x;i<=y;i++)
7using
namespace
std;
8int
x,y;
9int
a[maxn][maxn];
10int c(int x,int y)
11int d[5]=;
12void
init()23}
24 a[c(i,j)][c(x,y)+1]=0;25
}26}27
}28int ans[45][45
];29
void guass(int m,int
n)38
continue;39
}40if(i!=line)swap(a[i],a[line]);
41for(i=1;i<=m;i++)47}
48}49 line++;50}
51 line=1
;52 for(i,1
,x)
58else61}
62}63}
64void
solve()
70 printf("
%d\n
",ans[i][y]);71}
72}73int
main()
74
注意到第一行會決定第二行,第二行會決定第三行,然後處理最後一行,讓它符合即可,這樣方程數目少了乙個平方
1 #include2 #include3 #include4 #include5view code#define maxn 45
6#define for(i,x,y) for(register int i=x;i<=y;i++)
7#define ll long long
8using
namespace
std;
9int
x,y;
10ll t[maxn][maxn];
11int a[maxn<<1
][maxn];
12int
ans[maxn][maxn];
13void guass(int n,int
m)22
continue;23
}24if(i!=line)swap(a[i],a[line]);
25for(i=1;i<=n;i++)31}
32}33 line++;34}
35 line=1
;36 for(k,1
,n)41
else44}
45}46void
init()53}
54 ll p;int
k;55 for(j,1
,y)60}61
}62}63
void
solve()
69//
printf("\n");
70//
}71 for(i,2
,x)75
}
76 for(i,1
,x)80 printf("
%d\n
",ans[i][y]);81}
82}83int
main()
84
洛谷P2014 選課
題目描述 在大學裡每個學生,為了達到一定的學分,必須從很多課程裡選擇一些課程來學習,在課程裡有些課程必須在某些課程之前學習,如高等數學總是在其它課程之前學習。現在有n門功課,每門課有個學分,每門課有一門或沒有直接先修課 若課程a是課程b的先修課即只有學完了課程a,才能學習課程b 乙個學生要從這些課程...
洛谷P2014 選課
又是一道樹型dp,不過這次是以點帶權值,因為根是不確定的,我們可以設個虛根 0 因為算是多了一點,所以總點數應該 因為是點帶權值,所以不用dfs邊的數量了,不過有一點虛注意,因為多了乙個點,所以j層迴圈 所選的邊數 下界應該是到2的。include include using namespace s...
洛谷P2014 選課
題目描述 在大學裡每個學生,為了達到一定的學分,必須從很多課程裡選擇一些課程來學習,在課程裡有些課程必須在某些課程之前學習,如高等數學總是在其它課程之前學習。現在有n門功課,每門課有個學分,每門課有一門或沒有直接先修課 若課程a是課程b的先修課即只有學完了課程a,才能學習課程b 乙個學生要從這些課程...