[链接]点击打开链接 [题意] 让你把一个数组分成奇数个部分. 且每个部分的长度都是奇数. [题解] 很简单的脑洞题. 开头和结尾一定要为奇数,然后 n为奇数的话,就选整个数组咯. n为偶数的话,不能选整个数组. 那么就只能分成3,5,7...个部分. 但是每个部分又要求是奇数. 而奇数乘奇数为奇数. 这和n为偶数抵触. 所以n为偶数直接无解. [错的次数] 0 [反思] 在这了写反思 [代码] /* */ #include <cstdio> #include <iostream>…
[链接]点击打开链接 [题意] n个点,x从左到右严格递增的顺序给出 让你划两条平行的,且没有相同点的直线; 使得它们俩各自最少穿过一个点. 且它们俩穿过了所有的点. [题解] 枚举第一个点和哪个点组成了一条线,把在线上的点去掉,然后看看剩下的点是不是组成了一条和它平行的线.且穿过了所有的点. 再枚举第一个点单独组成一条线的情况. O(n^2)复杂度 [错的次数] 0 [反思] 在这了写反思 [代码] #include <cstdio> #include <iostream> #i…
[链接]点击打开链接 [题意] 让你构造一个大小最多为10W的字符multiset. 你进行n-1次操作; 每次操作,从set中取出两个字符串,一开始单个字符被认为是字符串. 然后把它们连接在一起. (那两个字符串扔掉) 然后花费的计算方式如题目那个式子. 要求你构造出来的multiset进行n-1次操作后,总花费恰好为k. [题解] 相同的字符假如有x个,则最后答案会递增x*(x-1)/2. 因为相同的字符t全都按顺序合并在一起是最优的.(贪心!); (其实观察一下样例就知道了); (然后其他…
[链接]h在这里写链接 [题意] 场上有 n 个点,它们分别向上与向右在不同时刻开始运动,相遇则改变移动方向,求最终这些点到达的坐标. [题解] 先把每个点的坐标都往它本该移动的方向相反的方向退ti个单位. 这样,就相当于每个点都是同时开始运动的了. 想象一下,两个点同时碰撞的条件. 假设碰撞的点坐标为(x,y); 则初始的时候他们的坐标分别为(x-t,y)以及(x,y-t); 会发现,这两个点的x+y的值是一样的. (这里的x,y是每个点都退ti个单位后的点x,y) 所以,能够发生碰撞的条件,…
先给出比赛地址啦,感觉这场比赛思维考察非常灵活而美妙. A. Odds and Ends ·述大意:      输入n(n<=100)表示长度为n的序列,接下来输入这个序列.询问是否可以将序列划分成奇数个连续部分,使得每一部分满足:开头结尾是奇数,序列长度也是奇数.如果可以输出Yes否则输出No. ·分析:     我们发现这是一道与奇偶性有关的问题,因此尝试进行一些分类讨论来探求解法.序列需要满足什么特点才能满足题目要求呢?      第一个突破口是:"划分成奇数个序列,每个序列长度为奇…
[链接]h在这里写链接 [题意] 定义bad list是一个非空的.最大公约数为1的序列.给定一个序列,有两种操作:花费x将一个元素删除.花费y将一个元素加1,问你将这个序列变为good list所需要的最小花费是多少. [题解] 枚举gcd为i. 这里的枚举,并不是说确切这些数字的gcd就是i; 而是枚举这些数的gcd是i的倍数. 这样的话,每个数字都必须是i的倍数. (然后,我们只要贪心地让每个数都变成i的倍数就好了,最近的i的倍数,这样肯定是最优的) (最后gcd到底是多少,并不重要,只要…
·最小割和组合数放在了一起,产生了这道题目. 英文题,述大意:     一张初始化为仅有一个起点0,一个终点1和一条边的图.输入n,m表示n次操作(1<=n,m<=50),每次操作是任选一条已存在的边,新建一个编号为(n+1)的节点并向这条边的两个端点连边(共连接两条边).输入n次操作后满足最小割为m的图有多少种.此处两个图相同当且仅当两边集和点集满足双射.答案取模109+7. 分析:      本题要求方案数.首先读题较困难之处是什么样的两个图算不同的方案.知道每次加入的点是有编号的,有编号…
[题目链接]:http://codeforces.com/contest/821/problem/C [题意] 给你2*n个操作; 包括把1..n中的某一个数压入栈顶,以及把栈顶元素弹出; 保证压入和弹出操作都恰好各n个; 且压入的n个数字都各不相同; 在弹出栈的时候你可以把栈中的元素重新排列; 要求弹出的数形成的数列恰好组成1..n; 问你最少需要重新排列多少次; [题解] 对于每一个remove操作,其实已经能确定接下来要输出的是几了; 在进行重新排操作的时候; 你可以假定自己"很聪明&qu…
[题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一条直线的方程y=1mx+b 给你m和b; 让你在这条直线以下选一个长方形; (长方形的边都要和坐标轴平行,见样例图); 然后你可以把整个长方形内的所有点上的香蕉都拿走; 问你最多能拿走多少个香蕉; [题解] 枚举长方形的右竖边的x轴坐标; 可以得到上边的y坐标(当然取最大了); 左竖边当然是x=0了…
[题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q和同一列的元素w; 使得q+w=a[x][y] [题解] O(N4)模拟 [Number Of WA] 0 [反思] 不用考虑会选到a[x][y]本身. [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt…