ccpc2017杭州 J Master of GCD

原创 2018年04月17日 11:19:15

题意:

给你一个长度为n的全一数组s[n],进行m次操作,每次操作是在区间[l,r]中的所有a[i]乘x(x是2 or 3)。求s[n]的最大公约数。

题解:

如果直接n*m的话复杂度太高,所以需要优化,每次记录操作的起始位置和末位,通过,a[r]++和a[l+1]--,一个是操作的记录,一个是消除对a[l]之后数的影响。之后通过a[i+1]+=a[i]得到具体每个数的操作数,然后找出最小的操作值,之后用快速幂,求出所需的答案。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100000 + 5;
const int mod = 998244353;
int a[N], b[N];
ll fun(ll a, ll b)//快速幂算法
{
    ll s=1;
    while(b>0){
        if(b%2) s = (s * a) % mod;
        a = (a * a) % mod;
        b >>= 1;
    }
    return s;
}
int main()
{
    int t, n, m, l, r, mul, min1, min2;
    ll ans;
    cin >> t;
    while(t--){
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
        min1 = min2 = mod;
        cin >> n >> m;
        for(int i=0;i<m;i++){//采用O(n)的查询方法,只记录头尾的操作
            scanf("%d%d%d", &l, &r, &mul);
            if(mul == 2){
                a[l] ++;
                a[r+1] --;
            }
            else{
                b[l] ++;
                b[r+1] --;
            }
        }
        for(int i=1;i<=n;i++){
            a[i] += a[i-1];
            b[i] += b[i-1];
            min1 = min(min1, a[i]);
            min2 = min(min2, b[i]);
        }
        ans = fun(2, (ll)min1);
        ans = (ans * fun(3, (ll)min2)) % mod;
        cout << ans<<endl;
    }
    return 0;
}

HDU6274&&2017CCPC杭州K Master of Sequence 【二分+预处理】

传送门 题意描述: 给长度为n的数组a和b。然后有m给长度为n的数组a和b。然后有m给长度为n的数组a和b。然后有m次操作,1)把ax的值变为yax的值变为ya_x的值变为y;2)把bxbxb...
  • m0_37953323
  • m0_37953323
  • 2018-04-14 20:59:56
  • 42

CCPC 2015 部分题解

【A Secrete Master Plan】http://acm.uestc.edu.cn/#/problem/show/1215 【题意】水题,题意就是给了两个2*2的矩形,判断通过旋转是否这两...
  • just_sort
  • just_sort
  • 2016-09-22 21:15:50
  • 1236

GCD 深入理解 第一部分

GCD 深入理解:第一部分 本文翻译自 http://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1 原作...
  • jiajiayouba
  • jiajiayouba
  • 2016-05-12 14:47:29
  • 1024

GCD 深入理解(一)

原文链接:http://www.cocoachina.com/industry/20140428/8248.html 本文由@nixzhu翻译至raywenderlich的《grand-centra...
  • yuping2901
  • yuping2901
  • 2016-05-13 10:55:27
  • 177

2017CCPC杭州站打铁总结

第一次参加CCPC这种大型比赛,感觉像乡下人进城一样高兴,吃的挺好,两荤两素而且住的也不错,操作系统的liunx的吓得我无法操作,还好队友学长厉害的啥都会,分分钟解决这种小事情,比赛的时候还见到了一堆...
  • winnerCLAY
  • winnerCLAY
  • 2017-11-06 20:29:34
  • 402

GCD 深入理解:第二部分

GCD 深入理解:第二部分 本文翻译自 http://www.raywenderlich.com/63338/grand-central-dispatch-in-depth-part-2 原作...
  • jiajiayouba
  • jiajiayouba
  • 2016-05-13 09:46:03
  • 714

ios GCD

什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像NSOperationQueue,他们...
  • hwj2012
  • hwj2012
  • 2014-02-24 20:20:43
  • 3322

2017中国大学生程序设计竞赛-杭州站-重现赛-Super-palindrome

比赛题目:http://acm.hdu.edu.cn/downloads/CCPC2018-Hangzhou-ProblemSet.pdf#include&amp;lt;iostream&amp;gt...
  • weixin_39145990
  • weixin_39145990
  • 2018-04-14 12:41:44
  • 138

杭州CCPC Master of GCD

差分#include using namespace std; typedef long long int LL; const int N=100000+10; #define Mod 9982443...
  • Pandauncle
  • Pandauncle
  • 2018-04-16 18:15:03
  • 7
收藏助手
不良信息举报
您举报文章:ccpc2017杭州 J Master of GCD
举报原因:
原因补充:

(最多只允许输入30个字)