1001 Is Derek lying

题目链接 HDU6045 Is Derek lying?

给出两个人选择题的回答,问得分分别为x和y是否可能。(\(1\le N \le 80000,0\le x,y \le N\))

答案相同的部分,得分一定一样;答案不同的部分(dif个),是造成差距的地方。差距不可能超过不同的个数。分低者(y分)若成绩超过相同部分,那么不同部分也拿了分(y-sam)。分高者最多还能拿剩下的不同部分的分(dif-(y-sam))。也就是最大分差为dif-(y-sam)-(y-sam)。

  1. #include <bits/stdc++.h>
  2. #define N 100001
  3. using namespace std;
  4. int t;
  5. int n,x,y;
  6. char s1[N],s2[N];
  7. int main(){
  8. scanf("%d",&t);
  9. while(t--){
  10. scanf("%d%d%d%s%s",&n,&x,&y,s1,s2);
  11. if(x<y)swap(x,y);
  12. int dif=0,sam=0;
  13. for(int i=0;i<n;++i)if(s1[i]!=s2[i])++dif;else ++sam;
  14. if(x-y>dif||y>sam&&dif-(y-sam)*2<x-y)puts("Lying");
  15. else puts("Not lying");
  16. }
  17. return 0;
  18. }

1002 hash(哈希)

题目链接 HDU6046 hash

用函数f(i,j)生成了一个\(1e6*1e6\)的随机01矩阵。给你\(1000*1000\)的01矩阵,求其左上角在原矩阵中的位置。

每隔L行L列生成一个\(K*K\)的识别矩阵,要令给出的矩阵中一定存在这个识别矩阵,根据容斥原理,有\(K+L\le 1000\),令K为7,得到L。然后找出了识别矩阵在给定矩阵中的位置,就能判断给定矩阵在原矩阵中的位置了。

  1. #include <bits/stdc++.h>
  2. #define N 1000
  3. #define K 7
  4. using namespace std;
  5. #define LL long long
  6. int t,cas;
  7. char s[N+1][N+1];
  8. map<unsigned LL,pair<int,int> >haxi;
  9. inline unsigned sfr(unsigned h,unsigned x){
  10. return h>>x;
  11. }
  12. int f(LL i,LL j){
  13. LL w=i*1000000ll+j;
  14. int h=0;
  15. for(int k=0;k<5;++k){
  16. h+=(int)((w>>(8*k))&255);
  17. h+=(h<<10);
  18. h^=sfr(h,6);
  19. }
  20. h+=h<<3;
  21. h^=sfr(h,11);
  22. h+=h<<15;
  23. return sfr(h,27)&1;
  24. }
  25. int main(){
  26. for(int i=1;i<=1000000;i+=N-K)
  27. for(int j=1;j<=1000000;j+=N-K){
  28. unsigned LL ss=13;
  29. unsigned LL hx=0;
  30. for(int k=0;k<K;++k)
  31. for(int g=0;g<K;++g){
  32. hx=hx*ss+f(i+k,j+g);
  33. ss*=13;
  34. }
  35. haxi[hx]=make_pair(i,j);
  36. }
  37. scanf("%d",&t);
  38. int x=0,y=0;
  39. while(t--){
  40. for(int i=0;i<N;++i)scanf("%s",s[i]);
  41. bool fnd=false;
  42. for(int i=0;i<N;++i){
  43. for(int j=0;j<N;++j){
  44. unsigned LL ss=13;
  45. unsigned LL hx=0;
  46. for(int k=0;k<K;++k)
  47. for(int g=0;g<K;++g){
  48. hx=hx*ss+s[i+k][j+g]-'0';
  49. ss*=13;
  50. }
  51. if(haxi.find(hx)!=haxi.end()){
  52. fnd=true;
  53. x=haxi[hx].first-i;
  54. y=haxi[hx].second-j;
  55. break;
  56. }
  57. }
  58. if(fnd)break;
  59. }
  60. printf("Case #%d :%d %d\n",++cas,x,y);
  61. }
  62. return 0;
  63. }

1003 Maximum Sequence(贪心)

题目链接 HDU6047 Maximum Sequence

给定数组a[1..n]和b[1..n],b[i]在[1~n]内。要得到a[n+1..2n],每次选b数组的一个,令a[i]为j=b[k]到i-1位置中最大的a[j]-j。求a[n+1..2n]总和最大值。

每次b选最小的,这次的a[i]就能尽量大,而b[k]到i-1的位置中最大的a[j]-j,早晚要加到总和中,先选不会更差。

对a预处理为a[i]-i。b桶排序。剩下就是每次选出b[k]到i-1位置中最大值。a[i..n]中最大值可以用一个数组记录起来,即后缀最大值。然后a[n+1..i]最大值可以用一个变量维护。每次选两个区间的最大值作为当前a[i]的值。

  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define N 250001
  4. #define mem(a,b) memset(a,b,sizeof (a))
  5. #define INF 0x3f3f3f3f
  6. #define LL long long
  7. const LL MOD=(1e9+7);
  8. using namespace std;
  9. int a[N],b[N];
  10. int c[N];
  11. int n;
  12. int main(){
  13. while(~scanf("%d",&n)){
  14. for(int i=1;i<=n;++i){
  15. scanf("%d",&a[i]);
  16. a[i]-=i;
  17. }
  18. c[n]=a[n];
  19. for(int i=n-1;i;--i)
  20. c[i]=max(c[i+1],a[i]);
  21. mem(b,0);
  22. for(int i=1;i<=n;++i){
  23. int c;
  24. scanf("%d",&c);
  25. ++b[c];
  26. }
  27. LL ans=0;
  28. int j=1;
  29. int maxs=-INF;
  30. for(int i=1;i<=n;++i){
  31. while(b[j]==0) ++j;
  32. --b[j];
  33. int now=max(c[j],maxs);
  34. ans=(ans+now)%MOD;
  35. maxs=max(maxs,now-n-i);
  36. }
  37. printf("%lld\n",ans);
  38. }
  39. return 0;
  40. }

1004 Puzzle(逆序对数)

题目链接 HDU6048 Puzzle

一个\(N*M\)的拼图游戏里有\(N*M-1\)片拼图,一个空格。现在重排拼图:每轮将剩下的第1片、第P+1片,第2P+1片...顺序(上到下,左到右)放入拼图中。问得到的拼图是否可以拼回“1,2,3,...nm-1,空格”的顺序。

拼图游戏不会改变逆序对数的奇偶性。所以逆序对数是偶数就是YES,否则是NO。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int t,n,m,p;
  4. int main(){
  5. scanf("%d",&t);
  6. while(t--){
  7. scanf("%d%d%d",&n,&m,&p);
  8. int tot=n*m-1, rev=0;
  9. while(tot>p){
  10. int num=(tot-1)/p+1;
  11. tot-=num;
  12. rev+=num*(num-1)/2*(p-1);
  13. }
  14. puts(rev&1?"NO":"YES");
  15. }
  16. return 0;
  17. }

1005 Sdjpx Is Happy(区间dp)

HDU6049-Sdjpx Is Happy

题意:

将数组a划分K个块,每个块内的数排序,允许交换一对块的位置。问K最大是多少。

题解:

\(f[i][j]\)表示[i,j]不允许交换最多能划分为多少个块。

\(mi[i][j],ma[i][j]\) 分别表示区间[i,j]内的最小值、最大值。

枚举左边的一块要交换的为[i,j],右边一块的右端点就必须是\(ma[i][j]\)。再枚举右边一块的左端点。

  1. #include <bits/stdc++.h>
  2. #define N 3001
  3. #define mem(a,b) memset(a,b,sizeof(a))
  4. using namespace std;
  5. int t,n;
  6. int mi[N][N],ma[N][N],f[N][N],r[N];
  7. int a[N];
  8. int main(){
  9. scanf("%d",&t);
  10. while(t--){
  11. scanf("%d",&n);
  12. mem(f,0);
  13. for(int i=1;i<=n;++i)
  14. scanf("%d",a+i);
  15. for(int i=1;i<=n;++i){
  16. mi[i][i]=ma[i][i]=a[i];
  17. r[i]=i;
  18. f[i][i]=1;
  19. for(int j=i+1;j<=n;++j){
  20. mi[i][j]=min(mi[i][j-1],a[j]);
  21. ma[i][j]=max(ma[i][j-1],a[j]);
  22. }
  23. }
  24. for(int l=2;l<=n;++l){
  25. for(int i=1;i<=n-l+1;++i){
  26. int j=i+l-1;
  27. if(ma[i][j]-mi[i][j]==l-1){
  28. if(mi[i][r[i]]==mi[i][j])
  29. f[i][j]=f[i][r[i]]+f[r[i]+1][j];
  30. else
  31. f[i][j]=1;
  32. r[i]=j;
  33. }else{
  34. f[i][j]=0;
  35. }
  36. }
  37. }
  38. int res=f[1][n];
  39. for(int i=1;i<=n;++i)
  40. for(int j=i;j<=n;++j)
  41. if(f[i][j]&&(i==1||f[1][i-1]&&mi[1][i-1]==1)){
  42. int jj=ma[i][j];
  43. if(jj==n||ma[jj+1][n]==n&&f[jj+1][n])
  44. for(int ii=jj; ii>j; --ii)
  45. if(f[ii][jj]&&mi[ii][jj]==i)
  46. res=max(res,f[1][i-1]+f[j+1][ii-1]+f[jj+1][n]+2);
  47. }
  48. printf("%d\n",res);
  49. }
  50. return 0;
  51. }

1006 Funny Function(递推)

HDU6050-Funny Function

题意:

求\(F_{m,1}\) 模 1e9+7.

题解:

由第二个式子的特征方程解得 \(F_{1,i}=\frac{2^n-(-1)^n}{3}\)

由第三个式子知\(F_{i,j}\) 是\(F_{i-1,j}\)开始的N项之和。将\(2^n\)和\((-1)^n\)分别计算就得到两个等比数列求和。于是\(F_{m,1}=(2\cdot (2^n-1)^{m-1}+(n\%2?-1:0))/3\),再特判m==1的情况 。

//不会官方题解的推法。

代码:

  1. #include <bits/stdc++.h>
  2. #define mem(a,b) memset(a,b,sizeof (a))
  3. using namespace std;
  4. typedef long long ll;
  5. const ll MOD=(1e9+7);
  6. int t;
  7. ll n,m;
  8. ll qpow(ll a,ll b){
  9. a%=MOD;
  10. ll ans=1;
  11. for(;b;b>>=1,a=a*a%MOD)
  12. if(b&1)ans=ans*a%MOD;
  13. return ans;
  14. }
  15. int main(){
  16. ios::sync_with_stdio(false);
  17. cin.tie(NULL);
  18. cin>>t;
  19. while(t--){
  20. cin>>n>>m;
  21. ll ans=(qpow(2,n)-1+MOD)%MOD;
  22. ans=qpow(ans,m-1)*2%MOD;
  23. if(m==1){
  24. puts("1");
  25. continue;
  26. }
  27. ll chuyi3=qpow(3,MOD-2)%MOD;
  28. if(n&1){
  29. cout<<(ans+1)*chuyi3%MOD<<endl;
  30. }else{
  31. cout<<ans*chuyi3%MOD<<endl;
  32. }
  33. }
  34. return 0;
  35. }

1007 If the starlight never fade(原根,gcd求和)

HDU6051-If the starlight never fade

题意:

f(i)为满足\((x+y)^i\equiv x^i \%p\)且\(1\le x <p, 1\le y \le m\)的x,y有几对。

现在要求计算\(\sum_{i=1}^{p-1}i\cdot f(i)\)。(\(1\le m< p-1, 2\le p\le 1e9+7\))。答案对1e9+7取模。

题解:

看到\(x^i\%p\) ,要想到原根。

原根:http://blog.csdn.net/acdreamers/article/details/8883285

设g为模p原根,存在唯一的整数a,b使得\(x=g^a, y=g^b,1\le a,b<p\)

\((x+y)^i\equiv x^i \%p \Leftrightarrow (g^a+g^b)^i\equiv g^{ai}\%p \Leftrightarrow (1+g^{b-a})^i\equiv 1 \%p\)

后面一个推导是两边都乘上了\(g^{-ai}\%p\)。

因为\(1+g^{b-a}\ge 2\),故存在唯一的整数k使得\(g^k=(1+g^{b-a})\%p,1\le k< p\),带入上式得\(g^{ki}\equiv 1\%p\)。

由原根的性质,g的幂 模p的余数是一个0~p-1的循环。\(g^{ki}\equiv g^0 \%p\),所以\(ki\equiv 0 \%(p-1)\)

k的取值就是$\frac {p-1}{gcd(i,p-1)} $乘以1、乘以2、...、乘以gcd(i,p-1)-1共gcd(i,p-1)-1个。(因为ki是p-1的倍数,k里至少要有p-1有但是i没有的因子。)

对于固定的y来说 \(x\equiv y(g^k-1)^{-1}\%p\),也就有gcd(i,p-1)-1个x的取值。

因此\(f(i)=m\sum_{i=1}^{p-1}(i\cdot gcd(p-1,i)-i)\)

接着右边的-i的求和可以直接计算。\(i\cdot gcd(p-1,i)\)的求和可以枚举gcd为d,求和为\(\sum_{d|p-1}d\cdot d\cdot \sum_{k=1}^{k=\frac{p-1}{d}}(k\cdot [gcd(k,\frac{p-1}{d})=1])\)。这里就是说\(k\cdot d=i\),d是gcd(p-1,i),k和\(\frac {p-1}{d}\)不能有公因子。

hints:

\[\begin{aligned}
\sum_{i=1}^n i[gcd(n,i)=1]&=\frac 1 2 \sum_{i=1}^n(i+(n-i))[gcd(n,i)=1]\\
&=\frac 1 2 n\sum_{i=1}^n[gcd(n,i)=1]\\
&=\frac{n\varphi(n)+[n=1]}2
\end{aligned}
\]

代码:

  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. const ll M=1e9+7;
  4. using namespace std;
  5. int t,cas;
  6. ll p,m;
  7. ll phi(int x){
  8. ll res=x;
  9. for(int i=2;i*i<=x;++i)
  10. if(x%i==0){
  11. res=res/i*(i-1);
  12. while(x%i==0)x/=i;
  13. }
  14. if(x>1)res=res/x*(x-1);
  15. return res;
  16. }
  17. int main(){
  18. scanf("%d",&t);
  19. while(t--){
  20. scanf("%lld%lld",&m,&p);
  21. ll ans=M-p*(p-1)/2%M;
  22. /*for(ll i=1;i<p;++i){
  23. ans+=__gcd(i,p-1)*i;
  24. ans%=M;
  25. }*/
  26. --p;
  27. for(int i=1;i*i<=p;++i)
  28. if(p%i==0){
  29. int j=p/i;
  30. ans+=(1LL*j*phi(j)+(j==1))/2%M*i*i%M;
  31. if(i!=j)
  32. ans+=(1LL*i*phi(i)+(i==1))/2%M*j*j%M;
  33. ans%=M;
  34. }
  35. ans=ans*m%M;
  36. printf("Case #%d: %lld\n",++cas,ans);
  37. }
  38. return 0;
  39. }

1008 To my boyfriend(子矩阵颜色数期望)

HDU6052-To my boyfriend

题意:

给你一个n行m列的矩阵,随机选一个子矩阵,求它不同数字的个数的期望。

题解:

把不同数字当不同颜色考虑,比较生动。

期望=(\(\sum\)每种颜色贡献了多少个子矩阵)/总子矩阵数

为了不重复计算,每个格子只在它作为子矩阵里同色格子的最上面的最左边时才算它的贡献。

然后枚举子矩阵上边界,计算左上角和右下角的选择方案数,乘起来。

上边界确定,则左上角可以从该行“当前格子所在列左边最近的同色列”+1的位置到“当前格子所在列”这些位置中选择;

右下角可以从当前格子所在行到第n行,这些行的“当前格子所在列”到该行“当前格子所在列右边最近的同色列”-1的位置中选择。

我们将格子先按颜色,然后按x,最后按y关键字排序。可以快速找出上面要求的位置。

ps.注意题目要求保留9位小数

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. struct Grid{
  4. int c,x,y;
  5. }g[10001];
  6. bool cmp(const Grid &a,const Grid &b){
  7. if(a.c==b.c){
  8. if(a.x==b.x)return a.y<b.y;
  9. return a.x<b.x;
  10. }
  11. return a.c<b.c;
  12. }
  13. int cnt;
  14. int t,n,m;
  15. int main(){
  16. scanf("%d",&t);
  17. while(t--){
  18. scanf("%d%d",&n,&m);
  19. cnt=0;
  20. for(int i=1;i<=n;++i)
  21. for(int j=1;j<=m;++j){
  22. int c;
  23. scanf("%d",&c);
  24. g[cnt++]=(Grid){c,i,j};
  25. }
  26. sort(g,g+cnt,cmp);
  27. double num=0;
  28. for(int c=0;c<cnt;++c){//第c个格子
  29. int left=1,right=m;//左上角的左边界,右下角的右边界
  30. for(int up=g[c].x,t=c-1;up;--up){//上边界,即左上角的所在行
  31. for(;t>=0&&g[t].x==up&&g[t].c==g[c].c;--t){//往前枚举第up行的同色格子
  32. if(g[t].y>g[c].y)
  33. right=min(right,g[t].y-1);
  34. else
  35. left=max(left,g[t].y+1);
  36. }
  37. if(up==g[c].x)right=m;//如果是同一行,右边界为m
  38. num+=(g[c].y-left+1)*(right-g[c].y+1)*(n-g[c].x+1);//累加贡献的矩阵数
  39. }
  40. }
  41. printf("%.9f\n", num/((n+1)*n/2*(m+1)*m/2));//除以总子矩阵数
  42. }
  43. return 0;
  44. }

1009 TrickGCD(莫比乌斯函数)

HDU6053-TrickGCD

题意:

给你数组A[1..n],问有多少个数组B[1..n]满足所有区间的gcd都不小于2,且\(B_i\le A_i\)。n和A都不超过1e5

题解:

g枚举gcd从2到min{Ai}。一般会想枚举每个Ai中有多少个g的倍数即Ai/g,然后乘起来就是当前g的所有方案数,为了不重复计算,需要算莫比乌斯函数,相当于容斥原理了一下。但是这样会超时的,所以枚举g的倍数l,就变成除以g为l的有多少个Ai,预处理出pre[i](代表1~i出现的次数)。

这题注意上界要和N取min

代码:

  1. #include <bits/stdc++.h>
  2. #define N 100001
  3. #define ll long long
  4. #define mem(a,b) memset(a,b,sizeof(a))
  5. using namespace std;
  6. const ll MOD=1e9+7;
  7. int mu[N];
  8. int pr[N],cnt;
  9. bool isp[N];
  10. void init(){
  11. mem(isp,true);
  12. for(int i=2;i<N;++i){
  13. if(isp[i]){
  14. mu[i]=-1;
  15. pr[cnt++]=i;
  16. }
  17. for(int j=0;j<cnt&&pr[j]*i<N;++j){
  18. isp[i*pr[j]]=false;
  19. if(i%pr[j]==0)break;
  20. mu[i*pr[j]]=-mu[i];
  21. }
  22. }
  23. }
  24. ll qpow(ll x,int b){
  25. ll ans=1;
  26. for(;b;x=x*x%MOD,b>>=1)if(b&1)ans=ans*x%MOD;
  27. return ans;
  28. }
  29. int t,cas,n,m;
  30. int num[N];
  31. int main(){
  32. init();
  33. scanf("%d",&t);
  34. while(t--){
  35. scanf("%d",&n);
  36. mem(num,0);
  37. for(int i=0;i<n;++i){
  38. int x;
  39. scanf("%d",&x);
  40. m=i?min(m,x):x;
  41. ++num[x];
  42. }
  43. for(int i=1;i<N;++i)
  44. num[i]+=num[i-1];
  45. ll ans=0;
  46. for(int g=2;g<=m;++g){
  47. ll tmp=1;
  48. for(int i=g,l=1;i<N;i+=g,++l){
  49. int c=num[min(i+g,N)-1]-num[i-1];
  50. tmp=tmp*qpow(l,c)%MOD;
  51. }
  52. ans=((ans-tmp*mu[g])%MOD+MOD)%MOD;
  53. }
  54. printf("Case #%d: %lld\n",++cas,ans);
  55. }
  56. return 0;
  57. }

1011 Regular polygon(正多边形计数)

HDU6055-Regular polygon

题意:

500个格点(坐标绝对值100以内),问有多少个正多边形。

题解:

只可能是正方形,枚举两个点,然后计算出另外两个点坐标,判断是否存在。

  1. #include <bits/stdc++.h>
  2. #define N 501
  3. #define ll long long
  4. #define mem(a,b) memset(a,b,sizeof(a))
  5. using namespace std;
  6. struct P{
  7. int x,y;
  8. }p[N];
  9. int n;
  10. bool b[N][N];
  11. bool ck(int x,int y){
  12. return x>=0&&x<N&&y>=0&&y<N&&b[x][y];
  13. }
  14. int main(){
  15. while(~scanf("%d",&n)){
  16. mem(b,0);
  17. for(int i=1;i<=n;++i){
  18. int x,y;
  19. scanf("%d%d",&x,&y);
  20. x+=100,y+=100;
  21. b[x][y]=1;p[i]=(P){x,y};
  22. }
  23. int ans=0;
  24. for(int i=1;i<n;++i)
  25. for(int j=i+1;j<=n;++j){
  26. int dx=p[i].x-p[j].x,dy=p[i].y-p[j].y;
  27. for(int k=-1;k<2;k+=2){
  28. int cx=p[i].x+k*dy,cy=p[i].y-k*dx;
  29. int nx=p[j].x+k*dy,ny=p[j].y-k*dx;
  30. if(ck(cx,cy)&&ck(nx,ny))ans++;
  31. }
  32. }
  33. printf("%d\n",ans/4);
  34. }
  35. return 0;
  36. }

「2017 Multi-University Training Contest 2」2017多校训练2的更多相关文章

  1. 「2017 Multi-University Training Contest 8」2017多校训练8

    1009 I am your Father! (最小树形图-朱刘算法) 题目链接 HDU6141 I am your Father! 求有向图最大生成树,要求n的父节点尽量小. 我们将所有wi变为-w ...

  2. 「2017 Multi-University Training Contest 7」2017多校训练7

    1002 Build a tree(递归) 题目链接 HDU6121 Build a tree 有一棵n个点的有根树,标号为0到n-1,i号点的父亲是\(\lfloor\frac{i-1}{k}\rf ...

  3. 「2017 Multi-University Training Contest 1」2017多校训练1

    1001 Add More Zero(签到题) 题目链接 HDU6033 Add More Zero 找出最大的k,使得\(2^m-1\ge 10^k\). 直接取log,-1可以忽略不计. #inc ...

  4. 2017 Wuhan University Programming Contest (Online Round) Lost in WHU 矩阵快速幂 一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开。

    /** 题目:Lost in WHU 链接:https://oj.ejq.me/problem/26 题意:一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开. ...

  5. 2017 Wuhan University Programming Contest (Online Round) C. Divide by Six 分析+模拟

    /** 题目:C. Divide by Six 链接:https://oj.ejq.me/problem/24 题意:给定一个数,这个数位数达到1e5,可能存在前导0.问为了使这个数是6的倍数,且没有 ...

  6. 2017 Wuhan University Programming Contest (Online Round) B Color 树形dp求染色方法数

    /** 题目:Color 链接:https://oj.ejq.me/problem/23 题意:给定一颗树,将树上的点最多染成m种颜色,有些节点不可以染成某些颜色.相邻节点颜色不同.求染色方法数. 思 ...

  7. 2017 Wuhan University Programming Contest (Online Round) D. Events,线段树区间更新+最值查询!

    D. Events 线段树区间更新查询区间历史最小值,看似很简单的题意写了两天才写出来. 题意:n个数,Q次操作,每次操作对一个区间[l,r]的数同时加上C,然后输出这段区间的历史最小值. 思路:在线 ...

  8. 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)

    咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...

  9. 2018 Multi-University Training Contest 3 杭电多校第三场

    躺了几天 终于记得来填坑了 1001 Ascending Rating   (hdoj 6319) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6319 ...

随机推荐

  1. 关于jsp中jstl-core标签循环遍历的使用

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  2. Codeforces Round #521 (Div. 3)

    B 题过的有些牵强,浪费了很多时间,这种题一定想好思路和边界条件再打,争取一发过.  D 题最开始读错题,后面最后发现可以重复感觉就没法做了,现在想来,数据量大,但是数据范围小枚举不行,二分还是可以的 ...

  3. 1060E Sergey and Subway(思维题,dfs)

    题意:给出一颗树,现在,给哪些距离为2的点对,加上一条边,问所有点对的距离和 题解:如果没有加入新的边,距离和就会等于每条边的贡献,由于是树,我们用点来代表点上面的边,对于每条边,它的贡献将是(子树大 ...

  4. 助教总结 -【福大软工实践-2017-2018-K班】

    助教总结 -[福大软工实践-2017-2018-K班] 非常抱歉这么晚才来写总结! 助教工作 助教共发表博客39篇. 助教共点评约500条. 起步 对于常规课程的起步,通常都是在第一次课堂上由老师对课 ...

  5. p67交换幺环为整环的充要条件

    如何理解并且证明这个定理?谢谢 (0)是素理想,也是就是说,只要ab∈(0)就有a∈(0)或者b∈(0) 这等价于说 ab=0就有a=0或b=0. 它这里给的证明是什么意思呢?它是利用了素理想的等价刻 ...

  6. 模拟银行ATM系统(基础版)

    Account类 package ATM; public class Account {//定义Account类 private String accountID;//用于存储学生的用户账号(由八位数 ...

  7. Python_面向对象基础

    概念 类 一类抽象的事物,是描述了一类事物有哪些属性或者行为,但不是具体——模子. 实例 一个依托于类的规范存在的,被赋予了具体属性值的实际存在的物体. 对象 就是实例,实例的另外一个名称,相当于别名 ...

  8. rest-framework的权限组件

    权限组件 写在开头: 首先要在models表中添加一个用户类型的字段: class User(models.Model): name=models.CharField(max_length=32) p ...

  9. Python之加环境变量

    1.python找文件是先去当前文件所在的文件夹下找,也就是bin目录下找 2.如果bin目录里找不到,再去python的环境变量里找 如果有pycharm,那么直接点右键-选择Mark Direct ...

  10. 【问题解决方案】Git bash进入多层子目录问题(通配符问题留坑)

    cd进入指定路径下:cd 斜杠 斜杠 方法一: 1- 撇丿,不是"那",盘符前面要加上 / (d盘前面也加,不加也行) 2- 路径名不区分大小写 3- 不用空格 4- 如果目录名中 ...