zoukankan      html  css  js  c++  java
  • 2018 hdu 多校 第二场

    因为3点半才来(其实是3点50,刚刚到酒店就开始了= =队友也是一个那时刚刚睡醒= =

    1003 BPM136

    实际上一个连通块的贡献是max(odd_deg_num/2,1),,因为你可以连接虚边,让他们度数为奇数的节点个数少于等于2,然后每条路径只有两端的点度数为1,其他的都是2,那么贡献就得证了

    其他的欧拉回路搞搞就好了

    odd忘记clear()疯狂RE半小时= =

    边正负搞反了WA一小时= =

      1 /* ***********************************************
      2 Author        :BPM136
      3 Created Time  :2018/7/26 23:24:52
      4 File Name     :1003.cpp
      5 ************************************************ */
      6 
      7 #include<iostream>
      8 #include<cstdio>
      9 #include<algorithm>
     10 #include<cstdlib>
     11 #include<cmath>
     12 #include<cstring>
     13 #include<iomanip>
     14 #include<bitset>
     15 #include<queue>
     16 #include<ctime>
     17 #include<set>
     18 #include<map>
     19 #include<vector>
     20 #include<cassert>
     21 #include<functional>
     22 #define pb push_back
     23 #define popb pop_back
     24 #define MID ((l+r)>>1)
     25 #define LSON (k<<1)
     26 #define RSON (k<<1|1)
     27 #define get(a,i) ((a)&(1<<(i-1)))
     28 #define PAU putchar(32)
     29 #define ENT putchar(10)
     30 #define clr(a,b) memset(a,b,sizeof(a))
     31 #define rep(_i,_a,_b) for(int _i=(_a);_i<=(_b);_i++)
     32 #define down(_i,_a,_b) for(int _i=(_a);_i>=(_b);_i--)
     33 #define FOR(_i,_b) for(int _i=1;_i<=(_b);_i++)
     34 #define efo(_i,_a) for(int _i=last[(_a)];_i!=0;_i=e[_i].next)
     35 #define Remax(a,b) if(b>a) a=b;
     36 #define Remin(a,b) if(b<a) a=b;
     37 #define filein(x) freopen(#x".in","r",stdin)
     38 #define fileout(x) freopen(#x".out","w",stdout)
     39 #define file(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
     40 #define mkd(x) freopen(#x".in","w",stdout);
     41 #define setlargestack(x) int _SIZE=x<<20;char *_PPP=(char*)malloc(size)+_SIZE;__asm__("movl %0, %%esp
    " :: "r"(_PPP));
     42 #define END system("pause")
     43 #define read2(a,b) read(a),read(b)
     44 #define read3(a,b,c) read(a),read(b),read(c)
     45 #define readg(_x1,_y1,_x2,_y2) read(_x1),read(_y1),read(_x2),read(_y2)
     46 using namespace std;
     47 
     48 typedef long long ll;
     49 typedef double DB;
     50 typedef long double LD;
     51 typedef unsigned int  UI;
     52 typedef unsigned long long ULL;
     53 typedef vector<int> VI;
     54 typedef set<int> SI;
     55 typedef set<int , greater<int> > SIG;
     56 typedef map<int, int > MII;
     57 typedef map<int, int, greater<int> > MIIG;
     58 
     59 const int N = 110005;
     60 
     61 int n,m;
     62 
     63 struct edge {
     64     int y,id,next;
     65     bool f;
     66 }e[N<<2];
     67 int last[N],ne;
     68 
     69 void add(int x,int y,int id) {
     70     e[++ne].y=y;
     71     e[ne].f=0;
     72     e[ne].id=id;
     73     e[ne].next=last[x];
     74     last[x]=ne;
     75 }
     76 void add2(int x,int y,int id) {
     77     add(x,y,id);
     78     add(y,x,id);
     79 }
     80 
     81 int deg[N];
     82 int num,deg_num;
     83 int ans;
     84 
     85 bool vis[N];
     86 
     87 VI odd;
     88 
     89 void init() {
     90     ans=0;
     91     ne=1;
     92     clr(last,0);
     93     clr(deg,0);
     94     odd.clear();
     95 }
     96 
     97 void color(int x) {
     98     vis[x]=1;
     99     if(deg[x]&1) {
    100         deg_num++;
    101         odd.pb(x);
    102     }
    103     num++;
    104     efo(i,x) if(vis[e[i].y]==0) {
    105         color(e[i].y);
    106     }
    107 }
    108 
    109 VI sta[N<<1];
    110 void dfs(int x) {
    111     efo(i,x) if(e[i].f==0) {
    112         e[i].f=e[i^1].f=1;
    113         dfs(e[i].y);
    114         int tmp=e[i].id*((i&1)?1:-1);
    115         if(tmp!=0) sta[ans].pb(tmp); else sta[++ans].clear();
    116     }
    117 }
    118 
    119 int main() {
    120     while(scanf("%d%d",&n,&m)!=EOF) {
    121         init();
    122         rep(i,1,m) {
    123             int x,y;
    124             scanf("%d%d",&x,&y);
    125             add2(x,y,i);
    126             deg[x]++; 
    127             deg[y]++;
    128         }
    129         clr(vis,0);
    130         rep(i,1,n) if(vis[i]==0 && deg[i]) {
    131             num=deg_num=0;
    132             color(i);
    133             sta[++ans].clear();
    134             rep(j,1,deg_num/2-1) add2(odd[j*2],odd[j*2+1],0);
    135             if(deg_num==0) odd.pb(i);
    136             dfs(odd[0]);
    137             odd.clear();
    138         }
    139         printf("%d
    ",ans);
    140         rep(i,1,ans) {
    141             printf("%d",sta[i].size());
    142             rep(j,0,sta[i].size()-1) printf(" %d",sta[i][j]);
    143             ENT;
    144         }
    145     }
    146     return 0;
    147 }
    View Code

    1004 小甜甜

    全部yes就好了

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cmath>
     5 #include <vector>
     6 #include <queue>
     7 #include <set>
     8 #include <map>
     9 #include <string>
    10 #include <string.h>
    11 #include <stdlib.h>
    12 #include <time.h>
    13 #include <climits>
    14 
    15 using namespace std;
    16 
    17 int main(){
    18     int n;
    19     while (scanf("%d",&n)!=EOF) puts("Yes");
    20     return 0;
    21 }
    View Code

    1005 BPM136

    https://blog.csdn.net/AC_hunter/article/details/81214033

      1 /* ***********************************************
      2 Author        :BPM136
      3 Created Time  :2018/7/26 22:58:35
      4 File Name     :1005.cpp
      5 ************************************************ */
      6 
      7 #include<iostream>
      8 #include<cstdio>
      9 #include<algorithm>
     10 #include<cstdlib>
     11 #include<cmath>
     12 #include<cstring>
     13 #include<iomanip>
     14 #include<bitset>
     15 #include<queue>
     16 #include<ctime>
     17 #include<set>
     18 #include<map>
     19 #include<vector>
     20 #include<cassert>
     21 #include<functional>
     22 #define pb push_back
     23 #define popb pop_back
     24 #define MID ((l+r)>>1)
     25 #define LSON (k<<1)
     26 #define RSON (k<<1|1)
     27 #define get(a,i) ((a)&(1<<(i-1)))
     28 #define PAU putchar(32)
     29 #define ENT putchar(10)
     30 #define clr(a,b) memset(a,b,sizeof(a))
     31 #define rep(_i,_a,_b) for(int _i=(_a);_i<(_b);_i++)
     32 #define down(_i,_a,_b) for(int _i=(_a);_i>(_b);_i--)
     33 #define FOR(_i,_b) for(int _i=1;_i<=(_b);_i++)
     34 #define efo(_i,_a) for(int _i=last[(_a)];_i!=0;_i=e[_i].next)
     35 #define Remax(a,b) if(b>a) a=b;
     36 #define Remin(a,b) if(b<a) a=b;
     37 #define filein(x) freopen(#x".in","r",stdin)
     38 #define fileout(x) freopen(#x".out","w",stdout)
     39 #define file(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
     40 #define mkd(x) freopen(#x".in","w",stdout);
     41 #define setlargestack(x) int _SIZE=x<<20;char *_PPP=(char*)malloc(size)+_SIZE;__asm__("movl %0, %%esp
    " :: "r"(_PPP));
     42 #define END system("pause")
     43 #define read2(a,b) read(a),read(b)
     44 #define read3(a,b,c) read(a),read(b),read(c)
     45 #define readg(_x1,_y1,_x2,_y2) read(_x1),read(_y1),read(_x2),read(_y2)
     46 using namespace std;
     47 
     48 typedef long long ll;
     49 typedef double DB;
     50 typedef long double LD;
     51 typedef unsigned int  UI;
     52 typedef unsigned long long ULL;
     53 typedef vector<int> VI;
     54 typedef set<int> SI;
     55 typedef set<int , greater<int> > SIG;
     56 typedef map<int, int > MII;
     57 typedef map<int, int, greater<int> > MIIG;
     58 
     59 namespace fastIO{  
     60     #define BUF_SIZE 100000  
     61     #define OUT_SIZE 100000  
     62     //fread->read  
     63     bool IOerror=0;  
     64     inline char nc(){  
     65         static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE;  
     66         if (p1==pend){  
     67             p1=buf; pend=buf+fread(buf,1,BUF_SIZE,stdin);  
     68             if (pend==p1){IOerror=1;return -1;}  
     69             //{printf("IO error!
    ");system("pause");for (;;);exit(0);}  
     70         }  
     71         return *p1++;  
     72     }  
     73     inline bool blank(char ch){return ch==32||ch==10||ch==13||ch==9;}  
     74     inline bool enter(char ch){return ch==10||ch==13;}
     75     inline void read(int &x){  
     76         bool sign=0; char ch=nc(); x=0;  
     77         for (;blank(ch);ch=nc());  
     78         if (IOerror)return;  
     79         if (ch==45)sign=1,ch=nc();  
     80         for (;ch>=48&&ch<=57;ch=nc())x=x*10+ch-48;  
     81         if (sign)x=-x;  
     82     }  
     83     inline void read(ll &x){  
     84         bool sign=0; char ch=nc(); x=0;  
     85         for (;blank(ch);ch=nc());  
     86         if (IOerror)return;  
     87         if (ch==45)sign=1,ch=nc();  
     88         for (;ch>=48&&ch<=57;ch=nc())x=x*10+ch-48;  
     89         if (sign)x=-x;  
     90     }  
     91     inline void read(double &x){  
     92         bool sign=0; char ch=nc(); x=0;  
     93         for (;blank(ch);ch=nc());  
     94         if (IOerror)return;  
     95         if (ch==45)sign=1,ch=nc();  
     96         for (;ch>=48&&ch<=57;ch=nc())x=x*10+ch-48;  
     97         if (ch==46){  
     98             double tmp=1; ch=nc();  
     99             for (;ch>=48&&ch<=57;ch=nc())tmp/=10.0,x+=tmp*(ch-48);  
    100         }  
    101         if (sign)x=-x;  
    102     }  
    103     inline void read(char *s){  
    104         char ch=nc();  
    105         for (;blank(ch);ch=nc());  
    106         if (IOerror)return;  
    107         for (;!blank(ch)&&!IOerror;ch=nc())*s++=ch;  
    108         *s=0;  
    109     }  
    110     inline void read(char *s,bool f) {
    111         char ch=nc();
    112         for (;blank(ch);ch=nc());
    113         if(IOerror)return;
    114         for(;!enter(ch)&&!IOerror;ch=nc())*s++=ch;
    115         *s=0;
    116     }
    117     inline void read(char &c){  
    118         for (c=nc();blank(c);c=nc());  
    119         if (IOerror){c=-1;return;}  
    120     } 
    121 #undef OUT_SIZE  
    122 #undef BUF_SIZE  
    123 }; using namespace fastIO;
    124 
    125 int a[2500][2500];
    126 
    127 int main() {
    128     puts("2000");
    129     clr(a,0);
    130     int MOD = 47;
    131     rep(i,0,MOD) rep(j,0,MOD) rep(k,0,MOD) {
    132         a[i*MOD+j][k*MOD+(j*k+i)%MOD]=1;
    133     }
    134     rep(i,0,2000) {
    135         rep(j,0,2000) printf("%d",a[i][j]);
    136         printf("
    ");
    137     }
    138     return 0;
    139 }
    View Code

    1007 小洛洛

    线段树暴力pushdown就好了,维护还需要几步就需要+1了

      1 #include <cstdio>
      2 #include <cstdlib>
      3 #include <cstring>
      4 #include <cmath>
      5 #include <algorithm>
      6 #include <vector>
      7 using namespace std;
      8 
      9 const int N = 100002;
     10 int perm[N];
     11 
     12 struct T_ {
     13     int s, pos;
     14     int mark;
     15     int sum, nxt;
     16     T_ *l, *r;
     17 
     18     T_() {}
     19     T_(int _pos) {
     20         s = 1;
     21         pos = _pos;
     22         mark = sum = 0;
     23         nxt = perm[pos];
     24         l = r = nullptr;
     25     }
     26     T_(T_ *_l, T_ *_r) {
     27         l = _l, r = _r;
     28         s = l->s + r->s;
     29         pos = l->pos;
     30         mark = 0;
     31         sum = l->sum + r->sum;
     32         nxt = min(l->nxt, r->nxt);
     33     }
     34 
     35     T_ *app_(int x) {
     36         if(!l) { // leaf
     37             if(x < nxt)
     38                 nxt -= x;
     39             else {
     40                 sum += (x - nxt) / perm[pos] + 1;
     41                 nxt = perm[pos] - (x - nxt) % perm[pos];
     42             }
     43         } else {
     44             mark += x;
     45             if(x >= nxt)
     46                 down_();
     47             else
     48                 nxt -= x;
     49         }
     50         return this;
     51     }
     52 
     53     T_ down_() {
     54         if(mark)
     55             return *this = T_(l->app_(mark), r->app_(mark));
     56         return *this;
     57     }
     58 } ss[N * 4], *sp;
     59 
     60 T_ *make_(int l, int r) {
     61     int m = l + (r - l) / 2;
     62     T_ *c = sp++;
     63     return r - l == 1 ? new(c) T_(l) : new(c) T_(make_(l, m), make_(m, r));
     64 }
     65 
     66 template<typename F>
     67 T_ *seg_(T_ *c, int l, int r, F f) {
     68     if(l <= 0 && r >= c->s)
     69         return f(c), c;
     70     c->down_();
     71     int m = c->s / 2;
     72     *c = T_(
     73         l < m ? seg_(c->l, l, r, f) : c->l,
     74         m < r ? seg_(c->r, l - m, r - m, f) : c->r
     75     );
     76     return c;
     77 }
     78 
     79 int main() {
     80     int n, q;
     81     while(scanf("%d%d", &n, &q) != EOF) {
     82         for(int i = 0; i < n; ++i)
     83             scanf("%d", perm + i);
     84         sp = ss;
     85         T_ *rt = make_(0, n);
     86         while(q--) {
     87             char op[8];
     88             int l, r;
     89             scanf("%s%d%d", op, &l, &r);
     90             --l;
     91             if(op[0] == 'q') {
     92                 int x = 0;
     93                 seg_(rt, l, r, [&](T_ *c){x += c->sum;});
     94                 printf("%d
    ", x);
     95             } else
     96                 seg_(rt, l, r, [](T_ *c){c->app_(1);});
     97         }
     98     }
     99     return 0;
    100 }
    View Code

    1010 小洛洛

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cmath>
     5 #include <vector>
     6 #include <queue>
     7 #include <set>
     8 #include <map>
     9 #include <string>
    10 #include <string.h>
    11 #include <stdlib.h>
    12 #include <time.h>
    13 #include <climits>
    14 
    15 using namespace std;
    16 
    17 const int maxN=1e5+7;
    18 
    19 typedef pair<int,int> pii;
    20 
    21 int n;
    22 int a[maxN];
    23 int h[maxN];
    24 pii p[maxN];
    25 
    26 int c[maxN];
    27 
    28 int Hash(int x){
    29     return lower_bound(h+1,h+n+1,x)-h;
    30 }
    31 
    32 int lowbit(int x){
    33     return x&(-x);
    34 }
    35 
    36 int query(int x){
    37     int ret=0;
    38     while (x){
    39         ret+=c[x];
    40         x-=lowbit(x);
    41     }
    42     return ret;
    43 }
    44 
    45 void add(int x){
    46     while (x<=n){
    47         c[x]++;
    48         x+=lowbit(x);
    49     }
    50 }
    51 
    52 void work(){
    53     int x,y;
    54     scanf("%d%d",&x,&y);
    55 
    56     for (int i=1;i<=n;i++) scanf("%d",&a[i]),h[i]=a[i];
    57     sort(h+1,h+n+1);
    58 
    59     for (int i=1;i<=n;i++) {
    60         p[i].first=Hash(a[i]);
    61         p[i].second=i;
    62         c[i]=0;
    63     }    
    64 
    65     sort(p+1,p+n+1);
    66 
    67     long long ans=0;
    68 
    69     for (int i=n;i>0;i--){
    70         ans+=query(p[i].second);
    71         add(p[i].second);
    72     }
    73 
    74     printf("%lld
    ",1LL*min(x,y)*ans);
    75 }
    76 
    77 int main(){
    78     while (scanf("%d",&n)!=EOF) work();
    79     return 0;
    80 }
    View Code
  • 相关阅读:
    POJ3159 Candies —— 差分约束 spfa
    POJ1511 Invitation Cards —— 最短路spfa
    POJ1860 Currency Exchange —— spfa求正环
    POJ3259 Wormholes —— spfa求负环
    POJ3660 Cow Contest —— Floyd 传递闭包
    POJ3268 Silver Cow Party —— 最短路
    POJ1797 Heavy Transportation —— 最短路变形
    POJ2253 Frogger —— 最短路变形
    POJ1759 Garland —— 二分
    POJ3685 Matrix —— 二分
  • 原文地址:https://www.cnblogs.com/MyGirlfriends/p/9375046.html
Copyright © 2011-2022 走看看