比赛记录

注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的

1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn

题解


1001 Salty Fish

unsolved.

1002 Nonsense Time

https://blog.csdn.net/liufengwei1/article/details/98785302

代码:

#include<bits/stdc++.h>
#define maxl 50010
using namespace std;int n,mxid,mxval;
int a[maxl],kk[maxl],dy[maxl],ans[maxl];
int b[maxl],dp[maxl],frm[maxl];
bool in[maxl],froz[maxl];inline void prework()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),dy[a[i]]=i;for(int i=1;i<=n;i++)scanf("%d",&kk[i]),froz[i]=false;
}inline void upd(int i,int x)
{while(i<=n){if(dp[b[i]]<dp[x])b[i]=x;i+=i&-i;}
}inline int qry(int i)
{int res=0;while(i){if(dp[res]<dp[b[i]])res=b[i];i-=i&-i;}return res;
}inline void lis()
{for(int i=1;i<=n;i++)in[i]=false,frm[i]=0,b[i]=0,dp[i]=0;int id;mxval=0;mxid=0;for(int i=1;i<=n;i++)if(!froz[i]){id=qry(a[i]);dp[i]=dp[id]+1;frm[i]=id;if(dp[i]>mxval)mxval=dp[i],mxid=i;upd(a[i],i);}int u=mxid;while(u!=0)in[u]=true,u=frm[u];
}inline void mainwork()
{lis();for(int i=n;i>=1;i--){ans[i]=mxval;froz[kk[i]]=true;if(in[kk[i]])lis();}
}inline void print()
{for(int i=1;i<=n;i++)printf("%d%c",ans[i],(i==n)?'\n':' ');
}int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();print();}return 0;
}

View Code

1003 Milk Candy

unsolved.

1004 Speed Dog

unsolved.

1005 Snowy Smile

https://blog.csdn.net/liufengwei1/article/details/98762357

代码:

#include<bits/stdc++.h>
#define maxl 2010
using namespace std;int n,totx,toty;
int ax[maxl],ay[maxl],w[maxl];
long long ans;
long long a[maxl];
int numx[maxl],numy[maxl];
struct node
{int l,r;long long sum,lrmx;long long rmx,lmx;
}tree[maxl*4];
vector <int> tmpy[maxl];inline void prework()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%d",&ax[i],&ay[i],&w[i]);numx[i]=ax[i];numy[i]=ay[i];}sort(numx+1,numx+1+n);totx=unique(numx+1,numx+1+n)-numx-1;for(int i=1;i<=totx;i++)tmpy[i].clear();for(int i=1;i<=n;i++){    ax[i]=lower_bound(numx+1,numx+1+totx,ax[i])-numx;tmpy[ax[i]].push_back(i);}sort(numy+1,numy+1+n);toty=unique(numy+1,numy+1+n)-numy-1;for(int i=1;i<=n;i++)ay[i]=lower_bound(numy+1,numy+1+toty,ay[i])-numy;
}inline void pushup(int k)
{int ls=k<<1,rs=k<<1|1;tree[k].sum=tree[ls].sum+tree[rs].sum;tree[k].lrmx=max(tree[ls].lrmx,tree[rs].lrmx);tree[k].lrmx=max(tree[k].lrmx,tree[ls].rmx+tree[rs].lmx);tree[k].lmx=max(tree[ls].lmx,tree[rs].lmx+tree[ls].sum);tree[k].rmx=max(tree[rs].rmx,tree[ls].rmx+tree[rs].sum);
}inline void build(int k,int l,int r)
{tree[k].l=l;tree[k].r=r;if(l==r){tree[k].sum=a[l];tree[k].lrmx=tree[k].lmx=tree[k].rmx=max(0ll,a[l]);return;}int mid=(l+r)>>1,ls=k<<1,rs=k<<1|1;build(ls,l,mid);build(rs,mid+1,r);pushup(k);
}inline void upd(int k,int l)
{if(tree[k].l==tree[k].r){tree[k].sum=a[l];tree[k].lrmx=tree[k].lmx=tree[k].rmx=max(0ll,a[l]);return;        }int mid=(tree[k].l+tree[k].r)>>1;if(l<=mid)upd(k<<1,l);elseupd(k<<1|1,l);pushup(k);
}inline void mainwork()
{ans=0;int l,id;for(int lowx=1;lowx<=totx;lowx++){for(int i=1;i<=toty;i++)a[i]=0;build(1,1,toty);for(int upx=lowx;upx<=totx;upx++){l=tmpy[upx].size();for(int i=0;i<l;i++){id=tmpy[upx][i];a[ay[id]]+=w[id];upd(1,ay[id]);}ans=max(tree[1].lrmx,ans);}}
}inline void print()
{printf("%lld\n",ans);
}int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();print();}return 0;
}

View Code

1006 Faraway

unsolved.

1007 Support or Not

unsolved.

1008 TDL

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int up=1005;
const LL INF=2e18;//!
int m;
bool check(long long n,long long kn)
{int cnt=0; if(n==0)return false; for(long long i=n+1;;i++)if(__gcd(n,i)==1){cnt++;if(cnt==m) return kn==i;}return false;
}
int main()
{int t;scanf("%d",&t);while(t--){LL k,n;scanf("%lld%d",&k,&m);LL ans=INF;for(int i=1;i<=up;i++){n=i^k;if(check(n,i+n)) ans=min(ans,n);}if(ans==INF){puts("-1");}else{printf("%lld\n",ans);}}return 0;
}

View Code

1009 Three Investigators

unsolved.

1010 Ridiculous Netizens

unsolved.

1011 11 Dimensions

题解:https://blog.csdn.net/liufengwei1/article/details/98962651

  1 #include<bits/stdc++.h>
  2 #define maxl 50010
  3 using namespace std;
  4
  5 const long long inf=1e18;
  6 const int mod=1e9+7;
  7
  8 int n,m,q,up=17;
  9 int mi[maxl];
 10 int g[21][21];
 11 int go[20][maxl][21],val[20][maxl][21];
 12 long long f[maxl][21];
 13 long long st[20][maxl][21],en[20][maxl][21];
 14 bool can[maxl][10];
 15 char s[maxl];
 16
 17 inline long long fix(long long x)
 18 {
 19     return x<inf?x:inf;
 20 }
 21
 22 inline void prework()
 23 {
 24     scanf("%d%d%d",&n,&m,&q);
 25     scanf("%s",s+1);
 26     for(int i=0;i<m;i++)
 27         for(int j=0;j<10;j++)
 28             g[i][j]=(i*10+j)%m;
 29     for(int i=1;i<=n;i++)
 30     if(s[i]=='?')
 31         for(int j=0;j<10;j++)
 32             can[i][j]=true;
 33     else
 34     {
 35         for(int j=0;j<10;j++)
 36             can[i][j]=false;
 37         can[i][s[i]-'0']=true;
 38     }
 39     f[n+1][0]=1;
 40     for(int j=1;j<m;j++)
 41         f[n+1][j]=0;
 42     long long tmp,sz,now,sum;int nxt;
 43     for(int i=n;i>=1;i--)
 44         for(int j=0;j<m;j++)
 45         {
 46             tmp=0;sz=-1;nxt=-1;
 47             for(int k=0;k<10;k++)
 48             if(can[i][k])
 49             {
 50                 now=f[i+1][g[j][k]];
 51                 tmp=fix(tmp+now);
 52                 if(now>sz) nxt=k,sz=now;
 53             }
 54             f[i][j]=tmp;
 55             go[0][i][j]=g[j][nxt];
 56             val[0][i][j]=nxt;
 57             sum=0;
 58             for(int k=0;k<nxt;k++)
 59             if(can[i][k])
 60                 sum=fix(sum+f[i+1][g[j][k]]);
 61             st[0][i][j]=sum;
 62             en[0][i][j]=fix(sum+f[i+1][g[j][nxt]]);
 63         }
 64     for(int k=1;k<up;k++)
 65         for(int i=1;i+(1<<k)<=n+1;i++)
 66             for(int j=0;j<m;j++)
 67             {
 68                 int x=go[k-1][i][j],len=1<<(k-1);
 69                 go[k][i][j]=go[k-1][i+len][x];
 70                 val[k][i][j]=(1ll*val[k-1][i][j]*mi[len]+val[k-1][i+len][x])%mod;
 71                 st[k][i][j]=fix(st[k-1][i][j]+st[k-1][i+len][x]);
 72                 en[k][i][j]=fix(st[k-1][i][j]+en[k-1][i+len][x]);
 73             }
 74 }
 75
 76 inline int query(long long k)
 77 {
 78     if(k>f[1][0]) return -1;
 79     int id=1,res=0,ret=0;
 80     long long tmp;
 81     while(id<=n)
 82     {
 83         for(int i=up-1;i>=0;i--)
 84         if(id+(1<<i)<=n+1 && st[i][id][res]<k && k<=en[i][id][res])
 85         {
 86             ret=(1ll*ret*mi[1<<i]+val[i][id][res])%mod;
 87             k-=st[i][id][res];
 88             res=go[i][id][res];
 89             id+=1<<i;
 90         }
 91         if(id>n) break;
 92         for(int i=0;i<10;i++)
 93         if(can[id][i])
 94         {
 95             tmp=f[id+1][g[res][i]];
 96             if(k>tmp)
 97                 k-=tmp;
 98             else
 99             {
100                 ret=(10LL*ret+i)%mod;
101                 id++;
102                 res=g[res][i];
103                 break;
104             }
105         }
106     }
107     return ret;
108 }
109
110 inline void mainwork()
111 {
112     long long x;
113     for(int i=1;i<=q;i++)
114     {
115         scanf("%lld",&x);
116         printf("%d\n",query(x));
117     }
118 }
119
120 int main()
121 {
122     mi[0]=1;
123     for(int i=1;i<maxl;i++)
124         mi[i]=1ll*10*mi[i-1]%mod;
125     int t;
126     scanf("%d",&t);
127     for(int i=1;i<=t;i++)
128     {
129         prework();
130         mainwork();
131 //        print();
132     }
133     return 0;
134 }

View Code

1012 Stay real

#include<bits/stdc++.h>
#define maxl 100010
#define mp make_pair
using namespace std;int n;
int a[maxl];
long long ans1,ans2;
typedef pair<int,int> p;
priority_queue<p> q;
bool in[maxl];inline void prework()
{while(!q.empty()) q.pop();scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]),in[i]=true;if(i*2>n)q.push(mp(a[i],i));}
}inline void mainwork()
{p d;ans1=0,ans2=0;for(int i=1;i<=n;i++){d=q.top();q.pop();in[d.second]=false;if(!in[d.second] && !in[d.second^1])q.push(mp(a[d.second/2],d.second/2));if(i&1)ans1+=d.first;elseans2+=d.first;}
}inline void print()
{printf("%lld %lld\n",ans1,ans2);
}int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();print();}return 0;
}

View Code


转载于:https://www.cnblogs.com/songorz/p/11319262.html

2019 杭电多校第六场 题解相关推荐

  1. 杭电多校第六场个人补题6 7 9 10 12

    杭电多校第六场个人补题6 7 9 10 12 6 题意 给定一棵有n结点的树,点权为1~n,求对所有结点子树的mex操作和的最大值 思路 其实就是从最底部开始网上找,由于0是唯一的一个,所欲最好给在最 ...

  2. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  3. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  4. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  5. 杭电多校第六场-J-Ridiculous Netizens

    Problem Description Mr. Bread has a tree T with n vertices, labeled by 1,2,-,n. Each vertex of the t ...

  6. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  7. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  8. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)

    题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...

  9. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

最新文章

  1. 光流估计:从传统方法到深度学习
  2. 微软和 SAP 扩展了云环境中的合作关系
  3. 古塔问题matlab,基于 Matlab 对古塔变形趋势探究的数学模型
  4. Alpha冲刺之事后诸葛亮
  5. 【WebRTC---入门篇】(十七)实现1V1音视频实时互动直播系统
  6. linux加密框架 crypto 算法管理 - 哈希算法应用实例
  7. HDU 4190 Distributing Ballot Boxes【二分答案】
  8. 杭电4508湫湫系列故事——减肥记I
  9. java io类型_Java NIO之Java中的IO分类
  10. cefsharp作为采集工具(学习笔记)
  11. 微pe不识别nvme固态硬盘_微pe工具箱2.0下载|微PE2.0支持注入NVMe固态硬盘M2SSD驱动版 下载_当游网...
  12. Checkra1n 越狱常见问题大全
  13. ISO七层协议与功能
  14. 禧龙字王 v1.0 beta 4 服务器版 是什么
  15. webstorm 使用技巧
  16. MyBatis中insert用法
  17. 计算机专业英语谐音大全,英语单词谐音记忆法汇总整理
  18. 百度网盘怎么取消自动续费
  19. 大华股份发布Dahua Think #战略;国微思尔芯发布芯神瞳逻辑矩阵LX2;爱设计获数千万元融资 | 全球TMT...
  20. 计算机启动bios设置程序,电脑怎样进入BIOS设置

热门文章

  1. 多级三目运算符的判断
  2. 在设备上添加项目失败_使用VisualGDB将Keil项目导入VisualStudio
  3. linux如何安装zip文件格式,如何在Linux下创建与解压,安装zip, tar, tar.gz和tar.bz2文件...
  4. MediaInfo源代码分析 5:JPEG解析代码分析
  5. react 动态添加组件属性_React的组件动态参数使用Underscore和Context来传递
  6. python在规划类专业的作用_城乡规划学Python、Gis有哪些具体的作用?
  7. 串口控制led闪烁课程设计_排除led显示屏故障的方法及步骤
  8. 电池供电的电容麦_板儿砖变电池?!是的,科学家已成功实现这一功能
  9. svn: E155007 和 E155004
  10. 玩家国度ROG 幻14 拆机 升级 换固态 换配件 教程