A. Fake NP

题意:给你l,r,让你输出[l,r]里面除1以外的,出现因子数量最多的那个数。

题解:如果l==r输出l,否则都输出2

#include<bits/stdc++.h>
using namespace std; int main(){
int l,r;
cin>>l>>r;
if(r-l==0){
cout<<l<<endl;
return 0;
}
int ans = 0;
int num = 0;
for(int i=2;i<=10000;i++){
if(r/i-(l-1)/i>num)
num = r/i-(l-1)/i,ans = i;
}
cout<<ans<<endl;
}

B. 3-palindrome

题意:给你n,你需要构造一个长度为n的,不存在长度为3的回文串的串。

题解:aabbaabbaabbaabb这样一直构造下去就好了。

#include<bits/stdc++.h>
using namespace std; int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
if(i%4==0)cout<<"a";
else if(i%4==1)cout<<"a";
else if(i%4==2)cout<<"b";
else if(i%4==3)cout<<"b";
}
cout<<endl;
}

C. Find Amir

题意:从i到j的代价是(i+j)%(n+1),问你经过所有点的最小代价是多少

题解:显然就是(n-1)/2

#include<bits/stdc++.h>
using namespace std; int main(){
long long ans = 0;
long long n;
cin>>n;
if(n==1){
cout<<"0"<<endl;
return 0;
}
ans = (n/2-1);
if(n%2==1)ans++;
cout<<ans<<endl;
}

D. Minimum number of steps

题意:你的每一次操作,会使得一个ab变成bba,问你最多进行多少次操作

题解:显然最后的答案会变成bbbbbbbaaaaaaa,那么我们倒着看,每次遇到一个b,就会使得b的数量加一,遇到一个a,就会花费当前b的数量,移动到最后,并且使得b的数量翻倍。

#include<bits/stdc++.h>
using namespace std;
const long long mod = 1e9+7;
long long ans = 0;
string s;
int main(){
cin>>s;
reverse(s.begin(),s.end());
long long B = 0;
long long A = 0;
for(int i=0;i<s.size();i++){
if(s[i]=='a'){
ans = (ans + B)%mod;
B = B * 2LL % mod;
}else{
B = (B + 1)% mod;
}
}
cout<<ans<<endl;
}

E. Ice cream coloring

题意:给你一棵树,然后树上的每个点有一堆颜色,保证每个颜色都会组成一个联通块。现在让你输出一个方案,使得出现在同一个点的颜色都各不相同。

题解:如果不给你一棵树这个条件,那么这就是一个np问题。但是他给了,说明这就是个xjb贪心的问题……

首先最大的颜色数量,就是点的最大颜色数量。然后我们贪心的去涂颜色就好了。

但是有个数据:

3 2

1 1

1 2

2 1 2

1 3

2 3

所以我们得按照一定的顺序去涂颜色就行。

(好像这棵树的条件还是没用上。。。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e5+7; int n,m;
vector<int>E[maxn],G[maxn],H[maxn];
int vis[maxn];
int ans[maxn];
map<int,int>H2[maxn];
queue<int>Q;
int tot;
void solve(int i){
for(int j=0;j<E[i].size();j++){
int v = E[i][j];
if(ans[v]!=0)continue;
while(H2[i][tot]==1)tot++;
ans[v]=tot;
H2[i][tot]=1;
for(int k=0;k<H[v].size();k++){
if(H2[H[v][k]][tot]==0){
Q.push(H[v][k]);
}
H2[H[v][k]][tot]=1;
}
}
vis[i]=1;
}
int main(){
scanf("%d%d",&n,&m);
int Ans = 0;
for(int i=1;i<=n;i++){
int p;
scanf("%d",&p);
for(int j=0;j<p;j++){
int x;
scanf("%d",&x);
E[i].push_back(x);
H[x].push_back(i);
}
}
for(int i=1;i<n;i++){
int x,y;
scanf("%d%d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
for(int i=1;i<=n;i++){
tot = 1;
if(vis[i])continue;
solve(i);
while(!Q.empty()){
int now = Q.front();
tot = 1;
Q.pop();
if(vis[now])continue;
solve(now);
}
}
for(int i=1;i<=m;i++)
if(ans[i]==0)
ans[i]=1;
for(int i=1;i<=m;i++)
Ans=max(Ans,ans[i]);
cout<<Ans<<endl;
for(int i=1;i<=m;i++)
cout<<ans[i]<<" ";
cout<<endl;
}

Codeforces Round #411 (Div. 2) 【ABCDE】的更多相关文章

  1. Codeforces Round #677 (Div. 3)【ABCDE】

    比赛链接:https://codeforces.com/contest/1433 A. Boring Apartments 题解 模拟即可. 代码 #include <bits/stdc++.h ...

  2. Codeforces Round #382 Div. 2【数论】

    C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...

  3. Codeforces Round #684 (Div. 2)【ABC1C2】

    比赛链接:https://codeforces.com/contest/1440 A. Buy the String 题解 枚举字符串中 \(0\) 或 \(1\) 的个数即可. 代码 #includ ...

  4. Codeforces Round #682 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1438 A. Specific Tastes of Andre 题意 构造一个任意连续子数组元素之和为子数组长度倍数的数组. ...

  5. Codeforces Round #678 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1436 A. Reorder 题解 模拟一下这个二重循环发现每个位置数最终都只加了一次. 代码 #include <bi ...

  6. Codeforces Round #676 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1421 A. XORwice 题意 给出两个正整数 \(a.b\),计算 \((a \oplus x) + (b \oplus ...

  7. Codeforces Round #675 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1422 A. Fence 题意 给出三条边 $a,b,c$,构造第四条边使得四者可以围成一个四边形. 题解 $d = max( ...

  8. Codeforces Round #668 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1405 A. Permutation Forgery 题意 给出一个大小为 $n$ 的排列 $p$,定义 \begin{equ ...

  9. Codeforces Round #658 (Div. 2)【ABC2】

    做完前四题还有一个半小时... 比赛链接:https://codeforces.com/contest/1382 A. Common Subsequence 题意 给出两个数组,找出二者最短的公共子序 ...

随机推荐

  1. 单例模式(懒汉、饿汉、同步锁、static、枚举)实现

    使用前提: 需要频繁的进行创建和销毁的对象,创建对象时耗时过多或耗费资源过多 三要素: 1.构造方法私有化: 2.实例化的变量引用私有化: 3.获取实例的方法共有. 1.饿汉式单例 弊端:在类装载的时 ...

  2. Android service与Thread

    很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thre ...

  3. Ex 6_20 最优二叉搜索树..._第六次作业

    假设关键字的总数为n,用c[i,j]表示第i个关键字到第j个关键字的最优二叉查找树的代价,我们的目标是求c[0,n-1].要求c[i,j],首先要从第i个关键字到第j个关键字中选一个出来作为根结点,选 ...

  4. centos 报错 “Job for iptables.service failed because the control process exited with error code.”的解决办法

    原因:因为centos7默认的防火墙是firewalld防火墙,不是使用iptables,因此需要先关闭firewalld服务,或者干脆使用默认的firewalld防火墙. 操作步骤: 关闭防火墙 1 ...

  5. uva11983扫描线k次覆盖

    自己做的是从下往上扫描的,一直wa,不知道坑在哪里..但是作为模板.我还是找了份不错的ac代码 /* 被覆盖不低于k次的点 每个点对应了一个单位面积,本题把点转面积即是被覆盖不低于k次的面积 可以当做 ...

  6. Sony笔记本

    关机的情况下按键盘 f2键.进菜单选更改 bios设置 修改 3个地方 进bios右移 boot上 第一项 ufei改成 legacy external device改成enabled 下面启动顺序改 ...

  7. ORACLE 计算时间相减间隔

    在Oralce中我发现有add_months函数,加天数N可以用如下方法实现,select sysdate+N from dual 在Oralce中我发现有add_months函数,加天数N可以用如下 ...

  8. Python中包(package)的调用方式

     一.什么是Python Package 如何区分你看到的目录是一个Python Package包呢?其实很简单,你只要看这个名录下是否有“__init__.py”这个文件就好了,如果有那么就是Pyt ...

  9. Ubuntu安装VirtualBox以及CentOS7.5联网设置

    一.virtualBox的安装 官方Liunx版本下载地址:  https://www.virtualbox.org/wiki/Linux_Downloads 这里选择下载ubuntu 16.04  ...

  10. HTML&CSS学习笔记

    <table> <thead> <tr>            // table row <th></th> // table head & ...