zoukankan      html  css  js  c++  java
  • 2018湖南省赛选拔

    题目在CSUSTOJ:传送门

    放一些有丶东西的题。

    目录

    目录


    ####模和最大 ![这里写图片描述](https://img-blog.csdn.net/20180811155537452?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include <bits/stdc++.h>
    #define mme(a,b) memset((a),(b),sizeof((a)))  
    #define fuck(x) cout<<"* "<<x<<"
    "
    #define iis std::ios::sync_with_stdio(false)
    using namespace std;
    typedef long long LL;
    typedef unsigned long long uLL;
    const int INF = 0x3f3f3f3f;
    const int mod = 998244353;
    const double eps = 1e-8;
    const int N = 1e6 + 7;
    int n, m, p;
    struct lp{
      int a,yu,cha,id;
    }cw[N];
    int ar[N],ans[N],br[N];
    bool cmp(lp &a,lp &b){
      return a.yu<b.yu;
    }
    int main(){
      while(~scanf("%d%d",&n,&p)){
        for(int i=0;i<n;++i){
          scanf("%d",&ar[i]);
          cw[i].a=ar[i];
          cw[i].yu=ar[i]%p;
          cw[i].cha=p-cw[i].yu;
          cw[i].id=i;
          br[i]=ar[i];
        }
        sort(cw,cw+n,cmp);
        for(int i=0;i<n;++i){
          ar[i]=cw[i].yu;
        }
        for(int i=0;i<n;++i){
          int k = lower_bound(ar,ar+n,cw[i].cha)-ar;
          //printf("%d %d %d
    
    ", cw[i].id,cw[i].yu,k);
          if(k==0||k==n){
            if(i==n-1){
              ans[cw[i].id]=(ar[n-2]+cw[i].a)%p;  
            }else{
              ans[cw[i].id]=(ar[n-1]+cw[i].a)%p;
            }
          }else{
            int a = (ar[n-1]+cw[i].a)%p;
            int b = (ar[n-2]+cw[i].a)%p;
            int c = (cw[k-1].yu+cw[i].a)%p;
            int d = (cw[k-2].yu+cw[i].a)%p;
            int e = (cw[k].yu+cw[i].a)%p;
            int sum=0;
            if(i==n-1){
              sum = b;
            }else{
              sum = b;
            }
            if(i==k-1){
              sum = max(sum,d);
            }else{
              sum = max(sum,c);
            }
            if(i!=k){
              sum = max(sum,e);
            }
            ans[cw[i].id]=sum;
          }
        }
        for(int i=0;i<n;++i){
          if(i==n-1)printf("%d
    ", ans[i]);
          else printf("%d ", ans[i]);
        }
      }
      return 0;
    }
    

    ####hash ![这里写图片描述](https://img-blog.csdn.net/20180811155547690?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include <bits/stdc++.h>
    #define mme(a,b) memset((a),(b),sizeof((a)))  
    #define fuck(x) cout<<"* "<<x<<"
    "
    #define iis std::ios::sync_with_stdio(false)
    using namespace std;
    typedef long long LL;
    typedef unsigned long long uLL;
    const int INF = 0x3f3f3f3f;
    const int mod = 998244353;
    const double eps = 1e-8;
    const int N = 2e6 + 7;
    uLL base = 13131;
    int n, m, p;
    unordered_map<uLL,int>mp[N];
    vector<int> son[N];
    uLL col[N];
    int flag;
    void init(){
      for(int i=0;i<=m+10;++i)son[i].clear();
      for(int i=0;i<=m+10;++i)mp[i].clear();
    }
    void dfs(int u,int Fa,uLL cur,int dd){
      if(flag==0)return;
      int len = son[u].size();
      //printf("u=%d len=%d
    ", u,len);
      for(int i=0;i<len;++i){
        int v = son[u][i];
        if(v==Fa)continue;
        uLL tmp = cur*base+col[v];
        if(mp[dd+1][tmp]==0)flag=0;
        //printf("%llu %d %d %llu
    ",cur,v,col[v] ,tmp);
        if(flag==0)return;
        dfs(v,u,tmp,dd+1);
        if(flag==0)return;
      }
    }
    int main(){
      while(~scanf("%d%d",&n,&m)){
        init();
        for(int t=0;t<n;++t){
          scanf("%d",&p);
          uLL tmp=0,x;
          for(int i=1;i<=p;++i){
            scanf("%llu",&x);
            tmp = tmp*base+x;
            mp[i][tmp]=1;
            //printf("%llu
    ", tmp);
          }
        }
          //printf("**
    ");
          for(int i=1;i<=m;++i)scanf("%llu",&col[i]);
          for(int i=1;i<m;++i){
            int u,v;
            scanf("%d%d",&u,&v);
            son[u].push_back(v);
            son[v].push_back(u);
          }
          flag=1;
          dfs(1,0,col[1],1);
          if(flag==1)printf("YES
    ");
          else printf("NO
    ");
      }
      return 0;
    }
    

    ####吃零食 ![这里写图片描述](https://img-blog.csdn.net/20180811155648581?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int N = 1e6 + 7;
    
    struct lp{
      int w,d,t;
      friend bool operator<(const lp &a, const lp &b){
        return a.d<b.d;
      }
    }a, b;
    int n;
    int main(){
      while(~scanf("%d", &n)){
        priority_queue<lp>Q;
        for(int i=0;i<n;++i){
          scanf("%d%d",&a.w,&a.d);a.t=0;
          Q.push(a);
        }
        LL ans=0;
        int nowt=0;
        while(!Q.empty()){
          a = Q.top();Q.pop();
          LL tmp = a.w-(nowt-a.t)*a.d;
          if(tmp<=0){
            //nowt++;
            continue;
          }else if(tmp<a.d){
            b.w=b.d=tmp;
            b.t=nowt;
            Q.push(b);
            continue;
          }
          nowt++;
          ans+=tmp;
        }
        printf("%lld
    ", ans);
      }
      return 0;
    }
    

    ####搬东西-(这题还不会 ![这里写图片描述](https://img-blog.csdn.net/2018081115565777?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 不会,放标程吧
    #include <bits/stdc++.h>
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define x first
    #define y second
    #define add(x,y) ((x)+(y))%mod
    #define sub(x,y) ((x)-(y)+mod)%mod
    #define mul(x,y) ((x)%mod)*((y)%mod)%mod
    #define rep(i,a,b) for(int i=a;i<b;++i)
    #define per(i,a,b) for(int i=a-1;i>=b;--i)
    #define fuck(x) cout<<'['<<#x<<' '<<(x)<<']'<<endl;
    #define FIN freopen("in.txt","r",stdin);
    using namespace std;
    
    typedef long long ll;
    typedef unsigned long long ull;
    typedef vector<int> VI;
    typedef pair<int, int> PII;
    
    const ll mod = 1000000007;
    const int INF = 0x3f3f3f3f;
    const ll INFLL = 0x3f3f3f3f3f3f3f3fll;
    const int MX = 2e5 + 100;
    
    int a[MX];
    ll dp[MX][21];
    
    int cal (int i, int j) {return abs (a[i] - a[j]);}
    
    int main() {
        //FIN;
        int n, k; cin >> n >> k;
        rep (i, 1, 2 * n + k + 1) scanf ("%d", &a[i]);
        sort (a + 1, a + 2 * n + k + 1);
        rep (i, 0, 2 * n + k + 1) rep (j, 0, k + 1) dp[i][j] = INFLL;
        dp[0][0] = 0;
        rep (i, 1, 2 * n + k + 1)
            rep (j, 0, k + 1)rep (p, 0, k - j + 1) {
            dp[i][j + p] = min (dp[i][j + p], dp[i - j - 2][p] + cal (i, i - j - 1) );
            dp[i][j + p] = min (dp[i][j + p], dp[i - j][p]);
        }
        cout << dp[2 * n + k][k] << endl;
        return 0;
    }
    
    

    ####简单数学题 ![这里写图片描述](https://img-blog.csdn.net/20180811155705305?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include<bits/stdc++.h>
    #define lowbit(x) (x&(-(x)))
    #define mme(a,b) memset((a),(b),sizeof((a))) 
    #define fuck(x) cout<<"* "<<x<<"
    "
    #define iis std::ios::sync_with_stdio(false)
    using namespace std;
    typedef long long LL;
    const int N = 1e6 + 7;
    const int mod = 998244353;
    const int INF = 0x3f3f3f3f;
    
    int noprime[N],pm[N],pcnt=0;
    void init(){
      noprime[0]=noprime[1]=1;
      for(int i=2;i<N;++i){
        if(!noprime[i])pm[pcnt++]=i;
        for(int j=0;j<pcnt&&i*pm[j]<N;++j){
          noprime[i*pm[j]]=1;
          if(i%pm[j]==0)break;
        }
      }
    }
    LL a, b, p;
    int fa[N],vis[N];
    int Fi(int x){
      return fa[x]==x?x:fa[x]=Fi(fa[x]);
    }
    void un(int a,int b){
      int pa = Fi(a), pb = Fi(b);
      if(pa==pb)return;
      fa[pb]=pa;
    }
    int main(){
      init();
      int tim, tc=0;
      scanf("%d", &tim);
      while(tim--){
        scanf("%lld%lld%lld", &a, &b, &p);
        for(LL i=0;i<=b-a;++i)fa[i]=i;
        mme(vis,0);
        for(int i=0; i < pcnt; ++i){
          if(pm[i]<p)continue;
          LL st = a/pm[i];
          if(st*pm[i]<a)st++;
          for(LL j = st+1; j*pm[i] <= b; ++j){
            LL t1 = j*pm[i], t2 = (j-1)*pm[i];
            un(t2-a,t1-a);
          }
        }
        int ans=0;
        for(int i=0;i<=b-a;++i){
          if(vis[Fi(i)]==0){
            vis[Fi(i)]=1;
            ans++;
          }
        }
        printf("Case #%d: %d
    ", ++tc, ans);
      }
      return 0;
    }
    

    ####db要妹子 ![这里写图片描述](https://img-blog.csdn.net/20180811155719912?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include<bits/stdc++.h>
    #define lowbit(x) (x&(-(x)))
    #define mme(a,b) memset((a),(b),sizeof((a))) 
    #define fuck(x) cout<<"* "<<x<<"
    "
    #define iis std::ios::sync_with_stdio(false)
    using namespace std;
    typedef long long LL;
    const int N = 2e5 + 7;
    const int ME = 1e6+7;
    const int mod = 1e9+7;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    int n, m, tot;
    struct lh{
      int v, nex;
      LL w;
    }cw[ME];
    struct lp{
      int v,sta;
      LL w;
      lp(){}
      lp(int a,LL b,int c){v=a;w=b;sta=c;}
      friend bool operator <(const lp &a,const lp &b){
        return a.w>b.w;
      }
    }aa,bb;
    int col[N];
    LL dis[N][8];
    int vis[N][8];
    int head[N];
    
    void dij(){
      priority_queue<lp>Q;
      Q.push(lp(1, 0, 1<<col[1]));
      mme(dis,0x3f);dis[1][1<<col[1]]=0;
      mme(vis,0);
      while(!Q.empty()){
        aa = Q.top();Q.pop();
        int u = aa.v, sta = aa.sta;
        if(vis[u][sta])continue;
        vis[u][sta] = 1;
        for(int i=head[u];~i;i=cw[i].nex){
          int v = cw[i].v, w = cw[i].w;
          int New = aa.sta | (1<<col[v]);
          if(dis[v][New]>dis[u][sta]+w){
            dis[v][New]=dis[u][sta]+w;
            Q.push(lp(v, dis[v][New], New));
          }
        }
      }
    }
    void init(){
      tot = -1;
      mme(head, -1);
    }
    void add_edge(int u,int v,int w){
      cw[++tot].v = v;cw[tot].w=w;cw[tot].nex=head[u];
      head[u]=tot;
      cw[++tot].v = u;cw[tot].w=w;cw[tot].nex=head[v];
      head[v]=tot;
    }
    int main(){
      while(~scanf("%d%d", &n, &m)) {
        for(int i = 1; i <= n; ++i){
          scanf("%d", &col[i]);
        }
        init();
        for(int i=0,u,v,w;i<m;++i){
          scanf("%d%d%d",&u,&v,&w);
          add_edge(u,v,w);
        }
        dij();
        printf("%lld
    ", min(dis[1][6],dis[1][7]));
      }
      return 0;
    }
    

    ####树分治??? ![这里写图片描述](https://img-blog.csdn.net/2018081115573343?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include<bits/stdc++.h>
    #define lson rt<<1
    #define rson rt<<1|1
    #define lowbit(x) (x&(-(x)))
    #define mme(a,b) memset((a),(b),sizeof((a))) 
    #define fuck(x) cout<<"* "<<x<<"
    "
    #define iis std::ios::sync_with_stdio(false)
    using namespace std;
    typedef long long LL;
    const int N = 5e5 + 7;
    const int ME = 1e6+7;
    const int mod = 1e9+7;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    int n, m, k;
    int ar[N], ans[5];
    int sum[N<<2][5];
    void push_up(int rt){
      int num[11]={0,};
      for(int i=0;i<k;++i){
        num[i]=sum[lson][i];
        num[i+k]=sum[rson][i];
      }
      sort(num,num+2*k,greater<int>());
      for(int i=0;i<k;++i){
        sum[rt][i]=num[i];
      }
    }
    void build(int l,int r,int rt){
      if(l==r){
        sum[rt][0]=ar[l];
        return;
      }
      int mid = (l+r)>>1;
      build(l,mid,lson);build(mid+1,r,rson);
      push_up(rt);
    }
    void update(int p,int c,int l,int r,int rt){
      int mid = (l+r)>>1;
      if(l==r){
        sum[rt][0]=c;
        return;
      }
      if(p<=mid)update(p,c,l,mid,lson);
      else update(p,c,mid+1,r,rson);
      push_up(rt);
    }
    void query(int L,int R,int l,int r,int rt){
      int mid = (l+r)>>1;
      if(L<=l&&r<=R){
        for(int i=0;i<k;++i){
          ans[i]=sum[rt][i];
        }
        return;
      }
      int num[11]={0,};
      if(L<=mid){
        query(L,R,l,mid,lson);
        for(int i=0;i<k;++i){
          num[i]=ans[i];
        }
      }
      if(R>mid){ 
        query(L,R,mid+1,r,rson);
        for(int i=0;i<k;++i){
          num[i+k]=ans[i];
        }
      }
      sort(num,num+2*k,greater<int>());
      for(int i=0;i<k;++i){
        ans[i]=num[i];
      }
    }
    int main(){
      while(~scanf("%d%d%d", &n, &m, &k)) {
        for(int i=1;i<=n;++i){
          scanf("%d", &ar[i]);
        }
        mme(sum, 0);
        build(1,n,1);
        //printf("**
    ");
        while(m--){
          int op,x,y;
          scanf("%d%d%d",&op,&x,&y);
          if(op==1){
            update(x,y,1,n,1);
          }else{
            query(x,y,1,n,1);
            for(int i=0;i<k;++i){
              printf("%d%c", ans[i]," 
    "[i==k-1]);
            }
          }
        }
      }
      return 0;
    }
    

    ####py&hyh要妹子 ![这里写图片描述](https://img-blog.csdn.net/20180811155742774?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include<bits/stdc++.h>
    #define lowbit(x) (x&(-(x)))
    #define mme(a,b) memset((a),(b),sizeof((a))) 
    #define fuck(x) cout<<"* "<<x<<"
    "
    #define iis std::ios::sync_with_stdio(false)
    using namespace std;
    typedef long long LL;
    const int N = 1e6 + 7;
    const int mod = 998244353;
    const int INF = 0x3f3f3f3f;
    
    
    int n, m, k, q;
    struct lp{
      int x,y,t;
    }cw[N];
    int sum[505][505], ar[505][505];
    
    bool cmp(lp &a,lp &b){
      return a.t<b.t;
    }
    bool ok(int tim){
      mme(ar, 0);mme(sum, 0);
      for(int i=0;i<q;++i){
        if(cw[i].t>tim)break;
        ar[cw[i].x][cw[i].y]=1;
      }
      for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
          sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]+ar[i][j];
          if(i<k||j<k)continue;
          int a = i - k +1, b = j - k + 1;
          if(sum[i][j]-sum[i][b-1]-sum[a-1][j]+sum[a-1][b-1]==k*k)return 1;
        }
      }
      return 0;
    }
    int main(){
      while(~scanf("%d%d%d%d", &n, &m, &k, &q)){
        int l = 0, r = 0, mid, ans=-1;
        for(int i=0;i<q;++i){
          scanf("%d%d%d", &cw[i].x,&cw[i].y,&cw[i].t);
          r=max(r,cw[i].t);
        }
        sort(cw,cw+q,cmp);
        while(r>=l){
          mid = (l+r)>>1;
          if(ok(mid)){
            ans=mid;
            r = mid-1;
          }else{
            l = mid+1;
          }
        }
        printf("%d
    ", ans);
      }
      return 0;
    }
    

    ####神秘群岛 ![这里写图片描述](https://img-blog.csdn.net/20180811155749907?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk5MDY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    #include<bits/stdc++.h>
    #define lowbit(x) (x&(-(x)))
    #define mme(a,b) memset((a),(b),sizeof((a))) 
    #define fuck(x) cout<<"* "<<x<<"
    "
    #define iis std::ios::sync_with_stdio(false)
    using namespace std;
    typedef long long LL;
    const int N = 1e6 + 7;
    const int mod = 1e9+7;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    int n, m, tot;
    struct lp{
        int v,nex;
        LL w;
    }cw[N*10];
    int fa[N],head[N],dep[N],f[N][30];
    LL size[N],dis[N], rdis[N];
    void add(int x,int y,int w1,int w2){
      cw[++tot].v=y;cw[tot].w=w1*1LL;cw[tot].nex=head[x];
      head[x]=tot;
      cw[++tot].v=x;cw[tot].w=w2*1LL;cw[tot].nex=head[y];
      head[y]=tot;
    }
    void init(){
      tot=-1;
      memset(head,-1,sizeof(head));
      memset(fa,0,sizeof(fa));
      memset(f,0,sizeof(f));
      memset(dep,0,sizeof(dep));
      memset(size,0,sizeof(size));
      memset(dis,0,sizeof(dis));
      memset(rdis,0,sizeof(rdis));
    }
    void dfs(int  u,int Fa,int h){
        dep[u]=h;f[u][0]=Fa;fa[u]=Fa;
        for(int i=1;i<20;++i){
            int cf=f[u][i-1];
            f[u][i]=f[cf][i-1];
        }
        for(int i=head[u];~i;i=cw[i].nex){
            int v=cw[i].v;
            LL w1=cw[i].w,w2=cw[i^1].w;
            if(v==Fa)continue;
            dis[v]=dis[u]+w1;
            rdis[v]=rdis[u]+w2;
            dfs(v,u,h+1);
        }
    }
    int LCA(int x,int y){
        if(dep[x]<dep[y])x^=y^=x^=y;
        for(int i=19;i>=0;--i){
            if(dep[f[x][i]]>=dep[y]){
                x=f[x][i];
            }
        }
        if(x==y)return x;
        for(int i=19;i>=0;--i){
            if(f[x][i]!=f[y][i]){
                x=f[x][i];y=f[y][i];
            }
        }
        return f[x][0];
    }
    int main(){
      int T;
      scanf("%d", &T);
      while(T--) {
        scanf("%d", &n);
        init();
        LL Sum=0;
        for(int i=0;i<n-1;++i){
          int u,v;
          LL w1,w2;
          scanf("%d%d%lld%lld",&u,&v,&w1,&w2);
          add(u,v,w1,w2);
          Sum+=w1+w2;
        }
        dfs(1,0,0);
        scanf("%d",&m);
        while(m--){
          int a,b;scanf("%d%d",&a,&b);
          int ff=LCA(a,b);
          swap(a,b);
          LL ans1 = rdis[a]-rdis[ff];
          LL ans2 = dis[b]-dis[ff];
          printf("%lld
    ", Sum-ans1-ans2);
        }
      }
      return 0;
    }
    

    挺sb的

  • 相关阅读:
    size_t和size_type 的区别 什么时候用哪个?
    分享:在django中执行脚本
    Jquery真的不难~第一回 编程基础知识
    Jquery真的不难~第三回 如何改变HTML标签的样式
    Castle~实现IoC容器
    Jquery真的不难~第二回 选择器的使用及性能
    Castle~动态代理实现对方法的拦截
    jquery学习手记(8)遍历
    jquery学习手记(2)jQuery对象和DOM对象相互转换
    jquery学习手记(9)事件基础知识
  • 原文地址:https://www.cnblogs.com/Cwolf9/p/9513196.html
Copyright © 2011-2022 走看看