1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<cstring> 8 #define inf 2147483647 9 #define For(i,a,b) for(register int i=a;i<=b;i++) 10 #define p(a) putchar(a) 11 #define g() getchar() 12 13 using namespace std; 14 int n,m,s,t; 15 int x,y,v; 16 int d[10010]; 17 struct node 18 { 19 int n; 20 int v; 21 node *next; 22 }*e[500010]; 23 queue<int>q; 24 bool vis[10010]; 25 26 void in(int &x) 27 { 28 int y=1; 29 char c=g();x=0; 30 while(c<'0'||c>'9') 31 { 32 if(c=='-') 33 y=-1; 34 c=g(); 35 } 36 while(c<='9'&&c>='0')x=x*10+c-'0',c=g(); 37 x*=y; 38 } 39 void o(int x) 40 { 41 if(x<0) 42 { 43 p('-'); 44 x=-x; 45 } 46 if(x>9)o(x/10); 47 p(x%10+'0'); 48 } 49 50 void push(int x,int y,int v) 51 { 52 node *p; 53 p=new node(); 54 p->n=y; 55 p->v=v; 56 if(e[x]==NULL) 57 e[x]=p; 58 else 59 { 60 p->next=e[x]->next; 61 e[x]->next=p; 62 } 63 } 64 65 void spfa(int x) 66 { 67 node *p; 68 For(i,1,n) 69 d[i]=inf; 70 d[x]=0; 71 q.push(x); 72 while(q.size()>0) 73 { 74 t=q.front(); 75 vis[t]=true; 76 for(node *i=e[t];i!=NULL;i=i->next) 77 { 78 if(d[t]+i->v<d[i->n]) 79 { 80 d[i->n]=d[t]+i->v; 81 if(!vis[i->n]) 82 q.push(i->n); 83 } 84 } 85 vis[t]=false; 86 q.pop(); 87 } 88 } 89 90 int main() 91 { 92 in(n);in(m);in(s); 93 For(i,1,m) 94 { 95 in(x);in(y);in(v); 96 push(x,y,v); 97 } 98 spfa(s); 99 For(i,1,n) 100 o(d[i]),p(' '); 101 return 0; 102 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define ls rt<<1 13 #define rs rt<<1|1 14 #define lson ls,nl,mid,l,r 15 #define rson rs,mid+1,nr,l,r 16 #define N 200010 17 #define For(i,a,b) for(register long long i=a;i<=b;i++) 18 #define p(a) putchar(a) 19 #define g() getchar() 20 21 using namespace std; 22 long long n,m,s; 23 long long x,y,v; 24 bool vis[N]; 25 26 struct node{ 27 long long n; 28 long long v; 29 node *next; 30 }*e[N]; 31 32 struct Node 33 { 34 long long i; 35 long long d; 36 bool operator < (const Node&temp)const{ 37 return d>temp.d; 38 } 39 }a[N]; 40 41 priority_queue<Node>q; 42 43 void in(long long &x){ 44 long long y=1; 45 char c=g();x=0; 46 while(c<'0'||c>'9'){ 47 if(c=='-')y=-1; 48 c=g(); 49 } 50 while(c<='9'&&c>='0'){ 51 x=(x<<1)+(x<<3)+c-'0';c=g(); 52 } 53 x*=y; 54 } 55 void o(long long x){ 56 if(x<0){ 57 p('-'); 58 x=-x; 59 } 60 if(x>9)o(x/10); 61 p(x%10+'0'); 62 } 63 64 void push(long long x,long long y,long long v){ 65 node *p; 66 p=new node(); 67 p->n=y; 68 p->v=v; 69 if(e[x]==NULL) 70 e[x]=p; 71 else{ 72 p->next=e[x]->next; 73 e[x]->next=p; 74 } 75 } 76 77 void hd(){ 78 a[s].d=0; 79 q.push(a[s]); 80 while(!q.empty()){ 81 long long t=q.top().i; 82 q.pop(); 83 if(vis[t])continue; 84 vis[t]=true; 85 for(register node *i=e[t];i;i=i->next){ 86 if(a[t].d+i->v<a[i->n].d){ 87 a[i->n].d=a[t].d+i->v; 88 q.push(a[i->n]); 89 } 90 } 91 } 92 } 93 94 int main(){ 95 in(n);in(m);in(s); 96 97 For(i,1,m){ 98 in(x);in(y);in(v); 99 push(x,y,v); 100 } 101 102 For(i,1,n){ 103 a[i].i=i; 104 a[i].d=inf; 105 } 106 hd(); 107 For(i,1,n){ 108 o(a[i].d); 109 p(' '); 110 } 111 return 0; 112 }
1 // luogu-judger-enable-o2 2 #include<iostream> 3 #include<cstdio> 4 #include<queue> 5 #include<algorithm> 6 #include<cmath> 7 #include<ctime> 8 #include<set> 9 #include<map> 10 #include<stack> 11 #include<cstring> 12 #define inf 2147483647 13 #define For(i,a,b) for(register long long i=a;i<=b;i++) 14 #define p(a) putchar(a) 15 #define g() getchar() 16 17 using namespace std; 18 long long T; 19 long long x,y,v; 20 long long n,m; 21 bool flag; 22 bool vis[2010]; 23 long long d[2010]; 24 int num[2010]; 25 26 struct node 27 { 28 long long n; 29 long long v; 30 node *next; 31 }*e[400010]; 32 queue<int>q; 33 34 void in(long long &x) 35 { 36 long long y=1; 37 char c=g();x=0; 38 while(c<'0'||c>'9') 39 { 40 if(c=='-') 41 y=-1; 42 c=g(); 43 } 44 while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=g(); 45 x*=y; 46 } 47 void o(long long x) 48 { 49 if(x<0) 50 { 51 p('-'); 52 x=-x; 53 } 54 if(x>9)o(x/10); 55 p(x%10+'0'); 56 } 57 58 inline void push(long long x,long long y,long long v) 59 { 60 node *p; 61 p=new node(); 62 p->n=y; 63 p->v=v; 64 if(e[x]==NULL) 65 e[x]=p; 66 else 67 { 68 p->next=e[x]->next; 69 e[x]->next=p; 70 } 71 } 72 73 inline void spfa(long long x){ 74 q.push(x); 75 vis[x]=true; 76 num[1]++; 77 while(!q.empty()){ 78 int t=q.front();q.pop(); 79 vis[t]=true; 80 for(node *i=e[t];i;i=i->next){ 81 82 if(d[i->n]>d[t]+i->v){ 83 d[i->n]=d[t]+i->v; 84 num[i->n]++; 85 if(num[i->n]>=n){ 86 flag=true; 87 return; 88 } 89 if(!vis[i->n]){ 90 q.push(i->n); 91 vis[i->n]=true; 92 } 93 } 94 95 } 96 vis[t]=false; 97 } 98 } 99 100 int main() 101 { 102 in(T); 103 while(T--) 104 { 105 in(n),in(m); 106 107 For(i,1,n) 108 e[i]=NULL,vis[i]=false,d[i]=inf,num[i]=0; 109 while(!q.empty()) 110 q.pop(); 111 flag=false; 112 113 For(i,1,m){ 114 in(x),in(y),in(v); 115 push(x,y,v); 116 if(v>=0) 117 push(y,x,v); 118 } 119 120 d[1]=0; 121 spfa(1); 122 123 if(flag) 124 puts("YE5"); 125 else 126 puts("N0"); 127 } 128 return 0; 129 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define For(i,a,b) for(register int i=a;i<=b;i++) 13 #define p(a) putchar(a) 14 #define g() getchar() 15 //by war 16 //2017.11.9 17 using namespace std; 18 int f[100010][20]; 19 int n,m; 20 int x,y; 21 void in(int &x) 22 { 23 int y=1; 24 char c=g();x=0; 25 while(c<'0'||c>'9') 26 { 27 if(c=='-') 28 y=-1; 29 c=g(); 30 } 31 while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=g(); 32 x*=y; 33 } 34 void o(int x) 35 { 36 if(x<0) 37 { 38 p('-'); 39 x=-x; 40 } 41 if(x>9)o(x/10); 42 p(x%10+'0'); 43 } 44 45 void st() 46 { 47 int ind=log2(n); 48 For(j,1,ind) 49 For(i,1,n-(1<<j)+1) 50 f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]); 51 } 52 53 int query(int l,int r) 54 { 55 int ind=log2(r-l+1); 56 return max(f[l][ind],f[r-(1<<ind)+1][ind]); 57 } 58 59 int main() 60 { 61 in(n),in(m); 62 For(i,1,n) 63 { 64 in(x); 65 f[i][0]=x; 66 } 67 st(); 68 For(i,1,m) 69 { 70 in(x),in(y); 71 o(query(x,y)),p('\n'); 72 } 73 return 0; 74 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define ls rt<<1 13 #define rs rt<<1|1 14 #define lson ls,nl,mid,l,r 15 #define rson rs,mid+1,nr,l,r 16 #define N 100010 17 #define For(i,a,b) for(int i=a;i<=b;i++) 18 #define p(a) putchar(a) 19 #define g() getchar() 20 21 using namespace std; 22 int n,m,x,y,cnt; 23 int dfn[20010],low[20010]; 24 int del[20010]; 25 26 struct node{ 27 int n; 28 node *next; 29 }*e[200010]; 30 31 void in(int &x){ 32 int y=1; 33 char c=g();x=0; 34 while(c<'0'||c>'9'){ 35 if(c=='-')y=-1; 36 c=g(); 37 } 38 while(c<='9'&&c>='0'){ 39 x=(x<<1)+(x<<3)+c-'0';c=g(); 40 } 41 x*=y; 42 } 43 void o(int x){ 44 if(x<0){ 45 p('-'); 46 x=-x; 47 } 48 if(x>9)o(x/10); 49 p(x%10+'0'); 50 } 51 52 void push(int x,int y){ 53 node *p; 54 p=new node(); 55 p->n=y; 56 if(e[x]==0) 57 e[x]=p; 58 else{ 59 p->next=e[x]->next; 60 e[x]->next=p; 61 } 62 } 63 64 void tarjan(int x,int fa){ 65 int child=0; 66 dfn[x]=low[x]=++cnt; 67 for(node *i=e[x];i;i=i->next){ 68 if(!dfn[i->n]){ 69 tarjan(i->n,fa); 70 low[x]=min(low[x],low[i->n]); 71 if(x==fa) 72 child++; 73 if(low[i->n]>=dfn[x]&&x!=fa) 74 del[x]=1; 75 } 76 low[x]=min(low[x],dfn[i->n]); 77 } 78 if(child>1&&x==fa) 79 del[x]=1; 80 } 81 82 int main(){ 83 in(n);in(m); 84 For(i,1,m){ 85 in(x);in(y); 86 push(x,y); 87 push(y,x); 88 } 89 For(i,1,n) 90 if(!dfn[i]) 91 tarjan(i,i); 92 cnt=0; 93 For(i,1,n) 94 if(del[i])++cnt; 95 o(cnt);p('\n'); 96 97 For(i,1,n) 98 if(del[i]) 99 o(i),p(' '); 100 return 0; 101 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define For(i,a,b) for(register long long i=a;i<=b;i++) 13 #define p(a) putchar(a) 14 #define g() getchar() 15 //by war 16 //2017.11.9 17 using namespace std; 18 long long a[3000010]; 19 long long p; 20 long long n; 21 void in(long long &x) 22 { 23 long long y=1; 24 char c=g();x=0; 25 while(c<'0'||c>'9') 26 { 27 if(c=='-') 28 y=-1; 29 c=g(); 30 } 31 while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=g(); 32 x*=y; 33 } 34 void o(long long x) 35 { 36 if(x<0) 37 { 38 p('-'); 39 x=-x; 40 } 41 if(x>9)o(x/10); 42 p(x%10+'0'); 43 } 44 int main() 45 { 46 in(n),in(p); 47 a[1]=1; 48 o(1),p('\n'); 49 For(i,2,n) 50 { 51 a[i]=(p-p/i)*a[p%i]%p; 52 o(a[i]),p('\n'); 53 } 54 return 0; 55 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define For(i,a,b) for(long long i=a;i<=b;i++) 13 #define p(a) putchar(a) 14 #define g() getchar() 15 #define N 100010 16 using namespace std; 17 long long a[N],n,m,x,y,k,f,P; 18 19 struct seg{ 20 long long add; 21 long long mul=1; 22 long long sum; 23 }s[N<<3]; 24 25 void in(long long &x){ 26 long long y=1; 27 char c=g();x=0; 28 while(c<'0'||c>'9'){ 29 if(c=='-')y=-1; 30 c=g(); 31 } 32 while(c<='9'&&c>='0'){ 33 x=(x<<1)+(x<<3)+c-'0';c=g(); 34 } 35 x*=y; 36 } 37 void o(long long x){ 38 if(x<0){ 39 p('-'); 40 x=-x; 41 } 42 if(x>9)o(x/10); 43 p(x%10+'0'); 44 } 45 46 void build(long long rt,long long l,long long r){ 47 if(l==r){ 48 s[rt].sum=a[l]; 49 return; 50 } 51 long long mid=(l+r)>>1; 52 build(rt<<1, l, mid); 53 build(rt<<1|1, mid+1, r); 54 s[rt].sum=(s[rt<<1].sum+s[rt<<1|1].sum)%P; 55 } 56 57 void pushdown(long long rt,long long l,long long r){ 58 if(s[rt].add||s[rt].mul^1){ 59 long long mid=(l+r)>>1; 60 s[rt<<1].mul=(s[rt<<1].mul*s[rt].mul)%P; 61 s[rt<<1|1].mul=(s[rt<<1|1].mul*s[rt].mul)%P; 62 s[rt<<1].add=(s[rt<<1].add*s[rt].mul+s[rt].add)%P; 63 s[rt<<1|1].add=(s[rt<<1|1].add*s[rt].mul+s[rt].add)%P; 64 s[rt<<1].sum=(s[rt<<1].sum*s[rt].mul+(mid-l+1)*s[rt].add)%P; 65 s[rt<<1|1].sum=(s[rt<<1|1].sum*s[rt].mul+(r-mid)*s[rt].add)%P; 66 s[rt].add=0; 67 s[rt].mul=1; 68 } 69 } 70 71 void update_mul(long long rt,long long nl,long long nr,long long l,long long r,long long k){ 72 if(nl>r||nr<l)return; 73 pushdown(rt,nl,nr); 74 if(nl>=l&&nr<=r){ 75 s[rt].mul= (s[rt].mul*k)%P; 76 s[rt].add=(s[rt].add*k)%P; 77 s[rt].sum=(s[rt].sum*k)%P; 78 return; 79 } 80 long long mid=(nl+nr)>>1; 81 update_mul(rt<<1, nl, mid, l, r, k); 82 update_mul(rt<<1|1, mid+1, nr, l, r, k); 83 s[rt].sum=(s[rt<<1].sum+s[rt<<1|1].sum)%P; 84 } 85 86 void update_sum(long long rt,long long nl,long long nr,long long l,long long r,long long k){ 87 if(nl>r||nr<l)return; 88 pushdown(rt,nl,nr); 89 if(nl>=l&&nr<=r){ 90 s[rt].add= (s[rt].add+k)%P; 91 s[rt].sum=(s[rt].sum+(nr-nl+1)*k)%P; 92 return; 93 } 94 long long mid=(nl+nr)>>1; 95 update_sum(rt<<1, nl, mid, l, r, k); 96 update_sum(rt<<1|1, mid+1, nr, l, r, k); 97 s[rt].sum=(s[rt<<1].sum+s[rt<<1|1].sum)%P; 98 } 99 100 long long sum(long long rt,long long nl,long long nr,long long l,long long r) { 101 if(nl>r||nr<l)return 0; 102 pushdown(rt, nl, nr); 103 if(nl>=l&&nr<=r) return s[rt].sum%P; 104 long long mid=(nl+nr)>>1; 105 return (sum(rt<<1, nl, mid, l, r)+sum(rt<<1|1, mid+1, nr, l, r))%P; 106 } 107 108 int main(){ 109 in(n);in(m);in(P); 110 For(i, 1, n)in(a[i]); 111 build(1, 1, n); 112 For(i, 1, m){ 113 in(f);in(x);in(y); 114 if(f==1){ 115 in(k); 116 update_mul(1,1,n,x,y,k); 117 } 118 if(f==2){ 119 in(k); 120 update_sum(1,1,n,x,y,k); 121 } 122 if(f==3){ 123 o(sum(1,1,n,x,y)); 124 p('\n'); 125 } 126 } 127 return 0; 128 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define For(i,a,b) for(register long long i=a;i<=b;i++) 13 #define p(a) putchar(a) 14 #define g() getchar() 15 #define MOD1 1000000007 16 #define MOD2 1000000009 17 #define base 31 18 //by war 19 //2017.11.6 20 using namespace std; 21 struct ha 22 { 23 long long o; 24 long long t; 25 bool operator<(const ha&a)const 26 { 27 return o<a.o; 28 } 29 }h[10010]; 30 char a[1510]; 31 long long n; 32 long long ans; 33 void in(long long &x) 34 { 35 long long y=1; 36 char c=g();x=0; 37 while(c<'0'||c>'9') 38 { 39 if(c=='-') 40 y=-1; 41 c=g(); 42 } 43 while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=g(); 44 x*=y; 45 } 46 void o(long long x) 47 { 48 if(x<0) 49 { 50 p('-'); 51 x=-x; 52 } 53 if(x>9)o(x/10); 54 p(x%10+'0'); 55 } 56 57 long long hash(long long mod) 58 { 59 long long ans=0; 60 long long len=strlen(a+1); 61 For(i,1,len) 62 ans=((ans*base)+a[i])%mod; 63 return ans; 64 } 65 66 int main() 67 { 68 in(n); 69 For(i,1,n) 70 { 71 cin>>(a+1); 72 h[i].o=hash(MOD1); 73 h[i].t=hash(MOD2); 74 } 75 sort(h+1,h+n+1); 76 For(i,2,n) 77 if(h[i].o!=h[i-1].o||h[i].t!=h[i-1].t) 78 ans++; 79 o(ans+1); 80 return 0; 81 }
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int n,m,cnt; 5 bool vis[10000010]; 6 int prime[1000010]; 7 int x; 8 void E( ) 9 { 10 vis[1]=true; 11 for(int i=2;i<=n;i++) 12 { 13 if(!vis[i])prime[++cnt]=i; 14 for(int j=1;j<=cnt&&prime[j]*i<=n;j++) 15 { 16 vis[prime[j]*i]=true; 17 if(i%prime[j]==0)break; 18 } 19 } 20 } 21 int main( ) 22 { 23 cin>>n>>m; 24 E( ); 25 for(int i=1;i<=m;i++) 26 { 27 cin>>x; 28 if(!vis[x]) 29 printf("Yes\n"); 30 else 31 printf("No\n"); 32 } 33 return 0; 34 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define For(i,a,b) for(register int i=a;i<=b;i++) 13 #define p(a) putchar(a) 14 #define g() getchar() 15 //by war 16 //2017.11.9 17 using namespace std; 18 int t[500010]; 19 int n,m; 20 int flag,x,y,k; 21 int pre; 22 void in(int &x) 23 { 24 int y=1; 25 char c=g();x=0; 26 while(c<'0'||c>'9') 27 { 28 if(c=='-') 29 y=-1; 30 c=g(); 31 } 32 while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=g(); 33 x*=y; 34 } 35 void o(int x) 36 { 37 if(x<0) 38 { 39 p('-'); 40 x=-x; 41 } 42 if(x>9)o(x/10); 43 p(x%10+'0'); 44 } 45 46 void modify(int k,int change) 47 { 48 for(;k<=n;k+=(-k)&k) 49 t[k]+=change; 50 } 51 52 int get(int k) 53 { 54 int cnt=0; 55 for(;k>0;k-=(-k)&k) 56 cnt+=t[k]; 57 return cnt; 58 } 59 60 int main() 61 { 62 in(n),in(m); 63 For(i,1,n) 64 { 65 in(x); 66 modify(i,x-pre); 67 pre=x; 68 } 69 For(i,1,m) 70 { 71 in(flag); 72 if(flag==1) 73 { 74 in(x),in(y),in(k); 75 modify(x,k); 76 modify(y+1,-k); 77 } 78 else 79 { 80 in(x); 81 o(get(x)),p('\n'); 82 } 83 } 84 return 0; 85 }
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<algorithm> 5 #include<cmath> 6 #include<ctime> 7 #include<set> 8 #include<map> 9 #include<stack> 10 #include<cstring> 11 #define inf 2147483647 12 #define For(i,a,b) for(int i=a;i<=b;i++) 13 #define p(a) putchar(a) 14 #define g() getchar() 15 16 using namespace std; 17 int t[10000100],n,m,cz,x,y,k,f,ans; 18 void in(int &x) 19 { 20 int y=1; 21 char c=g();x=0; 22 while(c<'0'||c>'9') 23 { 24 if(c=='-') 25 y=-1; 26 c=g(); 27 } 28 while(c<='9'&&c>='0') 29 { 30 x=(x<<1)+(x<<3)+c-'0';c=g(); 31 } 32 x*=y; 33 } 34 void o(int x) 35 { 36 if(x<0) 37 { 38 p('-'); 39 x=-x; 40 } 41 if(x>9)o(x/10); 42 p(x%10+'0'); 43 } 44 int main() 45 { 46 in(n);in(cz); 47 for(m=1;m<=n;m<<=1); 48 For(i, m+1, m+n) 49 in(t[i]); 50 for(int i=m-1;i;i--) 51 t[i]=t[i<<1]+t[i<<1|1]; 52 For(jj,1,cz) 53 { 54 in(f); 55 if(f==1) 56 { 57 in(x);in(k); 58 for(t[x+=m]+=k,x>>=1;x;x>>=1) 59 t[x]=t[x<<1]+t[x<<1|1]; 60 } 61 else 62 { 63 in(x);in(y); 64 ans=0; 65 for(int l=x+m-1,r=y+m+1;l^r^1;l>>=1,r>>=1) 66 { 67 if(~l&1)ans+=t[l^1]; 68 if(r&1)ans+=t[r^1]; 69 } 70 o(ans);p('\n'); 71 } 72 } 73 return 0; 74 }
#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #include<set> #include<map> #include<stack> #include<cstring> #define inf 2147483647 #define For(i,a,b) for(register long long i=a;i<=b;i++) #define p(a) putchar(a) #define g() getchar() //by war //2019.8.15 using namespace std; long long a[200010]; long long n,m,p; long long T; void in(long long &x){ long long y=1;char c=getchar();x=0; while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();} while(c<='9'&&c>='0'){ x=(x<<1)+(x<<3)+c-'0';c=getchar();} x*=y; } void o(long long x){ if(x<0){p('-');x=-x;} if(x>9)o(x/10); p(x%10+'0'); } long long ksm(long long a,long long b){ long long r=1; while(b>0){ if(b%2==1) r=r*a%p; a=a*a%p; b>>=1; } return r; } long long c(long long n,long long m){ if(n<m) return 0; return a[n]*ksm(a[n-m]*a[m]%p,p-2)%p; } long long lucas(long long n,long long m){ if(!m) return 1; return c(n%p,m%p)*lucas(n/p,m/p)%p; } int main(){ in(T); a[0]=1; while(T--){ in(n);in(m);in(p); For(i,1,n+m) a[i]=a[i-1]*i%p; o(lucas(n+m,m)%p);p('\n'); } return 0; }
1 #include <iostream> 2 #include <cstdio> 3 #include <queue> 4 #include <algorithm> 5 #include <cmath> 6 #include <cstring> 7 #define inf 2147483647 8 #define N 1000010 9 #define p(a) putchar(a) 10 #define For(i,a,b) for(long long i=a;i<=b;++i) 11 12 using namespace std; 13 long long l,r; 14 long long prime[N],f[N],g[N],cnt,ans; 15 bool vis[N]; 16 void in(long long &x){ 17 long long y=1;char c=getchar();x=0; 18 while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();} 19 while(c<='9'&&c>='0'){ x=(x<<1)+(x<<3)+c-'0';c=getchar();} 20 x*=y; 21 } 22 void o(long long x){ 23 if(x<0){p('-');x=-x;} 24 if(x>9)o(x/10); 25 p(x%10+'0'); 26 } 27 28 void Euler(){ 29 For(i,2,r){ 30 if(!vis[i]){ 31 prime[++cnt]=i; 32 f[i]=g[i]=i+1; 33 vis[i]=1; 34 } 35 for(long long j=1;j<=cnt&&i*prime[j]<=r;j++){ 36 vis[i*prime[j]]=1; 37 if(i%prime[j]==0){ 38 g[i*prime[j]]=g[i]*prime[j]+1; 39 f[i*prime[j]]=f[i]/g[i]*g[i*prime[j]]; 40 break; 41 } 42 else{ 43 g[i*prime[j]]=prime[j]+1; 44 f[i*prime[j]]=f[i]*f[prime[j]]; 45 } 46 } 47 } 48 } 49 int main(){ 50 in(l);in(r); 51 Euler(); 52 For(i,l,r) 53 ans+=f[i]; 54 o(ans); 55 return 0; 56 }
#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #include<set> #include<map> #include<stack> #include<cstring> #define inf 2147483647 #define For(i,a,b) for(long long i=a;i<=b;i++) #define p(a) putchar(a) #define g() getchar() #define mod 1000000007 //by war //2017.11.6 using namespace std; long long n,k; struct matrix{ long long a[110][110]; matrix operator*(const matrix&b)const{ matrix r; For(i,1,n) For(j,1,n){ r.a[i][j]=0; For(k,1,n) r.a[i][j]=(r.a[i][j]+a[i][k]*b.a[k][j])%mod; } return r; } }a; void in(long long &x) { long long y=1; char c=g();x=0; while(c<'0'||c>'9') { if(c=='-') y=-1; c=g(); } while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=g(); x*=y; } void o(long long x) { if(x<0) { p('-'); x=-x; } if(x>9)o(x/10); p(x%10+'0'); } matrix ksm(matrix a,long long b){ matrix r=a;b--; while(b>0){ if(b%2==1) r=r*a; a=a*a; b>>=1; } return r; } int main(){ in(n),in(k); For(i,1,n) For(j,1,n) in(a.a[i][j]); matrix r=ksm(a,k); For(i,1,n){ For(j,1,n) o(r.a[i][j]),p(' '); p('\n'); } return 0; }
#include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #include<set> #include<map> #include<stack> #include<cstring> #define inf 2147483647 #define For(i,a,b) for(long long i=a;i<=b;i++) #define p(a) putchar(a) #define g() getchar() #define N 100010 using namespace std; long long a[N],n,m,k,x,y,f; struct seg{ long long mark; long long sum; }s[N<<3]; inline void in(long long &x) { long long y=1; char c=g();x=0; while(c<'0'||c>'9') { if(c=='-') y=-1; c=g(); } while(c<='9'&&c>='0') { x=(x<<1)+(x<<3)+c-'0';c=g(); } x*=y; } inline void o(long long x) { if(x<0) { p('-'); x=-x; } if(x>9)o(x/10); p(x%10+'0'); } inline void build(long long rt,long long l,long long r){ if(l==r){ s[rt].sum=a[l]; return; } long long mid=(l+r)>>1; build(rt<<1, l, mid); build(rt<<1|1, mid+1, r); s[rt].sum=s[rt<<1].sum+s[rt<<1|1].sum; } inline void pushdown(long long rt,long long l,long long r){ if(s[rt].mark){ long long mid=(l+r)>>1; s[rt<<1].mark+=s[rt].mark; s[rt<<1|1].mark+=s[rt].mark; s[rt<<1].sum+=(mid-l+1)*s[rt].mark; s[rt<<1|1].sum+=(r-mid)*s[rt].mark; s[rt].mark=0; } } inline void update(long long rt,long long nl,long long nr,long long l,long long r,long long k){ if(nr<l||nl>r)return; if(nl>=l&&nr<=r){ s[rt].mark+=k; s[rt].sum+=(nr-nl+1)*k; return; } pushdown(rt,nl,nr); long long mid=(nl+nr)>>1; update(rt<<1, nl, mid, l, r, k); update(rt<<1|1, mid+1, nr, l, r, k); s[rt].sum=s[rt<<1].sum+s[rt<<1|1].sum; } inline long long sum(long long rt,long long nl,long long nr,long long l,long long r){ if(nl>r||nr<l)return 0; pushdown(rt, nl, nr); if(nl>=l&&nr<=r)return s[rt].sum; long long mid=(nl+nr)>>1; return sum(rt<<1, nl, mid, l, r)+sum(rt<<1|1, mid+1, nr, l, r); } int main() { in(n);in(m); For(i,1,n) in(a[i]); build(1,1,n); For(i,1,m){ in(f);in(x);in(y); if(f==1){ in(k); update(1,1,n,x,y,k); } else{ o(sum(1,1,n,x,y));p('\n'); } } return 0; }
#include <bits/stdc++.h> #define inf 2333333333333333 #define N 1000010 #define p(a) putchar(a) #define For(i,a,b) for(int i=a;i<=b;++i) //by war //2020.8.3 using namespace std; int n,x,y,m; int c[N],son[N],sz[N],ans[N],sum; bool vis[N]; struct node{ int n; node *next; }*e[N]; void in(int &x){ int y=1;char c=getchar();x=0; while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();} while(c<='9'&&c>='0'){ x=(x<<1)+(x<<3)+c-'0';c=getchar();} x*=y; } void o(int x){ if(x<0){p('-');x=-x;} if(x>9)o(x/10); p(x%10+'0'); } void push(int x,int y){ node *p; p=new node(); p->n=y; if(e[x]==0) e[x]=p; else{ p->next=e[x]->next; e[x]->next=p; } } void clean(int x,int fa){ vis[c[x]]=0; for(node *i=e[x];i;i=i->next){ if(i->n==fa) continue; clean(i->n,x); } } void dfs1(int x,int fa){ sz[x]=1; for(node *i=e[x];i;i=i->next){ if(i->n==fa) continue; dfs1(i->n,x); sz[x]+=sz[i->n]; if(sz[i->n]>sz[son[x]]) son[x]=i->n; } } void dfs3(int x,int fa,int so){ for(node *i=e[x];i;i=i->next){ if(i->n==fa || i->n==so) continue; dfs3(i->n,x,so); } //todo:计算答案 if(!vis[c[x]]){ vis[c[x]]=1; sum++; } } void dfs2(int x,int fa){ for(node *i=e[x];i;i=i->next){ if(i->n==fa || i->n==son[x]) continue; dfs2(i->n,x); clean(i->n,x); sum=0; } if(son[x]) dfs2(son[x],x); dfs3(x,fa,son[x]); ans[x]=sum; return; } signed main(){ in(n); For(i,1,n-1){ in(x);in(y); push(x,y); push(y,x); } For(i,1,n) in(c[i]); dfs1(1,1); dfs2(1,1); in(m); while(m--){ in(x); o(ans[x]);p('\n'); } return 0; }