Codeforces Round #383 (Div. 2)

A. Arpa’s hard exam and Mehrdad’s naive cheat

题意

求1378^n mod 10

题解

直接快速幂

代码

#include<bits/stdc++.h>
using namespace std;
long long quickpow(long long m,long long n,long long k)
{
long long b = 1;
while (n > 0)
{
if (n & 1)
b = (b*m)%k;
n = n >> 1 ;
m = (m*m)%k;
}
return b;
} int main()
{
int n;
scanf("%d",&n);
printf("%lld\n",quickpow(1378,n,10));
}

B - Arpa’s obvious problem and Mehrdad’s terrible solution

题意

问里面有多少对数,满足a[i]^a[j]=x,且i<j

题解

注意a[i]a[j]=x,那么a[i]x=a[j]

mp[i]表示大小为i的有多少个,然后不停的去扫,然后ans+=mp[a[i]^x]就好了

mp的数组得开大一点,因为a[i]^x不一定小于等于100000

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+7;
int n,x,a[maxn];
int mp[maxn];
int main()
{
scanf("%d%d",&n,&x);
long long ans = 0;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
ans+=mp[a[i]^x];
mp[a[i]]++;
}
cout<<ans<<endl;
}

C - Arpa's loud Owf and Mehrdad's evil plan

题意

x->a[x]->a[a[x]]->.....->y 这样一直循环下去

题目中需要找到一个最小的t,使得任何一个x经过t步可以到达某一个y,且y也可以经过t步走到x

题解

显然就是把所有环都找出来,如果环的大小是偶数的话,那么就让这个环除2,如果这个环的大小为奇数的话,取这个环的大小。

然后都取最小公倍数就好了

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 105;
int n,a[maxn],vis[maxn];
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
int flag=0;
vector<int>ans;
for(int i=1;i<=n;i++){
if(vis[i])continue;
int now=i;
int cnt=0;
while(!vis[now]){
vis[now]=i;
now=a[now];
cnt++;
}
if(now!=i)
return puts("-1"),0;
if(cnt%2==0)cnt/=2;
ans.push_back(cnt);
}
long long Ans=ans[0];
for(int i=1;i<ans.size();i++)
Ans=Ans*ans[i]/gcd(Ans,ans[i]);
cout<<Ans<<endl;
}

D - Arpa's weak amphitheater and Mehrdad's valuable Hoses

题意

现在有n个人,每个人有w[i]重量的礼物,礼物的魅力值为B[i]

现在他们组成了一些集体,每个集体要么来一个人,要么就不来,或者全部来

然后你最多收重量和为W的物品,现在问你能获得的最大魅力值是多少

题解

并查集+背包dp,注意这个背包dp不要滚动优化,不然很容易从集体里面转移过来

题解

#include<bits/stdc++.h>
using namespace std; int n,m,weight,fa[1005],w[1005],b[1005],dp[1005][1005],W[1005],B[1005];
vector<int>WW[1005],BB[1005];
int fi(int x){
return fa[x]==x?x:fa[x]=fi(fa[x]);
}
void combine(int x,int y){
x=fi(x),y=fi(y);
if(x==y)return;
fa[x]=y;
}
int main()
{
scanf("%d%d%d",&n,&m,&weight);
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=n;i++)
scanf("%d",&w[i]);
for(int i=1;i<=n;i++)
scanf("%d",&b[i]);
for(int i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
combine(x,y);
}
for(int i=1;i<=n;i++){
W[fi(i)]+=w[i];
B[fi(i)]+=b[i];
WW[fi(i)].push_back(w[i]);
BB[fi(i)].push_back(b[i]);
}
int Ans = 0;
for(int i=1;i<=n;i++){
for(int j=0;j<=weight;j++)
dp[i][j]=dp[i-1][j];
if(fi(i)!=i)continue;
for(int j=weight;j>=W[i];j--)
dp[i][j]=max(dp[i][j],dp[i-1][j-W[i]]+B[i]);
for(int j=0;j<WW[i].size();j++)
for(int k=weight;k>=WW[i][j];k--)
dp[i][k]=max(dp[i][k],dp[i-1][k-WW[i][j]]+BB[i][j]);
for(int j=0;j<=weight;j++)
Ans=max(Ans,dp[i][j]);
}
cout<<Ans<<endl;
}

E - Arpa’s overnight party and Mehrdad’s silent entering

题意

有一个环形的桌子,一共有n对情侣,2n个人,一共有两种菜。

现在让你输出一种方案,满足以下要求:

  1. 情侣间吃不同的菜

  2. 相邻的三个人不能都吃同一种菜

题解

将不能吃统一种菜的人连边,发现这个图并不存在奇数长度度的环(显然成立,不然就是三角恋了)

那么肯定有答案

然后按照二分图去染色就好了

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e5+7;
int n;
vector<int> E[maxn];
int b[maxn],g[maxn],ans[maxn];
void dfs(int x,int y){
if(ans[x])return;
ans[x]=y;
for(int i=0;i<E[x].size();i++)
dfs(E[x][i],1-y);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
E[2*i-1].push_back(2*i);
E[2*i].push_back(2*i-1);
}
for(int i=1;i<=n;i++){
int x,y;
scanf("%d%d",&x,&y);
E[x].push_back(y);
E[y].push_back(x);
b[i]=x,g[i]=y;
}
int now=0,tmp=0;
for(int i=1;i<=2*n;i++){
if(!ans[i])dfs(i,tmp);
}
for(int i=1;i<=n;i++)
cout<<ans[b[i]]+1<<" "<<ans[g[i]]+1<<endl;
}

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

  1. Codeforces Round #383 Div 1题解

    第一次打Div 1,感觉还是挺难的..把基础题打完就日常划水了.... [A. Arpa's loud Owf and Mehrdad's evil plan](http://codeforces.c ...

  2. Codeforces Round #643 (Div. 2) 题解 (ABCDE)

    目录 A. Sequence with Digits B. Young Explorers C. Count Triangles D. Game With Array E. Restorer Dist ...

  3. Codeforces Round #646 (Div. 2) 题解 (ABCDE)

    目录 A. Odd Selection B. Subsequence Hate C. Game On Leaves D. Guess The Maximums E. Tree Shuffling ht ...

  4. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  5. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  6. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  7. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

  8. Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F

    Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...

  9. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

随机推荐

  1. List的使用

    List<string> AllFilesPath = new List<string>(); ) // get all files path { ; i < files ...

  2. p1304 家族

    描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚 ...

  3. 斯坦福第四课:多变量线性回归(Linear Regression with Multiple Variables)

    4.1  多维特征 4.2  多变量梯度下降 4.3  梯度下降法实践 1-特征缩放 4.4  梯度下降法实践 2-学习率 4.5  特征和多项式回归 4.6  正规方程 4.7  正规方程及不可逆性 ...

  4. jQuery in action 3rd - Selecting elements

    jQuery(selector) / $(selector) selector 选择器有多种形式,下面是 #ID,.class,element jQuery 支持的 CSS 层级关系选择器 jQuer ...

  5. [数据结构] N皇后问题

    代码: #include <iostream> #include <string.h> #include <algorithm> using namespace s ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  7. How to Call SharePoint 2013 API Service to Query The Lists

    How to Call SharePoint 2013 API In SharePoint 2013, we can query the list by it owner service, then ...

  8. HTTP02--Http请求头及缓存知识

    一.常用工具 Linux下:curl命令,I参数可以查看http head信息. Firefox:Firebug.HttpFox 二.常见Http Head信息 三.浏览器缓存机制 使用ctrl+F5 ...

  9. 46 个非常有用的 PHP 代码片段

    在编写代码的时候有个神奇的工具总是好的!下面这里收集了 40+ PHP 代码片段,可以帮助你开发 PHP 项目. 这些 PHP 片段对于 PHP 初学者也非常有帮助,非常容易学习,让我们开始学习吧- ...

  10. django rest_framework--入门教程2

    接上文 这里先写一个GET请求的 1.先在VIEW里定义一个方法 代码如下: @api_view(['GET', 'POST']) def book_request(request): if requ ...