博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #131 (Div. 2)
阅读量:6787 次
发布时间:2019-06-26

本文共 1504 字,大约阅读时间需要 5 分钟。

模拟一场,这场题目算是比较巧的.

a. 很简单的暴力题

b. 有点麻烦的题, 用一堆数字拼成一个最大的能被2,3,5 同时整除的数, 首先必须最后一位数字必须是0, 然后数字的总和要能被三整除 。 

解法是枚举一个到两个数字,看减少这些数字能不能使数字的总和被3整除。 如果没有就输出-1

#include 
#include
#include
#include
using namespace std;int mark[10];int main(){ int n; scanf("%d",&n); int sum=0; for(int i=0;i
0;i--) { for(int j=mark[i];j>0;j--) { flag=1; printf("%d",i); } } if(flag==0) printf("0"); else { for(int i=0;i
0;i--) { for(int j=mark[i];j>0;j--) { flag=1; printf("%d",i); } } if(flag==0) printf("0"); else { for(int i=0;i
0;i--) { for(int j=mark[i];j>0;j--) { flag=1; printf("%d",i); } } if(flag==0) printf("0"); else { for(int i=0;i

3. 第三题很是巧妙, 也很值得一学。  

题目的关键在于,边的权值 。 1->2 ,2->3 ,3->1 的权都是1,而 2->1, 3->2, 1->3 的权都为2. 由这个特殊的性质,就可以发现沿着1->2->3->1的路线走始终是最小的 因为假设你在1 你要去3 , 你可以选择1->2->3 也可以1-> 3 这两种路线花费是相同的. 而如果要去2的话1->2 就比2->1 花费要小.

所以问题就变得很简单了.

#include 
#include
#include
#include
using namespace std;#define N 220struct node{ int to,next,w;}edge[N*N];int n;int cnt,pre[N];int mark[N],sign[N];int in[N];int save[N];int mi;int sum;void add_edge(int u,int v,int w){ edge[cnt].to=v; edge[cnt].w=w; edge[cnt].next=pre[u]; pre[u]=cnt++;}void dfs(int s,int k){ for(int ii=0;ii

 

转载地址:http://nqigo.baihongyu.com/

你可能感兴趣的文章
Linux入门 Part2: 目录操作(5) - du 查看目录文件大小
查看>>
ssh 远程服务器上的jupyter
查看>>
Ubuntu 12.04 静态ip的设置方法
查看>>
Linux Shell脚本例子
查看>>
使用PHP采集远程图片
查看>>
函数 指针
查看>>
声明 ,const
查看>>
eclipse中java heap space问题解决方法
查看>>
windows下彻底删除oracle步骤
查看>>
LAMP平台下搭建论坛和博客系统
查看>>
关于学习的一些困惑
查看>>
RedHat系统怎么设置或更改屏幕分辨率
查看>>
spring mybatis整合配置文件
查看>>
02(maven+SSH)网上商城项目实战之数据库设计(PMD)
查看>>
谈Docker安全合规建设
查看>>
LR中的关联
查看>>
nginx配置php连接
查看>>
调整状态学会放下与五月份的个人计划
查看>>
Oracle中如何将姓名中有空格的字段更新成没有空格的?
查看>>
OpenStack主要逻辑模块–Keystone身份验证服务
查看>>