Codeforces755D PolandBall and Polygan】的更多相关文章

题目戳这里 我们只需要计算每增加一条线后穿过了几条已有的线即可.为了方便,我们令\(K \le N/2\),并且给每条线一个方向,即\(x\)到\((x+K) \; mod \; N\).然后我们假设现在我们正在链接\(a\)到\((a+K) \; mod \; N\)这条线,于是他穿过的线就是从\((a-K,a+k)\)(模\(K\)意义下)$这段区间中点射出边的数目,拿个树状数组维护一下即可. #include<cstdio> #include<cstdlib> using n…
C. PolandBall and Forest time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output PolandBall lives in a forest with his family. There are some trees in the forest. Trees are undirected acyclic graph…
D. PolandBall and Polygon time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output PolandBall has such a convex polygon with n veritces that no three of its diagonals intersect at the same point. P…
PolandBall and Gifts 转换成置换群后, 对于最大值我们很好处理. 对于最小值, 只跟若干个圈能否刚好组能 k 有关. 最直观的想法就是bitset优化背包, 直接搞肯定T掉. 我们能再发掘一些性质, 就是本质不能的圈的大小最多有sqrt(n)个, 因为1 + 2 + 3 ... + n = (n + 1) * n / 2 所以对于每个不同的数二进制优化一下就可以过啦. 感觉这种题就很有意思.. #include<bits/stdc++.h> #define LL long…
题目链接: F. PolandBall and Gifts time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input output standard output It's Christmas time! PolandBall and his friends will be giving themselves gifts. There are n Balls overall.…
F. PolandBall and Gifts   It's Christmas time! PolandBall and his friends will be giving themselves gifts. There are n Balls overall. Each Ball has someone for whom he should bring a present according to some permutation p, pi ≠ i for all i. Unfortun…
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output PolandBall is playing a game with EnemyBall. The rules are simple. Players have to say words in turns. You cannot say a word which was already sa…
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output PolandBall is a young, clever Ball. He is interested in prime numbers. He has stated a following hypothesis: "There exists such a positive integ…
time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard output PolandBall has such a convex polygon with n veritces that no three of its diagonals intersect at the same point. PolandBall decided to improve i…
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output PolandBall lives in a forest with his family. There are some trees in the forest. Trees are undirected acyclic graphs with k vertices and k - 1 e…
PolandBall lives in a forest with his family. There are some trees in the forest. Trees are undirected acyclic graphs with k vertices and k - 1 edges, where k is some integer. Note that one vertex is a valid tree. There is exactly one relative living…
题面 CF755G PolandBall and Many Other Balls 给定 \(n\) 和 \(m\).有一排 \(n\) 个球,求对于每个 \(1\le k\le m\),选出 \(k\) 个球或相邻的球不能重复的方案数. 数据范围:\(1\le n\le 10^9\),\(1\le m<2^{15}\). 路标 这题是老经典题了,前人的描述也足够充分了. 但是蒟蒻尝试了这题的 \(3\) 种做法并记在笔记中后还是忍不住去挣咕值分享给大家. 这是的三种做法对比图(从下到上依次是倍…
http://codeforces.com/contest/755/problem/D // 我也觉得非平面图不能用欧拉公式,但是也能过,不知道为什么.求大佬留言. 这题其实就是平面图,因为它有很多个交点.中途的交点使得图的阶数变大了 所以我的思路就是求出V.E.然后解出F.V - E + F = 2 其中每连接一条边,增加的交点就是其路径上的点被多少次经过.(不包括自己端点) 这个可以用BIT维护下. 然后当k > n - k的时候,需要反向一下,因为这样其实就相当于镜面对称一下而已,不然会w…
题意:给定每一点离他最远的点,问是这个森林里有多少棵树. 析:并查集,最后统计不同根结点的数目即可. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include &…
https://blog.csdn.net/wc781708249/article/details/79595174 按照这个安装就可以了 sudo apt-get install python-qt4 pyqt4-dev-tools sudo pip install labelme…
http://codeforces.com/problemset/problem/755/D 每次新画一条对角线的时候,考虑其跨越了几条原有的对角线. 可以用树状数组区间修改点查询来维护多边形的顶点.答案每次增加 新对角线的左端点在多少个区间内+右端点在多少个区间内+1,每次把新画的对角线所覆盖的较小区间内部的每个点加1即可.注意,一定要是较小的区间,因为这样才能保证其左右端点不同时在区间内,不会重复统计. #include<cstdio> #include<algorithm>…
题目大意: 有两个人轮流说单词,已经说过的单词不能再说.给出两人掌握的不同的单词,两人可能掌握相同的单词,但是这个单词也只能说一边.问在两人都是最优策略下先手是否必胜. 题解: 我们发现最优策略一定是先说两人都掌握的单词. 所以我们求出所有同时被掌握的单词 然后根据这种单词的奇偶性来判断即可. 求的时候写了个Trie... 不过好像直接暴力也可以.. #include <cstdio> #include <cstring> #include <algorithm> us…
[题目链接]:http://codeforces.com/contest/755/problem/F [题意] n个人; 计划是每个人都拿一个礼物来送给一个除了自己之外的人; 且如果一个人没有送出礼物,那么它和它送礼物的对象都得不到礼物; 但是已经知道有k个人会忘记带礼物来; 问最少有几个人收不到礼物,最多有多少个人收不到礼物 [题解] ① 对于最多的情况; 最后会形成多个环; 每个环隔一个人选一个人忘记带礼物;这样一个长度为len的环只要len/2个人没带礼物就能够整个环的人都收不到礼物了;…
[题目链接]:http://codeforces.com/contest/755/problem/E [题意] 给你n个节点; 让你在这些点之间接若干条边;构成原图(要求n个节点都联通) 然后分别求出原图和补图(补图也要求联通)的直径r1和r2 然后要求min(r1,r2)==k; 让你求出符合要求的原图的m条边; [题解] 有个结论; 如果图G的直径超过了3,则它的补图的直径会比3小; 且k=1的时候,是无解的; 因为k=1就说明一张图上只有一条边; n=2的时候,另外一张图上没边,最小值为0…
http://codeforces.com/contest/755/problem/E 题意:给出n个点和一个距离d,让你在这个n个点的图里面构造一个子图,使得这个子图的直径和补图的直径的较小值为d,如果不可能输出-1,如果可能把子图的边表示出来. 思路:一个图的直径就是图的任意两点之间的距离的最大值. 这里有参考:http://blog.csdn.net/jasonvictoryan/article/details/54572646 感觉这种类型的构造题目不会做的话还是只能找规律,当然这个规律…
http://codeforces.com/problemset/problem/755/D 题意:给出一个n正多边形,还有k,一开始从1出发,向第 1 + k 个点连一条边,然后以此类推,直到走完 n 次.对于每一步都要输出当前多边形中有多少个多边形. 思路:画了几幅图后发现规律:两个点相连,这条边多产生出来的多边形的数目等于跨越的边的数目+1,跨越边的数目是 x 和 x + k 中已经走过的点的数目.那么每次走一步,就求这段区间里面已经走过的点的数目,点的数目+1就是答案,区间查询单点更新,…
http://codeforces.com/problemset/problem/755/C 题意:该图是类似于树,给出n个点,接下来p[i]表示在树上离 i 距离最远的 id 是p[i],如果距离相等则p[i]是 id 较小的点. 思路:一开始没什么想法,画几分钟图发现不到什么东西,后来想着 i 和 p[i] 有关系,那么就代表 i 和 p[i] 是属于同一棵树,那么不就是并查集了嘛.抱着试一试的心态搞了一下居然过了. #include <cstdio> #include <cstri…
http://codeforces.com/problemset/problem/755/B 题意:A可以喊出n个字符串,B可以喊出m个字符串,如果一个字符串之前被喊过,那么它再也不能喊了,A先喊,最后没得喊的输.问谁赢. 思路:用map判断A.B中字符串一样的个数,因为A可以先喊,然后B再喊,每个人可以喊的数量要减去cnt / 2(如果是奇数,A可以喊多一个),表示被对方喊了.如果最后n<=m则A输,否则A赢,等于的情况是因为A先喊,B再喊,到最后A会输. #include <cstdio&…
http://codeforces.com/problemset/problem/755/A 题意:给出一个n,让你找一个m使得n*m+1不是素数. 思路:暴力枚举m判断即可. #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> #include <string> #include <iostr…
题目链接:http://codeforces.com/contest/755/problem/D 题意:一个n边形,从1号点开始,每次走到x+k的位置如果x+k>n则到x+k-n的位置,问每次留下来的路径把这个多边形划分成了几个部分. 很明显只要求x到x+k位置之间的点有几个入度就行了,而且只要求小区间内除去两点剩下的点的入度即可. 不需要考虑x或x+k点到该点的入度因为更本不可能从x或x+k到该点. 所以可以将k值稍微优化一下全都统一到k<n/2,这不影响结果因为假设5个点1到3,k=2.5…
每次连线,起点和终点之间,每一个被点亮的点,这些点都能连出去两条线,因此可以增加的块数+2(1这个点除外,因为只有连出的点没有连进的点),计算起点和终点之间有几个点被点亮即可,然后1这个点特判一下.感觉,可以用线段树维护..不过这题还是有规律的,每转过一圈,两线之间的点数就会加1,然后O(n)扫一遍就行了.注意答案会爆int. 代码如下: #include <bits/stdc++.h> using namespace std; ; typedef long long ll; int n,k;…
题意:长度为n的序列,相邻两个或单独一个可以划分到一个组,每个元素最多处于一个组. 问恰好分割成k(1<=k<=m)段有多少种方案? 标程: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ; ; int l,_n,pos[N],n,k,a[N],b[N],c[N],x1[N],x2[N],x3[N],x4[N],w[N],wn,inv_n; int ksm(int x,int y) { ;…
直接从1开始枚举不就行了... 思路如下: 1.先定义一个判断是不是质数的函数 int pd(int n) { if(n==1)return true; if(n==2)return false; for(int i=2;i*i<=n;i++) if(n%i==0)return true; return false; } 2.从1开始枚举,可以直接使用 for(int i=1;;i++) 进行枚举 3.判断i是否满足要求,调用函数,如果满足,就直接输出i并且break或return 0 for(…
[CF755B] Description 两个人轮流说单词,每个人只能说自己的的单词库里的单词.被任意方说过的单词不能再说.一个单词只会在某个人的单词库中出现一次,但是可能同时出现在两个人的单词库中.最先没有单词说的人负.求游戏的胜负. \(n,m \le 1000, L_s \le 500\) Solution 最优策略必然是优先说掉所有公共单词,然后再说非公共单词. 设公共单词的数量为 \(c\) . 若 \(c\) 为奇数,那么最后一个说出公共单词的是先手,此时若 \(n \ge m\)…
我们可以发现,当n>2时,n·(n-2)+1=(n-1)·(n-1),因此,输出n-2即可. 如果n<=2,我们可以发现: 当n=2时,2·4+1=9不是质数,输出4即可: 当n=1时,1·3+1=4不是质数,输出3即可. 至此,此题就被我们解决了! AC代码: #include <bits/stdc++.h>//万能头文件 using namespace std;//使用标准名字空间 inline int read() { //快速读入 ,x=; char c=getchar()…