摘要: 数学题,证明可以看DISCUSS.
#include <stdio.h>#include <math.h>const int MAX = 50000;int prime[MAX];int number[MAX];int find ( int n ... 阅读全文
摘要: 计算几何
#include <stdio.h>#include <stdlib.h>const int LEN = 1010;struct{ int flag; int up; &... 阅读全文
摘要: 线段树+状态压缩
#include <stdio.h>const int LEN = 100005;struct NODE{ int b, e; int ls, rs; &... 阅读全文
摘要: 有向图的弱连通分支,用的是强连通分支+缩点。
#include <stdio.h>const int LEN = 1005;int flag; //强连通分支标号struct HEAD //结点头{ int state; //搜索... 阅读全文
昨天看到很多ACMER的BLOG都讲的挺详细的,回头看看自己的博客真的好简陋啊,但是我觉得最好的描述还是代码,一个人的代码阅读能力是他整体实力的表现,呵呵。 2726是一个快排的题目。
#include "stdio.h" int h[10005][3]; int pc[10005]; void swap(int a,int b) { int t0,t1,t2; t0=h[a][0]; t1=h[a][1]; t2=h[a][2]; h[a][0]=h[b][0]; h[a][1]=h[b][1]; h[a][2]=h[b][2]; h[b][0]=t0; h[b][1]=t1; h[b][2]=t2; } int partion(int low,int high,int p,int m) { while(low<=high) { if(low<p) { if(h[low][m]>h[p][m]){swap(low,p);p=low;} low++; } else { if(high>p) { if(h[high][m]<h[p][m]){swap(high,p);p=high;} } high--; } } return p; } void qsort(int left,int right,int m) { int middle; if(left<right) { middle=(left+right)/2; middle=partion(left,right,middle,m); qsort(left,middle-1,m); qsort(middle+1,right,m); } } int main() { int i,n,minc,count; while(1) { scanf("%d",&n); if(n==0)break; for(i=0;i<n;i++) { scanf("%d%d",&h[i][0],&h[i][1]); h[i][2]=i; } qsort(0,n-1,0); minc=h[0][1]; count=0; for(i=0;i<n;i++)pc[i]=0; pc[h[0][2]]=1; for(i=1;i<n;i++) { if(h[i][1]<minc){pc[h[i][2]]=1;minc=h[i][1];} } qsort(0,n-1,1); minc=h[0][0]; if(pc[h[0][2]]==1){count++;} for(i=1;i<n;i++) { if(h[i][0]<minc) { minc=h[i][0]; if(pc[h[i][2]]==1){count++;} } } printf("%d\n",count); } return 0; }
摘要: 计算几何
#include <stdio.h>#include <stdlib.h>const int LEN = 205;typedef struct{ int x; int y; ... 阅读全文
什么题目我也忘记了
#include <stdio.h>
const int LEN = 1000005;
int aa[LEN];
int bb[LEN];
int cc[LEN];
void add ( int *a, int *b, int *c, int len ) {
int carry = 0; for ( int i=len; i>=1; i-- ) { int sum = a[i] + b[i] + carry; c[i] = sum % 10; carry = sum / 10; } c[0] = carry; }
void print ( int *c, int len ) {
if ( c[0] ) { printf ( "%d", c[0] ); } for ( int i=1; i<=len; i++ ) { printf ( "%d", c[i] ); } printf ( "\n" ); }
int main () {
int n;
while ( scanf ( "%d", &n ) != EOF ) { for ( int i=1; i<=n; i++ ) { scanf ( "%d%d", &aa[i], &bb[i] ); }
add ( aa, bb, cc, n ); print ( cc, n ); } return 0; }
摘要: 二分匹配
#include <stdio.h>#include<string.h>const int M = 505;bool canmatch[M][M];void initm ( int left, int right ){ &n... 阅读全文
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 |
|
公告
决定从线程开始!!
常用链接
留言簿(6)
随笔档案
搜索
最新评论
阅读排行榜
评论排行榜
|
|