2016 CCPC 杭州

A - ArcSoft's Office Rearrangement

均分石子。
好像怎么分答案都一样,于是模拟一遍。

#include <bits/stdc++.h>using namespace std;
typedef long long ll;template<typename T> inline void read(T &x){
x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f;
}template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);}
template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);}
template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}ll a[100005],n,k,x;
ll s;int main(){//freopen("in.txt","r",stdin);int T,cas=1;cin>>T;while(T--){read(n,k);s=0;for(int i=1;i<=n;i++)read(a[i]),s+=a[i];if(s%k!=0){printf("Case #%d: -1\n",cas++);continue;}ll cmp = s / k;ll ans = 0;for(int i=1;i<=n;i++){if(a[i]==cmp) continue;if(a[i]<cmp){if(a[i]+a[i+1]<=cmp){a[i+1]=a[i]+a[i+1];ans++;} else {a[i+1]=a[i+1]+a[i]-cmp;ans+=2;}} else {ll tmp = a[i] / cmp;ll tt  = a[i] % cmp;if(tt!=0){ans+=2;a[i+1]+=tt;}ans+=tmp-1;}}printf("Case #%d: ",cas++);cout<<ans<<endl;}return 0;
}

B - Bomb

Tarjan之后算一下不同scc里面的cost。

#include <bits/stdc++.h>using namespace std;
typedef long long ll;struct infonode {ll x,y,r,d;
}info[2005];struct tarjan {const static int maxn = 2e4+7;const static int maxm = 2e6+7;struct Edge {int to,nxt;Edge(){}Edge(int _to,int _nxt):to(_to),nxt(_nxt){}}edge[maxm];int head[maxn],tot,n;int Low[maxn],DFN[maxn],Stack[maxn],Belong[maxn];int Index,top;int scc;int num[maxn];bool Instack[maxn];int Min[maxn];inline void init(int n) {tot = 0;this->n=n;memset(head,-1,sizeof head);}inline void addedge(int u,int v) {edge[tot]=Edge(v,head[u]);head[u]=tot++;}void Tarjan(int u) {int v;Low[u] = DFN[u] = ++Index;Stack[top++] = u;Instack[u] = true;for(int i=head[u];i!=-1;i=edge[i].nxt){v = edge[i].to;if(!DFN[v]){Tarjan(v);Low[u]=min(Low[u],Low[v]);} else if(Instack[v] && Low[u]>DFN[v]){Low[u]=DFN[v];}}if(Low[u]==DFN[u]){scc++;do{v=Stack[--top];Instack[v]=false;Belong[v]=scc;num[scc]++;}while(v!=u);}}int indeg[maxn];inline ll solve(int n){memset(DFN,0,sizeof DFN);memset(num,0,sizeof num);memset(Instack,0,sizeof Instack);Index = scc = top = 0;for(int i=1;i<=n;i++)if(!DFN[i]) Tarjan(i);memset(indeg,0,sizeof indeg);//if(scc==1) return 0;for(int u=1;u<=n;u++)for(int i=head[u];i!=-1;i=edge[i].nxt){int v=edge[i].to;if(Belong[u]!=Belong[v]){indeg[Belong[v]]++;}}memset(Min,63,sizeof Min);for(int i=1;i<=n;i++)Min[Belong[i]]=min((ll)Min[Belong[i]],info[i].d);ll ret = 0;for(int i=1;i<=scc;i++)if(indeg[i]==0)ret += (ll)Min[i];return ret;}
} g;int n,cas=1;template<typename T> inline void read(T &x){
x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f;
}template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);}
template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);}
template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}int main(){//freopen("in.txt","r",stdin);int T;read(T);while(T--){read(n);g.init(n);for(int i=1;i<=n;i++)read(info[i].x,info[i].y,info[i].r,info[i].d);for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++){ll dist = (ll)(info[i].x-info[j].x)*(info[i].x-info[j].x)+(info[i].y-info[j].y)*(info[i].y-info[j].y);if(dist<=info[i].r*info[i].r){g.addedge(i,j);}if(dist<=info[j].r*info[j].r){g.addedge(j,i);}}ll ans = g.solve(n);printf("Case #%d: ",cas++);cout<<ans<<endl;}return 0;
}

C - Car

模拟分数,否则卡精度,因为涉及多次除被除除。。。

#include <bits/stdc++.h>
#define maxn 100050
using namespace std;
typedef long long LL;
int t,n;
int a[maxn];
int Case=1;
int main(){//freopen("in.txt","r",stdin);scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);LL fenzi=a[n]-a[n-1],fenmu=1;LL time=1;for(int i=n-1;i>=1;i--){LL d=a[i]-a[i-1];fenmu*=d;LL tmp=fenmu/fenzi;if(fenmu%fenzi!=0) tmp++;time+=tmp;fenzi=d;fenmu=tmp;}printf("Case #%d: %lld\n",Case++,time);}return 0;
}

D - Difference

每个k预处理一半,然后用中途相遇法,就是类似尺取。

#include <bits/stdc++.h>using namespace std;
typedef long long ll;ll a[10][100005],b[10][100005];
ll base[11];
ll P[11][11];template<typename T> inline void read(T &x){
x=0;T f=1;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do x=x*10+ch-'0',ch=getchar();while(ch<='9'&&ch>='0');x*=f;
}template<typename A,typename B> inline void read(A&x,B&y){read(x);read(y);}
template<typename A,typename B,typename C> inline void read(A&x,B&y,C&z){read(x);read(y);read(z);}
template<typename A,typename B,typename C,typename D> inline void read(A&x,B&y,C&z,D&w){read(x);read(y);read(z);read(w);}void init(){base[0]=1;for(int i=1;i<=10;i++)base[i]=base[i-1]*10ll;for(int i=0;i<=9;i++){P[i][1]=i;for(int j=2;j<=9;j++)P[i][j]=P[i][j-1]*i;}for(int kk=1;kk<=9;kk++){for(int i=0;i<=99999;i++){a[kk][i]=P[i%10][kk]+P[i%100/10][kk]+P[i%1000/100][kk]+P[i%10000/1000][kk]+P[i%100000/10000][kk]-(ll)i*100000ll;b[kk][i]=P[i%10][kk]+P[i%100/10][kk]+P[i%1000/100][kk]+P[i%10000/1000][kk]+P[i%100000/10000][kk]-i;}}for(int i=1;i<=9;i++){sort(a[i],a[i]+100000);sort(b[i],b[i]+100000);}
}int main(){//freopen("in.txt","r",stdin);init();int T,k,cas=1;ll x;cin>>T;while(T--){read(x,k);ll res = 0;for(int l=0,r=99999;l<=99999 && r;){if(a[k][l]+b[k][r]>x)r--;else if(a[k][l]+b[k][r]<x)l++;else {ll l1=0,r1=0;ll t1=a[k][l];ll t2=b[k][r];while(a[k][l]==t1 && l<=99999) l++,l1++;while(b[k][r]==t2 && r!=0) r--,r1++;res += l1*r1;}}if(x==0) res--;printf("Case #%d: ",cas++);cout<<res<<endl;}return 0;
}

F - Four Operations

贪心+枚举。

#include <bits/stdc++.h>using namespace std;
typedef long long ll;int cas=1;
char s[55];int main(){//freopen("in.txt","r",stdin);int T;scanf("%d",&T);while(T--){scanf("%s",s+1);int len=strlen(s+1);ll ans = -INT_MAX;for(int i=1;i<=len-4;i++){for(int j=i+1;j<=len-3;j++){ll A=0,B=0,C=0,D=0,E=0;for(int c=1;c<=i;c++)A=A*10ll+s[c]-'0';for(int c=i+1;c<=j;c++)B=B*10ll+s[c]-'0';C=s[j+1]-'0';D=s[j+2]-'0';for(int c=j+3;c<=len;c++)E=E*10ll+s[c]-'0';ll tmp = A + B - C * D / E;ans = max(ans,tmp);}}printf("Case #%d: ",cas++);cout<<ans<<endl;}return 0;
}

K - Kingdom of Obsession

二分图匹配,建立匹配边就行。
若有交合部分,s<n
实际上可以由(1...n)-(s+1...s+n)变成(1...s)-(n+1,...,n+s),中间部分自己匹配。

#include <bits/stdc++.h>using namespace std;
typedef long long ll;const int maxn = 1005;int matches[maxn];int link[maxn][maxn];
bool used[maxn];
int n,s;bool find(int x){for(int j=1;j<=n;j++){if(link[x][j] && used[j]==false){used[j]=1;if(matches[j]==0 || find(matches[j])){matches[j]=x;return 1;}}}return 0;
}int main(){//freopen("in.txt","r",stdin);int T,cas=1;scanf("%d",&T);while(T--){scanf("%d%d",&n,&s);if(s==0){printf("Case #%d: Yes\n",cas++);continue;}if(n>s) swap(n,s);if(n>1000) printf("Case #%d: No\n",cas++);else {memset(link,0,sizeof link);memset(matches,0,sizeof matches);for(int i=s+1;i<=s+n;i++){for(int j=1;j<=n;j++)if(i%j==0)link[j][i-s]=1;}int res = 0;for(int i=1;i<=n;i++){memset(used,0,sizeof used);if(find(i)) res++;}if(res==n){printf("Case #%d: Yes\n",cas++);} else {printf("Case #%d: No\n",cas++);}}}return 0;
}

转载于:https://www.cnblogs.com/foreignbill/p/7875880.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]RxHttp 一条链发送请求,新一代Http请求神器(一)

简介 RxHttp是基于OkHttp的二次封装&#xff0c;并于RxJava做到无缝衔接&#xff0c;一条链就能发送一个完整的请求。主要功能如下&#xff1a; 支持Get、Post、Put、Delete等任意请求方式&#xff0c;可自定义请求方式支持Json、DOM等任意数据解析方式&#xff0c;可自定义数据…

【Pix4d精品教程】Pix4d空三后处理:点云分类与过滤、DSM精编生成DEM、生成等高线案例详解

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) DEM结果预览: 等高线结果预览: Pix4d内业空三结束后,会生成点云,DOM和DSM等产品,一般情况下,DOM精度不达标(如房屋边缘有噪点)的话,可以直接在镶嵌图编辑器进行DOM的编辑,然而后处理的…

如何更好地组织最小 WEB API 代码结构

前言我们在《.NET 6新特性试用》中讲过&#xff0c;随着项目需求和复杂性的增加&#xff0c;单个文件的最小 WEB API 会变得非常臃肿。而且&#xff0c;Program.cs 应该只放启动和初始化代码。不应该包含太多 MapXXX 方法。那么&#xff0c;如何以更好的方式组织最小 WEB API 代…

C语言试题八十四之求空间两点之间的距离

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 定义一个表…

git分支进阶

其实git除了版本控制&#xff0c;另外一个最突出的特点就是他的分支操作。简直 丝滑~.git也是多人协作的必备武器。 通常我们正常情况下只需要master 和 develop分支就够了。 这里我们先以这两条分支作为基准&#xff0c;进行一系列的操作。 开发新功能流程 这个应该属于develo…

关于c# .net爬虫

刚开始听到爬虫这两个字眼的时候感觉挺稀奇的&#xff0c;之前并没有接触过爬虫&#xff0c;正好这会手上没事&#xff0c;于是便百度了一下。 1.网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&am…

Google 的 Java 编码规范,参考学习!

目录 01 术语说明和指南说明 02 源文件基础 2.1 文件名 2.2 文件编码&#xff1a;UTF-8 2.3 特殊字符 03 源文件结构 3.1 许可证或版权信息 3.2 package语句 3.3 import语句 3.4 类声明 04 格式 4.1 大括号 4.3 一行一个语句 4.4 列限制&#xff1a;80 或 100 4…

MySQL Schema与数据类型的优化

选择优化的数据类型&#xff1a; 1、 更小的通常更好&#xff1a; 一般情况下&#xff0c;应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快&#xff0c;因为他们占用更少的磁盘&#xff0c;内存和cpu缓存&#xff0c;并且处理时需要的cpu周期也更少。 2、…

【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 航测内业中,在自由空三结束之后,需要导入像控点,进而去刺像控点。但是当测区跨两个分带的时候(如测区正好处在3度带105和108中间),像控点可能距离靶标点很远,给刺点带来了很大难度。怎样解…

Failed:(13: Permission denied)导致访问浏览器出现Nginx 500 Internal Server Error

1 、问题 我在部署nginx反向代理服务器的时候&#xff0c;nginx.conf文件都配置好了&#xff0c;但是我在浏览器里面输入域名的时候&#xff0c;提示Nginx 500 Internal Server Error 2、分析 我们需要找到nginx输出错误日志的文件&#xff0c;在nginx.conf里面我们可以看到错…

MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI

1. 前言距离上次发《MAUI初体验&#xff1a;爽》一文已经过去2个月了&#xff0c;本计划是下半年或者明年再研究MAUI的&#xff0c;现在计划提前啦&#xff0c;因为我觉得MAUI Blazor挺有意思的&#xff1a;在Android、iOS、macOS、Windows之间共享UI&#xff0c;一处UI增加或者…

dns 报文格式

最近学习了下DNS的格式&#xff0c;发现很多内容都是转载自同一个而且说的不是很清楚&#xff0c;特再整理下具体可以查看RFC1035 http://www.ietf.org/rfc/rfc1035.txt有详细的解释对于英语理解不是很好和懒得看这么长的可以看下本文首先是DNS数据帧的格式-------------------…

input file实现批量上传

1、需求实现word批量上传。 2、使用插件jquery-form.js 3、html代码 注意 multiple"multiple" 1 <form id"frm_upload" method"post" enctype"multipart/form-data"> 2   <input type"file" id"filepath&qu…

【Pix4d精品教程】Pix4d修编正射影像DOM的两种方法案例详解

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) DOM修编前: DOM修编后: 文章摘要: Pix4d内业数据处理通常会生成点云、DSM和DOM等产品,DSM经过精编可以生成精准的DEM,而DOM一般情况下,存在比如房屋边缘被拉花,或者存在噪点的情况

删除Linux下/tmp目录引起的不正常登录系统

现象&#xff1a;/tmp占用400M的空间(里面全部是乱七八糟的东西) 动作&#xff1a;删除/tmp目录 后果&#xff1a;造成只能启动到控制台模式 应急&#xff1a; 1 创建目录&#xff1a;#mkdir /tmp 结果系统在控制台模式登录和X windows模式登录状态间反复切换&#xff0c;不能进…

C语言试题八十五之狼追兔子问题

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 一只兔子躲…

[转]快速使用FileProvider解决Android7.0文件权限问题

升级到Android7.0之后&#xff0c;启动系统相机或者截图&#xff0c;传入URI的时候可能会导致程序闪退崩溃。这是因为7.0的新的文件权限导致的。下面是解决这个问题的快速解决方案。 问题代码 在7.0可能会出问题的代码&#xff1a; final String CACHE_IMG Environment.getExt…

终于找到了,开源的Vue3+.NET6通用管理后台!

据说80%的.NET项目都是管理后台&#xff0c;然而能用上Vue3.NET6的管理后台并不多见。这里分享一套Vue3 Axios TS Vite ElementUI Plus .NET 6 WebAPI JWT SqlSugar的前后端分离架构的通用管理后台源码数据库脚本&#xff0c;还有与之配套录制的一组视频教程&#xff0c;全部打…

【Pix4d精品教程】Pix4d模型成果导出OSGB并加载OSGB到EPS进行三维测图完美案例教程

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 在垂直摄影中,Pix4d也可以生成漂亮的三维模型,并导出为OSGB,加载到EPS进行三维测图。首先来看生成的三维格网纹理和EPS三维模型加载效果。 Pix4d生成的三维格网纹理: EPS加载OSGB模型效果: 文…

Vim 批量替换

假设在非Win系统下。 想批量替换文本不再是Ctrl&#xff0b;F那么简单了&#xff0c; 一般用Vim来做批量替换&#xff0c; 略微复杂点&#xff1a; 比如将192.168.0.1替换为192.168.0.2 :%s/192.168.0.1/192.168.0.2/g