2018 ACM 网络选拔赛 南京赛区
A. An Olympian Math Problem
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; int main()
{
int t;
ll n;
scanf("%d",&t);
while (t--)
{
scanf("%lld",&n);
printf("%lld\n",n-);
}
return ;
}
B. The writing on the wall
与 https://leetcode.com/problems/maximal-rectangle/description/ 这道题很像
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+;
const int maxn=1e5+;
const int maxm=1e2+; int a[maxn][maxm],c[maxn][maxm];
int qx[maxm],qy[maxm]; int main()
{
ll sum=;
int t,T,n,m,g,x,y,i,j,k;
bool vis;
scanf("%d",&t);
for (T=;T<=t;T++)
{
memset(a,,sizeof(a));
scanf("%d%d%d",&n,&m,&g);
while (g--)
{
scanf("%d%d",&x,&y);
a[x][y]=;
}
for (j=;j<=m;j++)
for (i=;i<=n;i++)
c[i][j]=(a[i][j]==)?:c[i-][j]+;
sum=;
for (i=;i<=n;i++)
{
///以a[i][j]作为右下方
g=;
for (j=;j<=m;j++)
{
if (g== || c[i][j]>qx[g])
vis=;
else
vis=;
sum+=c[i][j];
qy[g+]=j; while (qx[g]>c[i][j])
sum+=1ll*(qy[g+]-qy[g])*c[i][j],g--;
k=g;
while (k)
sum+=1ll*(qy[k+]-qy[k])*qx[k],k--;
if (g== || qx[g]!=c[i][j])
g++;
if (vis)
qy[g]=j;
qx[g]=c[i][j];
}
}
printf("Case #%d: %lld\n",T,sum);
}
return ;
}
/*
100
3 3 3
1 1
1 2
2 1 3 3 4
1 1
1 2
2 1
2 2 2 3 0 100000 100 0
*/
C. GDY
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=2e2+;
const int maxm=2e4; int s[maxm],a[maxn][maxm],g[maxn];
int value[]={,,,,,,,,,,,,,}; int cmp(int x,int y)
{
return value[x]>value[y];
} int main()
{
int t,T,n,m,num,i,j,sum;
int x,y,z;
scanf("%d",&t);
for (T=;T<=t;T++)
{
memset(g,,sizeof(g)); scanf("%d%d",&n,&m);
for (i=;i<m;i++)
scanf("%d",&s[i]);
num=;
for (i=;i<n;i++)
{
for (j=;j<;j++)
{
if (num==m)
break;
a[i][j]=s[num++];
}
sort(a[i],a[i]+j,cmp);
g[i]=j;
} z=a[][g[]-];//previous number
g[]--;
y=;//has y persons
x=;//pos
while ()
{
for (i=g[x]-;i>=;i--)
if (value[z]+==value[a[x][i]] || (a[x][i]== && z!=))
break; if (i!=-)
{
z=a[x][i];
a[x][i]=;
sort(a[x],a[x]+g[x],cmp);
g[x]--;
if (g[x]==)
break;
y=;
}
else if (y!=n-)
y++;
else
{
x=(x+)%n;
for (i=x;;i=(i+)%n)
{
if (num==m)
break;
else
{
a[i][g[i]++]=s[num++];
sort(a[i],a[i]+g[i],cmp);
}
if (i==(x-+n)%n)
break;
} z=a[x][g[x]-];
g[x]--;
if (g[x]==)
break;
y=;
} x=(x+)%n;
}
printf("Case #%d:\n",T);
for (i=;i<n;i++)
if (i==x)
printf("Winner\n");
else
{
sum=;
for (j=;j<g[i];j++)
sum+=a[i][j];
printf("%d\n",sum);
}
}
return ;
}
/*
10
2 6
3 5 7 9 11 4 3 20
2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 3 19
2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 3 20
3 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 10
3 4 5 6 7 2 3 4 5 6 3 15
3 4 5 6 7 12 12 12 12 12 13 13 13 13 13 3 11
1 2 3 4 5 6 7 8 9 10 11 3 13
1 2 3 4 5 6 7 8 9 10 11 12 13 1
3 17
1 2 3 4 5 6 7 8 9 10 11 12 13 12 11 10 9 */
E. AC Challenge
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf -1e18
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; ll f[<<]; struct node
{
ll value;
int pos,t;
}; struct cmp1
{
bool operator() (node a,node b)
{
return a.value>b.value;
}
}; //priority_queue<node>st;
priority_queue<node,vector<node>,cmp1>st;
int er[],a[],b[],v[]; int main()
{
int n,m,s,i,j,value,pos,t;
ll r=,rr;
for (i=;i<;i++)
er[i]=(<<i); scanf("%d",&n);
for (i=;i<(<<n);i++)
f[i]=inf; for (i=;i<n;i++)
{
scanf("%d%d%d",&a[i],&b[i],&m);
v[i]=;
while (m--)
{
scanf("%d",&s);
v[i]+=(er[s-]);
}
if (v[i]==)
{
f[er[i]]=a[i]+b[i];
st.push({a[i]+b[i],er[i],});
r=max(r,(ll)a[i]+b[i]);
}
} while (!st.empty())
{
value=st.top().value;
pos=st.top().pos;
t=st.top().t;
st.pop();
for (i=;i<n;i++)
if ((pos & er[i])== && (pos & v[i])==v[i] && value+1ll*t*a[i]+b[i]>f[pos|er[i]])
{
rr=value+1ll*t*a[i]+b[i];
f[pos|er[i]]=rr;
r=max(r,rr);
st.push({rr,pos|er[i],t+});
}
}
printf("%lld",r);
return ;
}
/*
3
1 2 0
1 5 0
8 1 0
*/
G. Lpl and Energy-saving Lamps
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e18
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; struct node
{
int x,y;
}f[maxn],r[maxn]; int tag[maxn<<],a[maxn],x,y; int cmp(node a,node b)
{
return a.x<b.x;
} void build(int index,int l,int r)
{
if (l==r)
scanf("%d",&tag[index]);
else
{
int m=(l+r)>>;
build(index<<,l,m);
build(index<<|,m+,r);
tag[index]=min(tag[index<<],tag[index<<|]);
}
} int query(int index,int l,int r,int v)
{
if (l==r)
{
if (tag[index]>v)
return ; x++;
y-=tag[index];
tag[index]=inf;
return l;
}
else
{
int m=(l+r)>>,z;
if (tag[index<<]<=v)
z=query(index<<,l,m,v); else
z=query(index<<|,m+,r,v);
tag[index]=min(tag[index<<],tag[index<<|]);
return z;
}
} int main()
{
int n,m,q,Q,d,index,i,j;
scanf("%d%d",&n,&m);
build(,,n); scanf("%d",&q);
for (Q=;Q<=q;Q++)
{
scanf("%d",&d);
f[Q].x=d;
f[Q].y=Q;
}
sort(f+,f+q+,cmp); index=;
x=;
y=;
for (i=;i<=f[q].x;i++)
{
y+=m;
j=;
while (j)
j=query(,,n,y); while (f[index].x==i)
{
r[f[index].y]={x,y};
index++;
}
} for (i=;i<=q;i++)
printf("%d %d\n",r[i].x,r[i].y);
return ;
}
J. Sum
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=2e7+; int zhi[maxn],f[maxn];
bool vis[maxn],v[maxn]; int main()
{
int t,i,j,k,x=,y=,value=2e7;
ll n,sum;
memset(vis,,sizeof(vis));
memset(v,,sizeof(v));
for (i=;i<=value;i++)
{
if (!vis[i])
{
x++;
zhi[x]=i;
}
for (j=;j<=x;j++)
{
k=i*zhi[j];
if (k>value)
break;
vis[k]=;
v[k]=v[i];
if (i%zhi[j]==)
{
v[k]=;
break;
}
}
}
for (i=;i<=value;i++)
if (!v[i])
{
y++;
f[y]=i;
} // for (i=1;i<=100;i++)
// printf("%d ",f[i]); scanf("%d",&t);
f[]=;
while (t--)
{
scanf("%lld",&n);
sum=;
j=y;
for (i=;i<=y;i++)
{
while (1ll*f[i]*f[j]>n)
j--;
sum+=j;
}
printf("%lld\n",sum);
}
return ;
}
L. Magical Girl Haze
/*
图问题:
spfa容易被卡时间复杂度 而dijkstra是贪心,不会被卡
*/
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <time.h>
#include <string>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <ext/rope>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e18
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; struct rec
{
int d,len;
rec *to;
}*e[maxn]; struct node
{
ll dist;
int k,d;
}; struct cmp1
{
bool operator() (node a,node b)
{
if (a.dist==b.dist)
return a.k>b.k;
else
return a.dist>b.dist;
}
}; priority_queue<node,vector<node>,cmp1>st; ll f[maxn][]; int main()
{
rec *p;
int t,n,m,k,i,j,d,kk,dd,x,y,z;
ll dist,r;
scanf("%d",&t);
while (t--)
{
scanf("%d%d%d",&n,&m,&k);
for (i=;i<=n;i++)
e[i]=NULL;
while (m--)
{
scanf("%d%d%d",&x,&y,&z);
p=(rec*) malloc (sizeof(rec));
p->d=y;
p->len=z;
p->to=e[x];
e[x]=p;
}
for (i=;i<=n;i++)
for (j=;j<=k;j++)
f[i][j]=inf;
for (j=;j<=k;j++)
{
f[][j]=;
st.push({,j,});
}
//f[i][j]作为一个状态,100000*10
while (!st.empty())
{
dist=st.top().dist;
d=st.top().d;
kk=st.top().k;
st.pop();
p=e[d];
while (p)
{
dd=p->d;
if (f[dd][kk]>dist+p->len)
{
f[dd][kk]=dist+p->len;
st.push({f[dd][kk],kk,dd});
}
if (kk!=k && f[dd][kk+]>dist)
{
f[dd][kk+]=dist;
st.push({f[dd][kk+],kk+,dd});
}
p=p->to;
}
}
r=inf;
for (j=;j<=k;j++)
r=min(r,f[n][j]);
printf("%lld\n",r);
}
return ;
}
2018 ACM 网络选拔赛 南京赛区的更多相关文章
- 2018 ACM 网络选拔赛 青岛赛区
一些题目的代码被网站吞了…… Problem B. Red Black Tree http://acm.zju.edu.cn/onlinejudge/searchProblem.do?contestI ...
- 2018 ACM 网络选拔赛 北京赛区
A Saving Tang Monk II #include <bits/stdc++.h> using namespace std; ; struct node { int x,y,z, ...
- 2018 ACM 网络选拔赛 徐州赛区
A. Hard to prepare #include <cstdio> #include <cstdlib> #include <cmath> #include ...
- 2018 ACM 网络选拔赛 焦作赛区
A. Magic Mirror #include <cstdio> #include <cstdlib> #include <cmath> #include < ...
- 2018 ACM 网络选拔赛 沈阳赛区
B. Call of Accepted #include <cstdio> #include <cstdlib> #include <cmath> #include ...
- ACM-ICPC 2018 南京赛区网络预赛 J.sum
A square-free integer is an integer which is indivisible by any square number except 11. For example ...
- ACM-ICPC 2018 南京赛区网络预赛 E题
ACM-ICPC 2018 南京赛区网络预赛 E题 题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest wi ...
- ACM-ICPC 2018 南京赛区网络预赛B
题目链接:https://nanti.jisuanke.com/t/30991 Feeling hungry, a cute hamster decides to order some take-aw ...
- 计蒜客 30999.Sum-筛无平方因数的数 (ACM-ICPC 2018 南京赛区网络预赛 J)
J. Sum 26.87% 1000ms 512000K A square-free integer is an integer which is indivisible by any squar ...
随机推荐
- svn代码发版的脚本分享
背景:开发将其代码放到svn里面,如何将修改后存放到svn里的代码发布到线上?简单做法:写个shell脚本,用于代码发版.比如开发的代码存放svn的路径是:svn://112.168.19.120/h ...
- bootmgr is conmpressed联想Z485
昨天清理磁盘空间的时候,手贱把驱动器给压缩了.再开机的时候就遇到了bootmgr is conmpressed. 我把解决办法发布到百度经验上了 http://jingyan.baidu.com/ar ...
- 置换群 Burnside引理 Pólya定理(Polya)
置换群 设\(N\)表示组合方案集合.如用两种颜色染四个格子,则\(N=\{\{0,0,0,0\},\{0,0,0,1\},\{0,0,1,0\},...,\{1,1,1,1\}\}\),\(|N|= ...
- Daily Scrumming* 2015.12.22(Day 14)
一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1112 无 任务说明 今天没有写前端界面,而是完成了跨域请求的实现以及用户实名认证API 前后端大部分数 ...
- 《Linux内核设计与实现》读书笔记三
Chapter 18 调 试 18.1 准备开始 1.准备工作: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2.执行foo就会让程序立即产生核心信息转储(dump core). ...
- html5制作导航条
(1)background-repeat:no-repeat;图片不平铺 (2)使用<ul>和<li>便签,代码简介有序.易于编排. (3)在引入外部css文件时,<li ...
- hg命令
hg常用命令 hg命令跟git命令大同小异 hg version 查看hg版本 hg clone url 克隆代码仓库 hg branch newBranch 创建分支 hg update other ...
- maven私服 Nexus2.x.x私服安装配置
一.Nexus的下载和安装 1.下载nexus ,下载地址:https://www.sonatype.com/download-oss-sonatype 2.打开目录nexus-2.x.x-xx-b ...
- PHP和JavaScript将字符串转换为数字string2int
在看廖雪峰的JavaScript教程时,里面有一个题就是利用reduce()将string转换为int,我看评论中贴出的方法,当时觉得挺意外了,以为他只用了一行代码,即下面这行代码 var str=& ...
- python学习笔记十——模块与函数
第五章 模块与函数 5.1 python程序的结构 函数+类->模块 模块+模块->包 函数+类+模块+包=Python pyth ...