ACdream原创群赛(12)のBUAA选拔赛
来源:互联网 发布:unity3d 画线插件 编辑:程序博客网 时间:2024/05/10 11:07
宣传下这个oj。
A
typedef long long LL ;const LL mod = 1000000007LL ;LL c[2028][2028] ;void Getc(){ c[0][0] = 1 ; for(int i = 1 ; i < 2028 ; i++){ c[i][0] = c[i][i] = 1 ; for(int j = 1 ; j < i ; j++){ c[i][j] = (c[i-1][j] + c[i-1][j-1]) % (mod - 1) ; } }}LL Pow(LL x , LL y){ LL s = 1 ; for(; y ; y >>=1){ if(y&1){ s *= x ; s %= mod ; } x *= x ; x %= mod ; } return s ;}LL answer(LL n , LL m){ if(n == 1) return m ; LL s = 1 ; for(LL i = 1 ; i <= m ; i++){ s *= Pow(i , n * c[n-1+m-i-1][n-1-1] % (mod-1)) ; s %= mod ; } return s ;}int main(){ Getc() ; int t ; LL n , m ; cin>>t ; while(t--){ scanf("%lld%lld" ,&n , &m) ; printf("%lld\n" , answer(n , m)) ; } return 0 ;}
B
D
F
typedef long long LL ;int c[20] ;int judge(LL x){ int t = 0 , i ; while(x){ c[t++] = x % 10 ; x /= 10 ; } for(i = t-1 ; i >= 1 ; i--){ if(c[i] == 6 && c[i-1] == 1) return 1 ; } return 0 ;} const int inf = 1000000000 ;int dp[6200] , father[6200] ;int a[6200] ; void make(){ int i , j , m = 0 ; fill(dp , dp+6170 , inf) ; memset(father , -1 , sizeof(father)) ; for(i = 1 ; i <= 6161 ; i++){ if(judge(i)) a[m++] = i ; } dp[0] = 0 ; for(i = 1 ; i <= 6161 ; i++){ for(j = 0 ; j < m && i >= a[j] ; j++){ if(dp[i] > dp[i - a[j]] + 1){ dp[i] = dp[i-a[j]] + 1 ; father[i] = i - a[j] ; } } }} void out(int x){ if(x){ out(father[x]) ; printf(" %d" , x - father[x]) ; }} int main(){ make() ; int i , j , t ; LL n , x , y ; cin>>t ; while(t--){ scanf("%lld" ,&n) ; if(judge(n)) printf("1 %lld\n" , n) ; else if(n <= 6161){ if(dp[n] == inf) printf("0") ; else printf("%d" , dp[n]) , out( (int)n ) ; puts("") ; } else{ x = 6100 ; y = 61 ; n -= 6161 ; x += (n%100) ; y += (n/100*100) ; printf("2 %lld %lld\n" , x , y) ; } } return 0 ;}
G
const double EPS = 1e-12 ;double add(double a, double b){ return (fabs(a + b) < EPS * (fabs(a) + fabs(b))) ? 0 : (a + b);} struct Point{ double x, y; Point(){} Point(double x, double y):x(x),y(y){} double operator ^(Point a){ return add(x * a.y ,- y * a.x ); } Point operator - (Point a){ return Point(add(x ,- a.x) , add(y ,- a.y)) ; } void read(){ scanf("%lf%lf" , &x ,&y) ; }}; struct Line{ Point st, ed; Line(){} Line(Point st, Point ed):st(st),ed(ed){} bool intersection(Line l){ double d1 = (ed -st)^(l.st - st) , d2 = (ed - st)^(l.ed - st) ; return d1 * d2 <= 0 ; }}; const int maxn = 58 ;Point dot[maxn*4] ;Line line[maxn] ;int n ;int answer(){ int i , j , k , t , s = 0 ; for(i = 1 ; i <= 2*n ; i++){ for(j = i+1 ; j <= 2*n ; j++){ t = 0 ; Line now = Line(dot[i] , dot[j]) ; for(k = 1 ; k <= n ; k++){ t += now.intersection(line[k]) ; } s = max(s , t) ; } } return s ;} int main() { int t , i ; cin>>t; while(t--){ cin>>n; for(i = 1 ; i <= n ; i++){ scanf("%lf%lf%lf%lf" ,&dot[i].x , &dot[i].y , &dot[i+n].x , &dot[i+n].y) ; line[i] = Line(dot[i] , dot[i+n]) ; } cout<< answer() << endl ; } return 0;}
const int maxn = 10008 ;int n , m ;int a[maxn] , b[maxn] , c[maxn] , in[maxn] ;vector<int> lis , g[maxn] ; int judge(int t){ int i , s = 0 ; for(i = 1 ; i <= n ; i++){ g[i].clear() ; in[i] = 0 ; } for(i = 1 ; i <= m ; i++){ if(c[i] > t){ g[b[i]].push_back(a[i]) ; in[a[i]]++ ; } } queue<int>q ; for(i = 1 ; i <= n ; i++){ if(in[i] == 0) q.push(i) ; } while(! q.empty()){ int u = q.front() ; q.pop() ; s++ ; for(i = 0 ; i < g[u].size() ; i++){ int v = g[u][i] ; if( --in[v] == 0 ) q.push(v) ; } } return s == n ;} int answer(){ sort(lis.begin() , lis.end()) ; int L = 0 , R = 1000000010 , M , i , s ; while(L <= R){ M = (L + R) >> 1 ; if(judge(M)){ s = M ; R = M - 1 ; } else L = M + 1 ; } return s ;} int main(){ int t , i ; cin>>t ; while(t--){ scanf("%d%d" ,&n ,&m) ; lis.clear() ; for(i = 1 ; i <= m ; i++){ scanf("%d%d%d" , &a[i] , &b[i] , &c[i]) ; lis.push_back(c[i]) ; } printf("%d\n" , answer()) ; } return 0;}
0 0
- ACdream原创群赛(12)のBUAA选拔赛
- [ACdream原创群赛(12)のBUAA选拔赛]E:签到
- ACdream原创群赛(12)のBUAA选拔赛 A - 梦
- 拓扑排序 I - barty的智商 acdream ACdream原创群赛(12)のBUAA选拔赛
- 数论 D - 寒假安排 --acdream ACdream原创群赛(12)のBUAA选拔赛
- 数论 A - 梦 -----acdream ACdream原创群赛(12)のBUAA选拔赛
- 【ACdream】ACdream原创群赛(18)のAK's dream
- BUAA集训队选拔赛
- [ACdream原创群赛の数树]解题报告
- ACdream原创群赛(13)のwuyiqi退役专场:LSS
- ACdream原创群赛(14)の我今天没吃药
- ACdream原创群赛(13)のwuyiqi退役专场
- ACdream原创群赛(14)の我今天没吃药
- ACdream原创群赛(18)のAK's dream
- ACdream原创群赛(18)のAK's dream
- ACdream原创群赛(18)のAK's dream
- ACdream原创群赛(13)のwuyiqi退役专场
- ACdream群原创群赛(3)
- OCP 1Z0 051 QUESTION NO: 10
- 关于Android Studio中第三方jar包的Javadoc绑定
- uva-10110
- 普林斯顿公开课 算法1-10:并查集-优化的快速合并方法
- WebBrowser多线程带来的麻烦
- ACdream原创群赛(12)のBUAA选拔赛
- android数据存储<三>-----Sqlite操作
- 黑马程序员_java的IO流五_18
- 普林斯顿公开课 算法1-11:并查集的应用
- TFS 2010 迁移/重装/还原 步骤
- OCP 1Z0 051 QUESTION NO: 11
- 应该记住的基本流程及其函数、背面剔除
- UITableView-多组数组展示
- webbrowser局部刷新完成的问题