CF-1093 (2019/02/10)

CF-1093

1093A - Dice Rolling

  • 输出x/2即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t; cin >> t;
    while (t--)
    {
        int x; cin >> x;
        cout << x / 2 << endl;
    }
    return 0;
}

1093B - Letters Rearranging

  • 当且仅当字符串中所有字符都相同时,答案为-1
  • ans!=-1时,我们可以对字符排个序,然后输出即可。
#include <bits/stdc++.h>
using namespace std;
int t;
char s[1010];
int main(){
    cin>>t;
    while(t--){
        cin>>s;
        int flag = 0,len = strlen(s);
        for(int i=1;i<len;i++){
            if(s[i]!=s[0]){
                flag = 1;break;
            }
        }
        if(flag == 0)
            printf("-1\n");
        else{
            sort(s,s+len);
            cout<<s<<endl;
        }
    }
    return 0;
}

1093C - Mishka and the Last Exam

  • 贪心,每次都让右边尽量大(或者让左边尽量小)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,x;
ll a[200100];
int main(){
    cin>>n>>x;
    a[1] = 0,a[n]=x;
    for(int i=2;i<=n/2;i++){
        cin>>x;
        if(x>=a[i-1]+a[n-i+2]){
            a[i] = x - a[n-i+2];
            a[n-i+1] = a[n-i+2];
        }
        else{
            a[i] = a[i-1];
            a[n-i+1] = x-a[i];
        }
    }
    for(int i=1;i<=n;i++)
        printf("%lld ",a[i]);
    puts("");
    return 0;
}

1093D - Beautiful Graph

  • 给定一个图,相邻两点权值奇偶性不同,权值只能为{1,2,3}。问有多少中赋权值的方法
  • 对于每一个联通块,先假设出发结点为奇数,那么与之相连的点都为偶数,bfs一遍即可算出有多少点为奇数,假设奇数为a个,偶数为b个,则该联通块方法数为:\(a^2+b^2\)
  • 不同的联通块答案相乘即可
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 998244353;
int T,n,m;
vector<int> v[300010];
int vis[300010];
inline ll fast_pow(ll a,ll b){
    ll ans = 1%mod;
    for(;b;b>>=1){
        if(b&1) ans = (ans*a)%mod;
        a = (a*a)%mod;
    }
    return ans;
}
ll bfs(int x){
    vis[x] = 1;
    queue<int> q;
    q.push(x);
    int sum = 0,num = 0;//sum为该联通块总数,num为奇数个数
    while(!q.empty()){
        int u = q.front();q.pop();
        sum++;
        if(vis[u]==1)num++;
        for(int i=0;i<v[u].size();i++){
            int y = v[u][i];
            if(vis[y]!=0){
                //如果已经被访问过的v与u奇偶性相同,则返回0.最终答案也为0
                if(vis[y]+vis[u]!=3){
                    return 0;
                }
                continue;
            }
            vis[y] = 3-vis[u];
            q.push(y);
        }
    }
    ll ans = (fast_pow(2,num)+fast_pow(2,sum-num))%mod;
    return ans;
}
int main(){
    cin>>T;
    while(T--){
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            v[i].clear();
            vis[i] = 0;
        }
        for(int i=1,x,y;i<=m;i++){
            scanf("%d%d",&x,&y);
            v[x].push_back(y);
            v[y].push_back(x);
        }
        ll ans = bfs(1);
        for(int i=1;i<=n;i++){
            if(!vis[i]){
                ans = (ans*bfs(i))%mod;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/1625--H/p/10362791.html

时间: 2024-08-30 17:00:42

CF-1093 (2019/02/10)的相关文章

PAT 甲级 A1073 (2019/02/10) NULL(18/20)

1 #include<cstdio> 2 #include<cstring> 3 int main(){ 4 char Array[10010]; 5 scanf("%s",Array); 6 int i = 0, pos, cnt, length = strlen(Array); 7 while(Array[i++] != 'E'); 8 pos = i - 1; 9 cnt = i + 1; 10 if(Array[0] == '-') 11 printf(

PAT 甲级 A1005 (2019/02/10)

1 #include<cstdio> 2 #include<cstring> 3 char str[10][6] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; 4

PAT 甲级 A1001 (2019/02/10)

1 #include<cstdio> 2 #include<cstdlib> 3 int main(){ 4 long A,B,C,SUM; 5 scanf("%ld%ld",&A,&B); 6 SUM = A + B; 7 C = abs(SUM); 8 if(C < 1000) 9 printf("%ld",SUM); 10 if(C >= 1000 && C < 1000000) 11

PAT 甲级 A1035 (2019/02/10)

1 #include<cstdio> 2 #include<cstring> 3 struct user{ 4 char id[20]; 5 char password[20]; 6 bool ischange; 7 }List[1001]; 8 bool isalter(user &t, int &count){//1 (one) by @, 0 (zero) by %, l by L, and O by o 9 int len = strlen(t.passwo

【谜客帝国】第147届月思主擂谜会(2019.02.15)

 [谜客帝国]第147届月思主擂谜会(2019.02.15) 主持计分:东东 1.“人在中天日月间”(9笔字)春/月思 [注:面出陈孚<开平即事二首>,“势超大地山河上,-.”] 2. 玉漏声中烟气袅(3字法国奢侈品牌)YSL/月思 3. 双双相念初相爱(2字著名动漫人物)菜菜/月思 4.“数点燕云州外.雪霜威”(足球用语二,4+3)4132.451/月思 [注:面出余文<相见欢>,“登高望断龙旗,未曾归.几度中原北定,梦依稀.朔风乱,胡尘漫,掩斜晖.-.”] 5.“十载同心如一人

2019年10月北京科博会,中国科技第一展来了!

2019年10月24日,一年一度的中国北京国际科技产业博览会(简称北京科博会)将在中国国际展览中心拉开序幕.科博会以"坚持智能创新,推动科技发展"为主题,聚焦实体经济,突出创新驱动,促进科学技术与实体经济融合发展.目前,是中国规模最大.最具影响力的科技类展会,有"中国科技第一展"之称. 21年来,科博会已成为北京乃至中国的一张名片.在改革开放四十周年,科博会走过了二十一个年头的关键节点.那么,22岁的中国北京国际科技产业博览会将会是什么模样呢?据科博会公布,第二十一

等Excel工作簿关闭后自动加密压缩备份2019年10月9日.ahk

;; 等Excel工作簿关闭后自动加密压缩备份2019年10月9日.ahk;; 腾讯QQ号 595076941; 作者:徐晓亮(weiyunwps618); 写作日期:2019年5月15日; 版本号:第1版; 手机号(中国移动) 138#####488;; 用法:;; 1.在Windows 7 专业版中安装WinRAR 5.7 简体中文版和WPS Office 2016 专业增强版.; 2.在此脚本所在的文件夹新建一个与此脚本同名的Excel工作簿文件(*.xlsx).; 3.运行此脚本.; 4

【Lazy资产管理系统v1.0】2019年10月19日发布测试版

Lazy资产管理系统,是一款简洁而高效的资产管理系统,包括[资产明细查询].[资产新增管理].[资产变动管理].[资产借用管理].[资产处置管理].[我的资产变动记录].[我的资产借用记录]等功能. 为了解决广大企业管理者资产管理的难题,作者将此项目免费发布出来,供大家使用与交流,欢迎大家加入Lazy资产管理系统QQ交流群:×××,作者愿意和一起做好做强这款简洁而高效的资产管理系统. Lazy资产管理系统,将于2019年10月19日发布测试版本,欢迎大家下载测试,以便我们提供更好的免费版本给大家

S01-晓亮的电脑软件安装过程文档 腾讯QQ 595076941 2019年10月

S01-晓亮的电脑软件安装过程文档 腾讯QQ 595076941 2019年10月 本文档的创建作者的腾讯QQ聊天号码是 595076941 S02-电脑软件安装过程中不要随意关闭窗口除非必需关闭窗口否则请不要关闭任何窗口 S03-建议文档用docx格式.表格用xlsx格式自动化脚本用ahk格式少用jpg图片格式 S04-用FastCopy复制原有磁盘中的文档表格图片和数据库文件到固态U盘 S05-从固态U盘启动电脑到杏雨梨云USB维护系统对本地磁盘重新分区 整个磁盘分两个区,C盘100GB S