Codeforces #377 Div2
打得还不错的一场CF,题目质量也很高,今后还要继续努力
A题:
题意:给定一个数k,让其乘一个最小的数,使乘得以后的数要不被10整除,要不减去r以后被10整除,求这个最小的数
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
int r,k;
int main()
{
while(cin>>r>>k)
{
int pos;
for(int i=;i<=;i++){
int t=i*r;
if((t%==)||((t-k)%==))
{
pos=i; break;
}
}
cout<<pos<<endl;
}
return ;
}
B题:
题意:给定n个数和一个数k,求最少修改使任意相邻的两个数的和大于等于k
分析:对于任意两个数和大于等于k的不做修改,对于小于k的,修改后一个数即可,使其加上k-(二者的和)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
int a[maxn],b[maxn];
int n,k;
int main()
{
while(cin>>n>>k)
{
memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=;i<=n;i++)
cin>>a[i];
int cnt=;
for(int i=;i<=n-;i++){
if(a[i]+a[i+]>=k){
b[i]=a[i];
}else{
b[i]=a[i];
int t=k-a[i]-a[i+];
cnt+=t;
a[i+]+=t;
}
}
b[n]=a[n];
cout<<cnt<<endl;
for(int i=;i<=n-;i++)
printf("%d ",b[i]);
printf("%d\n",b[n]);
}
return ;
}
C题:
题意:给定吃的三餐的次数,确定最少有多少餐没吃
分析:如果三餐相等就是0,否则就是根据最多的那一餐来决定
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
long long MAX(long long a,long long b,long long c)
{
long long d=max(a,b);
long long e=max(c,d);
return e;
}
long long b,d,s;
int main()
{
while(cin>>b>>d>>s)
{
long long h=MAX(b,d,s);
long long cnt;
if(b==d&&d==s){
cout<<""<<endl;
continue;
}
if(h==b){
cnt=max((long long),(b--d))+max((b--s),(long long));
}else if(h==d){
cnt=max((long long),(d--b))+max((long long),(d--s));
}else{
cnt=max((long long),(s--b))+max((long long),(s--d));
}
cout<<cnt<<endl;
}
return ;
}
D题:
暂时还没做
E题:
题意:有n台电脑,和m个插座,如果二者的power相等,就可以进行连接,插座可以加适配器,没加一次适配器以后power变为,求最多可以适配多少台电脑,在此基础上最少需要的适配器数量。同时输出每一个插座的适配器数量,以及每一台电脑和哪个插座适配
分析:我们需要把电脑按照power从大到小进行排序,然后用优先队列来维护插座,如果电力值大于电脑,变为,然后在入队,如果等于,直接适配
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
const int INF=<<;
int n,m;
typedef struct T{
int num,id;
}T;
T p[maxn];
int s[maxn]; //电脑和插座需要的power
typedef struct P{
int x,num,id;
friend bool operator<(P a,P b)
{
if(a.x==b.x)
return a.num>b.num;
return a.x<b.x; //大顶堆
}
}P;
typedef struct Point{
int cnt,id;
}Point;
Point vis[maxn];
int vis1[maxn];
bool cmp(T a,T b)
{
return a.num>b.num;
}
int a[maxn];
int b[maxn];
int main()
{
while(cin>>n>>m)
{
priority_queue<P> que;
for(int i=;i<=maxn;i++){
vis[i].cnt=,vis[i].id=;
}
for(int i=;i<=n;i++){
scanf("%d",&p[i].num);
p[i].id=i;
}
for(int i=;i<=m;i++)
{
scanf("%d",&s[i]);
P e;
e.x=s[i];
e.num=;
e.id=i;
que.push(e);
}
memset(vis1,,sizeof(vis1));
sort(p+,p++n,cmp);
for(int i=;i<=n;i++){
int t,q,h;
while(que.top().x>p[i].num&&!que.empty()){
P s=que.top();
que.pop();
t=s.x,q=s.num,h=s.id;
t=(t+)/;
q++;
s.x=t,s.num=q,s.id=h;
que.push(s);
}
if(que.empty()) break;
if(que.top().x==p[i].num){
vis[i].cnt=que.top().num;
vis[i].id=que.top().id;
vis1[i]=;
que.pop();
}else{
continue;
}
}
int c=,u=;
for(int i=;i<=n;i++){
if(vis1[i]){
++c;
u+=vis[i].cnt;
}
}
printf("%d %d\n",c,u);
memset(a,,sizeof(a));
for(int i=;i<=n;i++){
a[vis[i].id]=vis[i].cnt;
}
for(int i=;i<=m;i++){
printf("%d ",a[i]);
}
printf("\n");
memset(b,,sizeof(b));
for(int i=;i<=n;i++){
b[p[i].id]=vis[i].id;
}
for(int i=;i<=n;i++)
printf("%d ",b[i]);
cout<<endl;
}
return ;
}
Codeforces #377 Div2的更多相关文章
- Codeforces #180 div2 C Parity Game
// Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...
- Codeforces #541 (Div2) - E. String Multiplication(动态规划)
Problem Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...
- Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
- Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)
Problem Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- 【Codeforces #312 div2 A】Lala Land and Apple Trees
# [Codeforces #312 div2 A]Lala Land and Apple Trees 首先,此题的大意是在一条坐标轴上,有\(n\)个点,每个点的权值为\(a_{i}\),第一次从原 ...
- Codeforces #263 div2 解题报告
比赛链接:http://codeforces.com/contest/462 这次比赛的时候,刚刚注冊的时候非常想好好的做一下,可是网上喝了个小酒之后.也就迷迷糊糊地看了题目,做了几题.一觉醒来发现r ...
- codeforces #round363 div2.C-Vacations (DP)
题目链接:http://codeforces.com/contest/699/problem/C dp[i][j]表示第i天做事情j所得到最小的假期,j=0,1,2. #include<bits ...
- codeforces round367 div2.C (DP)
题目链接:http://codeforces.com/contest/706/problem/C #include<bits/stdc++.h> using namespace std; ...
随机推荐
- Windows下的 Axel下载工具 - 移植自Linux
Axel 是 CLI (command-line interface) 下的一个多线程下载工具,通常我都用它取代 wget 下载各类文件,适用于 Linux 及 BSD 等 UNIX 类平台. 以下是 ...
- 【servlet】客户端是否可以访问到WEB-INF下的jsp文件
一般情况下(不考虑出现安全问题被入侵,那样啥都能访问到),WEB-INF下的jsp文件单凭浏览器端请求时访问不到的. 想访问的话需要通过服务端servlet的转发. 下面通过转发和重定向的尝试来观察访 ...
- log4j2.xml配置及例子
1.使用log4j2需要下载包,如下: 2.配置文件可以有三种格式(文件名必须规范,否则系统无法找到配置文件): classpath下名为 log4j-test.json 或者log4j-test.j ...
- Hibernate 系列教程10-组成关系
组成关系 在一个员工模型里面需要存入 员工公司所在地址的城市,街道 员工籍贯所在的城市,街道, 此时可以抽取城市,街道变成一个模型即是组成关系 Employee public class Employ ...
- linux 终端相关
echo cd ~/桌面 >> .bashrc 将终端默认路径设为桌面 -/.bashrc./etc/bash.bashrc./etc/profile这几个文件.这些文件的的作用时机:/e ...
- AngularJS 从零开始学习(一)
什么是AngularJS? AngularJS是一个把HTML(视图)绑定到JavaScript对象(模型)上的框架.当模型改变时,页面也能自动随之更新,反之亦然.当某个域的内容发生变化时,与之关联的 ...
- android sql Cursor
Cursor 是每行的集合. 使用 moveToFirst() 定位第一行. 你必须知道每一列的名称.你必须知道每一列的数据类型.Cursor 是一个随机的数据源. 所有的数据都是通过下标取得. Cu ...
- Android Studio的使用(十)--读取assets、Raw文件夹下文件,以及menu、drawable文件夹
1.直接在/src/main目录下面新建assets目录 2.接下来即可读取文件 3.读取Raw文件夹下文件也类似.首先在res文件夹下新建raw目录,然后放入需要的文件即可读取. 4.menu和dr ...
- 【转】PHP代码审计
PHP代码审计 目录 1. 概述3 2. 输入验证和输出显示3 2.1 命令注入4 2.2 跨站脚本4 2.3 文件包含5 2.4 代码注入5 2.5 SQL注入6 2.6 XPath注入6 2.7 ...
- 关于oracle 还原数据库的要领
create tablespace DSXZFW datafile 'D:\yangk\oraclespace\DSXZFW.ora' size 1000m; // 创建表空间,注意如果要还原数据库的 ...