2018湖南多校第八场 训练日志

solved 3 (7/22)

前缀和乱搞的题看成是模拟退火求最小费马点,很烦。

Permutations (子序列)

Travel Frog (dp + 公式)

Appositive Body (中心对称的结论)

<qj>

题意:4维空间里n个点,是否能够中心对称。

首先利用所有点求出中心点的坐标,然后对于每个点,求出对应点的坐标,在set中查找是否存在。

所有的点都有对应点,那么存在。

#include <cstdio>
#include <iostream>
#include <set>
using namespace std;
#define ll long long

template<class T>
inline void read(T &ret){
    int sign = 1;
    ret=0;
    char c = getchar();
    while(c!=‘-‘ && (c>‘9‘||c<‘0‘))c=getchar();
    if(c==‘-‘)sign=-1;
    else ret = c-‘0‘;
    while(c=getchar(),c>=‘0‘&&c<=‘9‘){
        ret = ret*10+c-‘0‘;
    }
    ret*=sign;
}

int n;

struct node{
    ll x,y,z,t;
    node(ll x=0,ll y=0,ll z=0,ll t=0):x(x),y(y),z(z),t(t){}
    friend bool operator < (node a,node b){
        if(a.x==b.x){
            if(a.y==b.y){
                if(a.z==b.z){
                    return a.t<b.t;
                }return a.z<b.z;
            }return a.y<b.y;
        }return a.x<b.x;
    }

    friend bool operator == (node a,node b){
        if(a.x==b.x&&a.y==b.y&&a.z==b.z&&a.t==b.t)return 1;
        return 0;
    }
}p[10000007];

multiset<node> st;

node findnode(node a,node b){
    ll xx = b.x*2-a.x;
    ll yy = b.y*2-a.y;
    ll zz = b.z*2-a.z;
    ll tt = b.t*2-a.t;
    return node(xx,yy,zz,tt);
}

int main(){
    while(scanf("%d",&n)!=EOF){
        ll sumx=0,sumy=0,sumz=0,sumt=0;
        for(int i=1;i<=n;i++){
                scanf("%lld %lld %lld %lld",&p[i].x,&p[i].y,&p[i].z,&p[i].t);
            //read(p[i].x);read(p[i].y);
            //read(p[i].z);read(p[i].t);
            sumx+=p[i].x;
            sumy+=p[i].y;
            sumz+=p[i].z;
            sumt+=p[i].t;
        }
        st.clear();
        node zx = node(sumx,sumy,sumz,sumt);
        for(int i=1;i<=n;i++){
            p[i].x*=n;p[i].y*=n;
            p[i].z*=n;p[i].t*=n;
            st.insert(p[i]);
        }
        int ans=1;
        for(int i=1;i<=n;i++){
            node dc = findnode(p[i],zx);
            //cout<<st.count(dc)<<" "<<st.count(p[i])<<endl;
            if(st.count(dc)==0){

                ans=0;break;
            }
        }
        if(ans)puts("exist");
        else puts("not exist");
    }
    return 0;
}

统帅三军! (前缀和乱搞)

原文地址:https://www.cnblogs.com/dowhile0/p/9190082.html

时间: 2024-10-17 19:55:04

2018湖南多校第八场 训练日志的相关文章

2017 全国多校第十场 训练日志

solve 2(310 / 634) J题题意搞错一口大锅. dzcH题结论猜对了,只是树上二分图不用匈牙利算法,能换成更高效的写法. B Array Challenge 高斯消元 + 矩阵快速幂 H Monkeys 二分图结论 J Schedule 优先队列 <qj> 题意: 有n个任务,给你开始时间和结束时间,有无数台机器,每台机器可以在同一时间最多处理一个任务,并且开机之后,只能关一次机,不能中途关机又开机. 问至少需要多少机器,在这么多台机器的情况下,最少花费多少.(花费 = 每台机器

2019湖南多校第三场

解题过程 开场lfw过A,然后byf突然想到E的构造方法,WA了一发开始查错,shl中途看G,说"这不是bzoj原题吗?"拿到一血带歪榜,然后byf该出E拿到一血又带歪榜...shl写出B,之后lfw C想复杂调不出,shl WA一发C过掉 ,byf发现F题是几何题,想起了寒假刚几何起步的lfw,byf开始带着lfw想防AK题.K题shl先贪心再二分做了很久最后过掉,K题lfw想网络流,然后失败了,最后byf想出费用流,好像可以,但是shl过掉了. 赛后发现G题真的是BZOJ原题,而且

多校第八场:图论出度

HDU 4948 这题比赛的时候遗憾了,我看了这道题,然后觉得挺简单的. 刚开始一看题上,想到的就是拓扑排序,然后脑子想啊想--感觉就是拓扑排序的逆序,然后发现挺水的-- 因为说了要想发展某个城市的话,就必须有另一个城市作为它发展的前提,即城市u->w这样连边,表示要想发展城市w,前提是u已经是发展过的城市了.那这样的话不是很简单嘛. 即统计出出度最多的就是第一个要发展的城市了,因为u->w这样连边可以看出算出出度最多的依次从大到小排序就行了. 哎呀,不过可惜了,因为看见没人交这题,然后也不敢

2014 HDU多校弟八场H题 【找规律把】

看了解题报告,发现看不懂 QAQ 比较简单的解释是这样的: 可以先暴力下达标,然后会发现当前数 和 上一个数 的差值是一个 固定值, 而且等于当前数与i(第i个数)的商, 于是没有规律的部分暴力解决,有规律的套公式 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdio.h> #include <iostream> #include <cstring&g

2018 HDU多校第三场赛后补题

2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube 题意: 在画布上画一个三维立方体. 题解: 模拟即可. 代码: #include <bits/stdc++.h> using namespace std; int a, b, c, R, C; char g[505][505]; int main () { int T; cin >>

2019 湖南多校第五场题解

解题过程 开场byf去修锅,各种spj没写,还有写挂的.开场shl写A,lfw写K,shl写E,shl写G,前期签到顺利.随后lfw推出D的规律,开始写,遇到了一些错误,首先MLE了,因为k^2预处理,lfw用的string来存不同的子串丢到unordered_map里,那么就是k^3的存储,肯定炸,接着换成了hash值,但是单关键字冲突了,WA了一发,接着用双关键字,使用一个pair存map,map带的logn常数MLE了一发,中间B题加上了spj,lfw习惯性输出空格,WA一发后过了,最后l

2019湖南多校第四场

解题过程 开场lfw过A,然后shl过C,然后把B题丢给做苦力劳动悲悲伤伤的lfw写,lfw过B,D题lfw开始字符串hash,一开始直接用结构体里面存数组丢set里面然后MLE,之后改成long long丢进set,还是MLE,然后lfw开始上头,随便乱改一下就交上去MLE. 然后shl吧防AK题K过了,做过这套题的原题,接下来shl还是死磕I题,一直在WA.lfw修改了D题复杂度,WA了一发,改成双关键字就过了.最后 set只能存1e6,超过就会mle.shl把G题过掉,和byf一起死磕I题

2016多校第八场 hdu5821 Ball

http://acm.hdu.edu.cn/showproblem.php?pid=5821 水题的精华..... 有n个球,给出目前的颜色序列a和目标颜色序列b,再给出m个可以重新安排球顺序的球区间,这m个区间是不得重新安排区间顺序,问能否达到目标的颜色序列 这题是那道给出一个字典,再给出某一个字符串S,S只要能经过重排得到字典中任意一个字符串T就输出yes的进化版. 这里是for b[i] a[i]==b[i],所以可以通过映射关系重新编号b为1-n,再重新编号a为1~n使得关系变成for

2016 全国多校第二场 训练日志

solve 4 (131/582) A Acperience (解方程) E Eureka (几何点对相关) I It's All In The Mind (签到) K Keep On Movin (签到) L La Vie en rose (字符串hash) <qj> 思路: 正解可能是dp之类的,用hash字符串水了出来. 1.对于t串,hash成一个数字.  复杂度O(|t|) 2.对s进行一次滚动hash. 复杂度O(|s|) 3. 对于截取的一段ss,如果ss的hash值等于t的ha