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; ...
随机推荐
- Ubuntu 网管服务器配置
1.设置Linux内核支持ip数据包的转发 echo "1" > /proc/sys/net/ipv4/ip_forward or vi /etc/sysctl.conf ...
- [转]phpcms 判断用户登录代码
<!-- 用户登录开始 --> <?php //读取用户信息 $ypzy_userid = param::get_cookie('_userid'); if(!empty($ypzy ...
- VMware 全虚拟打开
1.修改.vmx 文件,最后一行加入: hypervisor.cpuid.v0 = “FALSE" mce.enable = “TRUE" vhv.enable = “TRUE&q ...
- shell 变量说明
变量说明 $$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表. ...
- c++ map unordered_map
map operator<的重载一定要定义成const.因为map内部实现时调用operator<的函数好像是const. #include<string> #include& ...
- C#设置默认打印机
项目中,需要选择打印机,切换打印机.demo如下(wpf应用程序): Xaml: <Window x:Class="PrintersApp.MainWindow" xmlns ...
- Factory and AbstractFactory ——抽象与具体的分离
Factory and AbstractFactory——抽象与具体的分离 面向对象标准关注于抽取一系列事物的共同行为,组建一个基类.行为再划分成两类: 1:现在及以后不太可能会变化的行为. 2:以后 ...
- easyui-combobox select 设置不分行(只显示在一行)
使用easyui 1.4.4 <select id="hotalid" class="easyui-combobox" data-options=&quo ...
- 命令行从Android手机中导出已安装APK的方法调研
一.背景 二.步骤 一.背景 很多时候,APK文件只存在于应用市场,在PC上无法直接下载.用手机下载下来后就直接安装了,也不能保存原始的APK文件. APK安装到手机后,Android系统会保存一份和 ...
- makefile中使用echo向文件中输出版本号和编译时间
@echo "#define BUILD_TIME" `date +"%F_%H:%M:%S"` > buildTime_svnVer.h @echo & ...