题目链接https://codeforces.com/contest/1093

A. Dice Rolling

题意:

有一个号数为2-7的骰子,现在有一个人他想扔到几就能扔到几,现在问需要扔多少次,能使扔出的总和等于xi。

题解:

由于是special judge,模拟一下搞搞就行了= =

代码如下:

#include <bits/stdc++.h>
using namespace std; int main(){
int t;
cin>>t;
int n;
while(t--){
cin>>n;
for(int i=;i<=;i++){
if(n%i!=){
cout<<n/i+(n%i!=)<<endl;
break ;
}
}
}
return ;
}

B. Letters Rearranging

题意:

给出一个字符串,现在你可以任意交换字符位置,然后输出一种非回文串的方案,如果没有这样一种方案,输出-1。

题解:

注意回文串的性质,那么我们首先判断一下所有字符是否相同,如若相同直接输出-1。否则排个序就好了~

代码如下:

#include <bits/stdc++.h>
using namespace std;
int t;
const int N = ;
char s[N];
int main(){
cin>>t;
while(t--){
scanf("%s",s);
int flag = ;
int len =strlen(s);
s[len]=s[];
for(int i=;i<=len;i++){
if(s[i]!=s[]) flag=;
}
if(flag) cout<<-<<endl;
else{
sort(s,s+len);
for(int i=;i<len;i++) cout<<s[i];
cout<<endl;
}
}
return ;
}

C. Mishka and the Last Exam

题意:

一共有n个数,现在给出b1,b2....bn/2,满足bi=ai+an-i+1。

现在要你构造出合法的a1....an,并且a1<=a2<=...<=an,保证输入有解。

题解:

对于b1=a1+an来说,我们让a1=0,a2=b1是最好的,这样可以让左右端点最大。

对于后面的每个bi,我们令d=bi-bi-1,那么如若d>0,我们可以想,假若a2,an-1不变,那么他们之和是小于b2的,所以我们就让左端点变大(贪心策略)。

对于d=0或者d<=0都可以同样的策略去想(因为题目保证输入有解)。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 4e5+;
int n;
ll a[N],b[N];
int main(){
cin>>n;
for(int i=;i<=n/;i++) cin>>b[i];
a[]=;a[n]=b[];
for(int i=;i<=n/;i++){
ll d = b[i]-b[i-];
if(d>=) a[i]=d+a[i-],a[n-i+]=a[n-i+];
else a[i]=a[i-],a[n-i+]=a[n-i+]+d;
}
for(int i=;i<=n;i++) cout<<a[i]<<" ";
return ;
}

D. Beautiful Graph

题意:

给出一个图,有n个点,m条边,每个点都有权值1,2或3。现在要你给点权赋值,满足相邻的两个点和为奇数。问一共有多少情况,注意这个图不一定保证连通。

题解:

根据题意我们知道,相邻的两个点必然为一奇一偶,所以我们可以用二分图染色来判断是否给出的图合法,能够满足条件。

在二分图染色的过程中,记录一下两种颜色的个数a,b,那么最终的答案就是对于每个图的2^a+2^b再求和。

注意一下单独一个点可能有1,2,3三种情况。

代码如下:

#include <bits/stdc++.h>
#define MOD 998244353
using namespace std;
typedef long long ll;
const int N = 3e5+;
int T;
int n,m,flag,num,sum;
vector <int> g[N];
int color[N];
void dfs(int u,int c){
color[u]=c;sum++;
if(color[u]==) num++;
if(flag) return ;
for(auto v:g[u]){
if(!color[v]) dfs(v,-c);
else if(color[v]==c){
flag=;
return ;
}
}
return ;
}
ll quick(ll a,int b){
ll ans = ;
while(b){
if(b&) ans=(ans*a)%MOD;
a=(a*a)%MOD;
b>>=;
}
return ans ;
}
int main(){
cin>>T;
while(T--){
scanf("%d%d",&n,&m);flag=;
for(int i=;i<=n;i++) g[i].clear(),color[i]=;
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
g[u].push_back(v);g[v].push_back(u);
}
int tot =;
ll ans =;
for(int i=;i<=n;i++){
if(!color[i] && !flag){
num=;sum=;
dfs(i,);
if(sum==) ans=(ans*)%MOD;
else ans=(ans*(quick(,num)+quick(,sum-num))%MOD)%MOD;
}
}
if(flag) printf("0\n");
else printf("%I64d\n",ans);
}
return ;
}

Educational Codeforces Round 56 (Rated for Div. 2) ABCD的更多相关文章

  1. Multidimensional Queries(二进制枚举+线段树+Educational Codeforces Round 56 (Rated for Div. 2))

    题目链接: https://codeforces.com/contest/1093/problem/G 题目: 题意: 在k维空间中有n个点,每次给你两种操作,一种是将某一个点的坐标改为另一个坐标,一 ...

  2. Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph 【规律 && DFS】

    传送门:http://codeforces.com/contest/1093/problem/D D. Beautiful Graph time limit per test 2 seconds me ...

  3. Educational Codeforces Round 56 (Rated for Div. 2) D

    给你一个无向图 以及点的个数和边  每个节点只能用1 2 3 三个数字 求相邻 两个节点和为奇数   能否构成以及有多少种构成方法 #include<bits/stdc++.h> usin ...

  4. Educational Codeforces Round 56 (Rated for Div. 2)

    涨rating啦.. 不过话说为什么有这么多数据结构题啊,难道是中国人出的? A - Dice Rolling 傻逼题,可以用一个三加一堆二或者用一堆二,那就直接.. #include<cstd ...

  5. Educational Codeforces Round 56 (Rated for Div. 2) F - Vasya and Array dp好题

    F - Vasya and Array dp[ i ][ j ] 表示用了前 i 个数字并且最后一个数字是 j 的方案数. dp[ i ][ j ] = sumdp [i - 1 ][ j ], 这样 ...

  6. Educational Codeforces Round 56 (Rated for Div. 2) E(1093E) Intersection of Permutations (树套树,pb_ds)

    题意和分析在之前的链接中有:https://www.cnblogs.com/pkgunboat/p/10160741.html 之前补题用三维偏序的cdq的分治A了这道题,但是感觉就算比赛再次遇到类似 ...

  7. Educational Codeforces Round 56 (Rated for Div. 2) F. Vasya and Array

    题意:长度为n的数组,数组中的每个元素的取值在1-k的范围内或者是-1,-1代表这个元素要自己选择一个1-k的数字去填写,然后要求填完的数组中不能出现连续长度大于len的情况,询问填空的方案数. 题解 ...

  8. Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph (二分图染色)

    题意:有\(n\)个点,\(m\)条边的无向图,可以给每个点赋点权\({1,2,3}\),使得每个点连的奇偶不同,问有多少种方案,答案对\(998244353\)取模. 题解:要使得每个点所连的奇偶不 ...

  9. Educational Codeforces Round 54 (Rated for Div. 2) ABCD

    A. Minimizing the String time limit per test 1 second memory limit per test 256 megabytes Descriptio ...

随机推荐

  1. python3 练习题100例 (二十九)猴子吃桃问题

    题目内容: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第n天(<1<n< ...

  2. python3 练习题100例 (二十六)回文数判断

    题目内容: 给一个5位数,判断它是不是回文数,是则输出yes,不是则输出no. 例如12321是回文数,它的个位与万位相同,十位与千位相同. 输入格式: 共一行,为一个5位数. 输出格式: 共一行,y ...

  3. 某CTF代码审计题

    记一次参加CTF比赛翻车记!   开始还是挺有信心的,毕竟也是经常打一些CTF锻炼,然而比赛发现大佬们平时不显山不漏水的一比赛全出来了!赛后看了一下各题的writeup发现自己的确技不如人啊!借鉴一个 ...

  4. stm32f103 time2配置,转载

    //----------------------------main()-------------------- //stm32f103c8t6有3个普通1个高级定时器 //每次进入中断服务程序间隔时 ...

  5. HBase 通过myeclipce脚本来获取固定columns(获取列簇中的列及对应的value值)

    第一步:关联Jar包 1. 配置hadoop-env.sh文件添加Hbase关联jar包 /opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop下编辑hadoop- ...

  6. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(三):设置上传文件夹权限(这里测试用完全共享)

    基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...

  7. 在编程的时候,NotePad++ 中闪烁的光标突然有竖着闪烁的编程蓝色下划线闪烁的--小技巧告诉你-费元星

    当在写代码时出现的光标闪烁(横线闪烁) 在键盘上找 Insert ,按这个Insert就可以把横向闪烁光标( _ )修改成竖向闪烁光标样式( | ),横向光标会在你写代码的时候修改前面的代码,把光标移 ...

  8. SGU刷题之路,开始了

    0. 关于SGU的简介 SGU的网址是:acm.sgu.ru 向不了解的同学介绍一下SGU这个题库: 1. 题目难度很高,题目大多很经典. 2. 其数据范围很小,时间和空间要求也都很小,同时很精确.甚 ...

  9. Jmeter和Charles下载文件

    有时候我们jmeter做自动化测试是会遇到文件上传和文件下载的接口,这里我将接结合Charles来Jmeter 文件下载进行讲解 一.用Charles抓包分析文件下载接口 1.1.业务中文件下载链接如 ...

  10. 【SpringCloud】第一篇: 服务的注册与发现(Eureka)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...