关闭

Asia Dhaka 2013

134人阅读 评论(0) 收藏 举报

H-gcd xor

/*
    题意:给你一个数N, 问你gcd(a, b) = a xor b的对数?
    分析:我们枚举c(gcd(a, b) = c) 和 a, 然后算出b判断即可。 

*/
#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;
const int maxn = 30000000 + 10;
typedef long long LL;
LL N;
LL f[maxn];

int main() {
    int T; scanf("%d", &T);
    int kase = 0;
    N = 30000000;
    LL res = 0;
    for(LL c=1; c<=N; c++)
    for(LL a=c+c; a<=N; a+=c) {
        LL b = a - c;
        if((a^b) == c) {
            f[a]++;
        }
    }
    for(LL i=1; i<=N; i++) {
        f[i] += f[i-1];
    }

    while(T--) {
        cin >> N;
        printf("Case %d: %lld\n", ++kase, f[N]);
    }
    return 0;
}



G- Watching the kangaroo

/*
    题意:给你N个区间l, r, 以及m个点pti, 让你求距离pti最合适的区间所对应的值,定义pti对于一个区间li, ri的合适值为:1如果这个点在li, ri外面,那么合适
    值为0, 如果在内的话那么就是min(pti-li, ri-pti).
    分析:我们找到区间的中点,首先考虑左端点对答案的贡献, 将li, midi, pti放进数组里面, 遇到li将其放入set, 遇到midi删掉对应的li, 遇到pti,则查询set里面的
    最小值。 对于ri做同样的处理即可。
*/

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <set>

using namespace std;
const int maxn = 100000 + 100;
int N, M;
int l[maxn], r[maxn];

struct Node{
    int k1, flog, k2;   //flog -1表示端点  0表示查询 1表示mid删除
};

vector<Node> arr1, arr2;
set<pair<int, int> >st;
int ans[maxn];
bool cmp1(const Node&a, const Node&b) {
    if(a.k1 == b.k1) return a.flog < b.flog;
    else return a.k1 < b.k1;
}
bool cmp2(const Node&a, const Node&b) {
    if(a.k1 == b.k1) return a.flog < b.flog;
    else return a.k1 > b.k1;
}

int main() {
    int T; scanf("%d", &T);
    int kase = 0;
    while(T--) {
        scanf("%d%d", &N, &M);
        arr1.clear(); arr2.clear();
        for(int i=1; i<=N; i++) {
            int t1, t2;  scanf("%d%d", &t1, &t2);
            l[i] = t1; r[i] = t2;
            int mid = (t1 + t2)/2;   //flog -1表示端点  0表示查询 1表示mid删除
            if((t1+t2)%2==0) {
                arr1.push_back((Node){t1, -1, i});
                arr1.push_back((Node){mid, 1, i});
                arr2.push_back((Node){t2, -1, i});
                arr2.push_back((Node){mid, 1, i});
            }else{
                arr1.push_back((Node){t1, -1, i});
                arr1.push_back((Node){mid, 1, i});
                arr2.push_back((Node){t2, -1, i});
                arr2.push_back((Node){mid+1, 1, i});
            }
        }
        for(int i=1; i<=M; i++) {
            int t; scanf("%d", &t);
            arr1.push_back((Node){t, 0, i});
            arr2.push_back((Node){t, 0, i});
        }
        sort(arr1.begin(), arr1.end(), cmp1);
        memset(ans, 0, sizeof(ans));
        st.clear();                       //flog -1表示端点  0表示查询 1表示mid删除
        for(int i=0; i<arr1.size(); i++) {
            if(arr1[i].flog == -1) {
                st.insert(make_pair(arr1[i].k1, arr1[i].k2));
            }else if(arr1[i].flog == 1) {
                int idx = arr1[i].k2;
                st.erase(make_pair(l[idx], idx));
            }else{
                int aidx = arr1[i].k2, t = arr1[i].k1;
                if(!st.empty()) {
                    pair<int, int> tp = *st.begin();
                    ans[aidx] = max(ans[aidx], t - tp.first);
                }
            }
        }
        st.clear();          //flog -1表示端点  0表示查询 1表示mid删除
        sort(arr2.begin(), arr2.end(), cmp2);
        for(int i=0; i<arr2.size(); i++) {
            if(arr2[i].flog == -1) {
                st.insert(make_pair(arr2[i].k1, arr2[i].k2));
            }else if(arr2[i].flog == 1) {
                int idx = arr2[i].k2;
                st.erase(make_pair(r[idx], idx));
            }else{
                int aidx = arr2[i].k2, t = arr2[i].k1;
                if(!st.empty()) {
                    pair<int, int> tp = *(--st.end());
                    ans[aidx] = max(ans[aidx], tp.first-t);
                }
            }
        }
        printf("Case %d:\n", ++kase);
        for(int i=1; i<=M; i++)
            printf("%d\n", ans[i]);
    }
    return 0;
}



0
0
查看评论

2013 Asia Regional Dhaka 解题报告

Source Vjudge UVALive 6650 - UVALive 6660 A 略 B 题意:N个display,每个相当于一个长度为L的B进制的数。开始都是0,每次可以按一个按钮,使得某个display对应位加1。没有进位,所以最多到B-1。且每个数最低位不能按。两个人玩游戏...
  • sunshine47
  • sunshine47
  • 2015-09-09 11:55
  • 234

2013 ACM/ICPC Asia Regional Online —— Warmup2

1010:The Shortest Path in Nya Graph  hdu4725 这题一开始用spfa一直tle+wa,注意两点: 1.新增通过层来增加边,如果i属于第k层,一层分出入点和出点两个点,增加边i->n+(k-1)*2+1,n+(k-1)*2+2->i; 然...
  • qq415200973
  • qq415200973
  • 2013-09-13 22:24
  • 512

2013 ACM/ICPC Asia Regional Online —— Warmup2 两个水题

A Computer Graphics Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission...
  • opm777
  • opm777
  • 2013-09-11 20:39
  • 1187

2013 ACM/ICPC Asia Regional Nanjing Online

2013 ACM/ICPC Asia Regional Nanjing Online  Area Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J...
  • chao1983210400
  • chao1983210400
  • 2013-09-21 17:54
  • 1302

Regionals 2014 >> Asia - Dhaka >> 6921 - Refraction

Regionals 2014 >> Asia - Dhaka >> 6921 - Refraction
  • loy_184548
  • loy_184548
  • 2015-09-03 12:11
  • 344

中国时区的Id是Asia/Shanghai

package liulixin; import java.util.TimeZone; public class ShiQu { public static void main(String[] args) { // TODO Auto-generated method stub ...
  • weiyanghuadi
  • weiyanghuadi
  • 2013-07-03 11:24
  • 2037

php设置时区date_default_timezone_set("Asia/Shanghai")

date_default_timezone_set("Asia/Shanghai")
  • nightelve
  • nightelve
  • 2014-01-02 00:51
  • 3065

2013 Asia Regional Changchun

A Hard Code题意不是我敲的。题目意思好像是把一个字符串分成NN份长度为MM的子串吧?GT手速慢,被他妹子强了FB。233333code#include<cstdio> #include<cstring> #include<cmath> #include&...
  • xuelanghu407
  • xuelanghu407
  • 2015-09-26 01:15
  • 494

PHP环境时区设置成Asia/Chongqing导致的一个bug

得到某个时间戳所对应的日期的0时在这边的数据统计中经常用到,如得到1409144737(2014/8/27 21:5:37)的0时1409068800(2014/8/27 0:0:0),可用的方法也比较多,在这里介绍常用的三种:      ...
  • orangeholic
  • orangeholic
  • 2014-09-03 11:28
  • 1117

PHP 亚洲常用时区编码

PHP亚洲常用时区编码: 亚洲(Asia) 时区编码 中国(上海) Asia/Shanghai 中国(乌鲁木齐) Asia/Urumqi 中国(香港) Asia/Hong_Kong 中国(澳门) Asia/Macau 中国(台北) Asia/Taipei...
  • lgyaxx
  • lgyaxx
  • 2017-03-18 16:59
  • 2091
    个人资料
    • 访问:3451次
    • 积分:229
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条