Codeforces Round #304 (Div. 2)

这次打得较差,差点就绿了。。。

B题,这B题竟然WA了,再看看就发现一个很严重的错误。。--!

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>using namespace std;int num[3050];int main(){int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){scanf("%d",&num[i]);}sort(num,num+n);int cnt=0,ans=0;for(int i=1;i<n;i++){if(num[i]==num[i-1]){cnt++;}else {int k=num[i]-num[i-1]-1;if(k>=cnt){ans=ans+(1+cnt)*cnt/2;cnt=0;}else{ans=ans+(1+k)*k/2;cnt-=k;}ans=ans+cnt*(k+1);}}if(cnt>0){ans=ans+(1+cnt)*cnt/2;}printf("%d\n",ans);}return 0;
}

  

D题,可以预处理出各个数个含的质数的个数,可以用循环处理,求前缀和。循环是,从2开始,d记录下它有没有质因子,d=0则证明它当前是素数,第二层对j=i*k这样的数求它含有i的个数。如果d不为0,说明它不是素数,且由于一直循环,所以处理到它时就是已经把它所有质因子个数算出来了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL long long
using namespace std;
const int N=5000000;
int d[N+10];
int s[N+10];void initial(){memset(d,0,sizeof(d));s[0]=s[1]=0;for(int i=2;i<=N;i++){if(d[i]==0){d[i]++;for(int j=i+i;j<=N;j+=i){int c=j;while(c%i==0){d[j]++;c/=i;}}}s[i]=s[i-1]+d[i];}
}int main(){initial();int T,a,b;scanf("%d",&T);while(T--){scanf("%d%d",&a,&b);printf("%d\n",s[a]-s[b]);}return 0;
}

  

E题,二分图网络流

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;
/*
这道在开始也在想网络流,但是,看到只能移动一条边时,就无语了。。群里一讨论,对哦,二分图拆点建边,
这样就是一条边了。。。T_T我果然是渣。。 s->i建一条a[i]的边,i+n->e建一条b[i]的边。u-v就按u->v',v->u'。
注意加上u->u' 
*/const int INF=0x3f3f3f3f;
const int MAXN=300;//点数的最大值
const int MAXM=2000;//边数的最大值struct Node
{int from,to,next;int cap;
}edge[MAXM];
int tol;int dep[MAXN];//dep为点的层次
int head[MAXN];
int flow[MAXN][MAXN];
int n,m;
void init()
{tol=0;memset(head,-1,sizeof(head));
}
void addedge(int u,int v,int w)//第一条变下标必须为偶数
{edge[tol].from=u;edge[tol].to=v; edge[tol].cap=w;  edge[tol].next=head[u];head[u]=tol++;edge[tol].from=v;edge[tol].to=u;edge[tol].cap=0;edge[tol].next=head[v];head[v]=tol++;
}int BFS(int start,int end)
{int que[MAXN];int front,rear; front=rear=0;memset(dep,-1,sizeof(dep));que[rear++]=start;dep[start]=0;while(front!=rear){int u=que[front++];if(front==MAXN)front=0;for(int i= head[u];i!=-1; i=edge[i].next){int v=edge[i].to;if(edge[i].cap>0&& dep[v]==-1){dep[v]=dep[u]+1;que[rear++]=v;if(rear>=MAXN) rear=0;if(v==end)return 1;}}}return 0;
}
int dinic(int start,int end)
{int res=0;int top;int stack[MAXN];//stack为栈,存储当前增广路int cur[MAXN];//存储当前点的后继while(BFS(start,end)){memcpy(cur,head, sizeof(head));int u=start;top=0;while(1){if(u==end)         //到达汇点{int min=INF;int loc;for(int i=0;i<top;i++)if(min>edge[stack[i]].cap){min=edge[stack[i]].cap;loc=i;}for(int i=0;i<top;i++){edge[stack[i]].cap-=min;edge[stack[i]^1].cap+=min;}res+=min;         top=loc;                // 以最小边的起点为源点再寻找其他增广路径u=edge[stack[top]].from;}for(int i=cur[u];i!=-1;cur[u]=i=edge[i].next)         //寻找可增广的路径,即确定edge[]中以u为起点可增广的i的第一条边的位置if(edge[i].cap!=0 && dep[u]+1==dep[edge[i].to])break;if(cur[u]!=-1){stack [top++]=cur[u];u=edge[cur[u]].to;}else{if(top==0) break;   //不能再增广dep[u]=-1;u= edge[stack [--top] ].from;   //退栈寻找下一条}}}return res;
}int bef[MAXN],aft[MAXN];int main(){int s,e;while(scanf("%d%d",&n,&m)!=EOF){init();int sum=0; s=0; e=2*n+1;memset(flow,0,sizeof(flow));for(int i=1;i<=n;i++){scanf("%d",&bef[i]);sum+=bef[i];}int cp=sum;for(int i=1;i<=n;i++){scanf("%d",&aft[i]);sum-=aft[i];}for(int i=1;i<=n;i++){addedge(s,i,bef[i]);addedge(i+n,e,aft[i]);addedge(i,i+n,INF);}int u,v;for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);addedge(u,v+n,INF);addedge(v,u+n,INF);}if(sum!=0){printf("NO");}else{int res=dinic(s,e);if(res!=cp){puts("NO");}else{puts("YES");for(int i=n+1;i<=2*n;i++){int v=i-n;for(int ei=head[i];ei!=-1;ei=edge[ei].next){int u=edge[ei].to;if(u<e){flow[u][v]=edge[ei].cap;}}}for(int i=1;i<=n;i++){printf("%d",flow[i][1]);for(int j=2;j<=n;j++)printf(" %d",flow[i][j]);printf("\n");}}}}
}

  

转载于:https://www.cnblogs.com/jie-dcai/p/4523897.html

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

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

相关文章

Qt 设置应用程序开机自启动

要实现开机自启动&#xff0c;主要是将应用程序添加到注册表中。 一、首先定义注册表 #define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" 二、编写开机自启动设置函数 //开机自启动&#xff0c;采用QSetting的方式将其写…

MySQL浅谈 LEFT JOIN

On条件&#xff08;在“A left join b on conditional_expr”&#xff09;决定如何从table B 中检索数据行&#xff08;Matching-State&#xff09;; 如果&#xff22;中没有行匹配On 条件&#xff0c;额外的B的所有数据列被设为null; 如果Matching-Stage阶段,where语句的任…

oracle cdc 关闭,Oracle CDC部署流程

一、ORACLE环境检查查oracle数据库版本(>9.2.0.4.0).select * from v$version;BANNEROracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for 32-bit Windows: Version …

几个重要的RedHat Linux内核文件介绍 (1)

From:http://tech.sina.com.cn/s/s/2006-06-27/061923370.shtml Linux服务器内核编译基础 mynix编译自www.linux.org之Linux HowTo之Kernel HowTo 在网络中&#xff0c;不少服务器采用的是Linux系统。为了进一步提高服务器的性能&#xff0c;可能需要根据特定的硬件及需求重新…

Qt 两个Ui 界面传值

一、说明 A子界面 B主界面 &#xff0c; 实现A往B传值&#xff0c;B显示. 二、利用emit和slot实现 2.1 对A.h 添加声明 signals: void sendData(QString); //用来传递数据的信号 2.2在A.cpp中适当位置将数据进行发射 emit sendData(ui->lineEdit->text());…

有哪些是你成为一名开发之后才知道的事情

目录 前言 疑问1成为一名开发真的很难嘛&#xff1f; 疑问2作为一名开发的工资一定很高吗 疑问3开发一定加班会很厉害嘛 疑问4一定要去大厂嘛 疑问5程序员是个很好的职业选择吗 疑问6毕业前参加培训好吗 疑问7入行之后要不断提升自己的能力吗 疑问8大学四年该如何度过 疑问…

她们分别买了什么?

using System; using System.Collections.Generic; using System.Text; class Program { static void Main(string[] args) { /* * 测试 9&#xff0e;她们分别买了什么? */ WhatWasBought(); …

[发布] 矩阵乘法及其对于编程求斐波那契数列的某一项的应用

需要PDF的读者可以向我索要。 如果发现有翻印与用于商业用途&#xff0c;将予追究。 编者注&#xff1a;本文中如果没有特殊说明&#xff0c;除法均只取整数部分&#xff0c;忽略小数部分。 感谢大家对我的支持&#xff01;同时感谢ysy大聚聚。转载于:https://www.cnblogs.com…

oracle新建用户sql局域,oracle 新建数据库,及创建用户,表空间,sqlplus导入导出数据库...

oracle11G新建数据库&#xff1a;默认下一步&#xff1a;默认下一步&#xff1a;默认下一步&#xff1a;填写数据库名下一步&#xff1a;默认下一步&#xff1a;完成&#xff0c;再按指示确定&#xff0c;就完成了数据库的创建。数据库创建完后&#xff0c;在oracle11G Net Man…

QIcon 给按钮和动作添加图片

对Qt中资源文件的引用时&#xff0c;QAction/QPushbutton添加图标时&#xff0c;需要用到图片的路径。 1、先添加资源文件&#xff0c;项目->添加新的文件->Qt resource files->添加前缀->添加文件。 2、复制需要文件的路径&#xff1b;&#xff08;工程树对应图…

linux下xargs命令用法详解

From:http://biancheng.dnbcw.info/shell/268829.html xargs在 linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活.xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此这个命…

监理公司的核心竞争力

企业竞争力模型&#xff0c;无疑要看迈克尔波特的文章&#xff0c;从企业竞争、行业竞争至国家竞争&#xff0c;都有成熟的竞争理论。同多数IT公司一样,监理公司核心竞争力仍然是创新与复制能力.只不过IT产品是监理咨询与服务&#xff0c;纯粹服务产品的研发和管理&#xff0c;…

Altera 速度等级

~~ 转载于:https://www.cnblogs.com/agllero/p/4533848.html

STM32项目中一种在线升级/应用升级OTA-IAP设计方案

STM32 OTA-IAP设计方案 OTA是Over-the-Air的简写&#xff0c;即空中下载技术&#xff0c;通过网络远程给用户进行系统更新和升级。IAP是In Application Programming的简写&#xff0c;IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写&#xff0c;目的是为了在…

oracle 主键列创建自增长,powerdesigner创建oracle 数据库表,设置表主键列为自动增长。 ....

1 在表视图的列上创建。 双击表视图&#xff0c;打开table properties ———>columens &#xff0c; 双击要设置的列(显示列的序号的那个按钮&#xff0c;单击后&#xff0c;会显示横向的黑色箭头)。 打开column properties 对话框。在 ‘general’ 项中&#xff0c; 最下面…

嵌入式GUI FTK支持输入法

From: http://blog.csdn.net/absurd/article/details/5318285 春节期间给FTK增加输入法支持&#xff0c;目前支持拼音输入法&#xff0c;五笔输入法和手写输入法。手写输入法只是实现了框架&#xff0c;识别引擎才开个头&#xff0c;这是今年FTK开发的重点任务。拼音输入法&…

STM32程序占用的内存容量计算

STM32中程序占用内存容量 Keil MDK下Code, RO-data,RW-data,ZI-data这几个段: Code存储程序代码。RO-data存储const常量和指令。RW-data存储初始化值不为0的全局变量。ZI-data存储未初始化的全局变量或初始化值为0的全局变量。占用的FlashCode RO Data RW Data; 运行消耗的…