Educational Codeforces Round 56 (Rated for Div. 2) ABCD
题目链接: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的更多相关文章
- Multidimensional Queries(二进制枚举+线段树+Educational Codeforces Round 56 (Rated for Div. 2))
题目链接: https://codeforces.com/contest/1093/problem/G 题目: 题意: 在k维空间中有n个点,每次给你两种操作,一种是将某一个点的坐标改为另一个坐标,一 ...
- 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 ...
- Educational Codeforces Round 56 (Rated for Div. 2) D
给你一个无向图 以及点的个数和边 每个节点只能用1 2 3 三个数字 求相邻 两个节点和为奇数 能否构成以及有多少种构成方法 #include<bits/stdc++.h> usin ...
- Educational Codeforces Round 56 (Rated for Div. 2)
涨rating啦.. 不过话说为什么有这么多数据结构题啊,难道是中国人出的? A - Dice Rolling 傻逼题,可以用一个三加一堆二或者用一堆二,那就直接.. #include<cstd ...
- 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 ], 这样 ...
- 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了这道题,但是感觉就算比赛再次遇到类似 ...
- Educational Codeforces Round 56 (Rated for Div. 2) F. Vasya and Array
题意:长度为n的数组,数组中的每个元素的取值在1-k的范围内或者是-1,-1代表这个元素要自己选择一个1-k的数字去填写,然后要求填完的数组中不能出现连续长度大于len的情况,询问填空的方案数. 题解 ...
- Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph (二分图染色)
题意:有\(n\)个点,\(m\)条边的无向图,可以给每个点赋点权\({1,2,3}\),使得每个点连的奇偶不同,问有多少种方案,答案对\(998244353\)取模. 题解:要使得每个点所连的奇偶不 ...
- 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 ...
随机推荐
- Java学习笔记三:Java的变量、常量、变量的类型及使用规则
Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...
- HBase Scan,Get用法
Scan,get用法 1. get help帮助信息 从下列get用法信息可以看出 get 后面可以跟table表名,rowkey,以及column,value.但是如果想通过get直接获取一个表中的 ...
- dubbo-admin管理控制台安装和使用
现在链接都变成了https://github.com/apache/incubator-dubbo/,找不到dubbo-admin这个目录. 那就直接去下载他们打包好的源代码:https://gith ...
- LINQ查询操作符
·First - 返回集合中的第一个元素:不延迟 ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值):不延迟 ·Last - 返回集合中的最后一个元素:不延迟 ·Las ...
- 3124: [Sdoi2013]直径
3124: [Sdoi2013]直径 https://www.lydsy.com/JudgeOnline/problem.php?id=3124 分析: 所有直径都经过的边,一定都是连续的一段.(画个 ...
- Bit-map法处理大数据问题
问题引入: 1.给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?2.给定一个千万级别数据量的整数集合,判断哪些是重复元素.3.给 ...
- 用命令部署WebPart
Webpart一般是一个wsp文件,可以在VS里面通过右键来部署.但一般真正的生产服务器上面是不会安装VS的,所以一般情况下是把wsp文件拷贝到服务器上面然后启动PowerShell用命令来部署. 部 ...
- 『AngularJS』ngShow
原文 描述 ngShow指令显示或隐藏给定的基于标明ngShow属性的HTML元素.元素的显示或隐藏通过在元素上移除或添加ng-hide CSS类属性.".ng-hide"CSS类 ...
- Qt Qwdget 汽车仪表知识点拆解3 进度条编写
先贴上效果图,注意,没有写逻辑,都是乱动的 这篇我来说说左侧的这个进度条的实现原理,其实更简单,哈哈哈 有一个大的widget,根据素材,我放了10个label 剩下的就是写一个函数,根据数据的不同, ...
- tp5 项目实战 初级 文字步骤
项目实战 环境搭建 新建模块 admin 新建文件夹 controller model view View 中新建 user index 相关样式 js 图片 放入publ ...