Crazy tea party Time Limit: 1000MS   Memory Limit: 10000K        Description n participants of << crazy tea party >> sit around the table. Each minute one pair of neighbors can change their places. Find the minimum time (in minutes) required f…
id=2002">Squares 很好的一道二分,事实上本来我是没有思路的,看了基神的题解之后才似乎明确了点. 题意:给出最多有1000个点,问这些点能够组成多少个正方形 分析:先想想怎么推断正方形吧.假如我如今有四个点A,B,C,D,由于边不一定是平行于x轴的.可能是倾斜的,怎样推断四个点组成的四边形是正方形呢?以A点为中心,AB为轴,绕A点顺时针或者逆时针转动90度,就能够得到一个点D' , 相同的方法.以B 点为中心,BA为轴.绕B点顺时针或者逆时针转动90度.就能够得到一个点C'…
这道题第一眼看去很难,其实不然,短短几行代码就搞定了. 说一下大概思路,如果是排成一排的n个人,如 1 2 3 4 5 6 7 8 我们要变成 8 7 6 5 4 3 2 1 需要交换 28次,找规律的话就是 n*(n-1)/2,但这道题是一个圈,要让他们顺序变反的话不一定1要在8的位置上去,4 3 2 1 8 7 6 5 这样也是反的,我们只要把n个人分成两部分,然后按拍成一条线的方法来出来两部分就OK了: #include <iostream> #include <stdio.h&g…
这阵子都没怎么写代码,由于开学,忙于各种琐碎的事情,现在静下来了开始跟着暑假的节奏刷题了. 这道题一开是没看清题目-在寝室刷题就是效率不高... 后来才知道,题目意思是,一个环形序列,1minute可以交换相邻的两个位置,问逆序所需的最小时间是多少. 如果不是环形的话那就好办了,就是个冒泡. 非环形时: 如 n = 5 : 1 2 3 4 5 所需时间为:n*(n-1)/2 = 10 环形时: 如 n = 5 :1 2 3 4 5 可将 n拆分成2 + 3 1 2 和 3 4 5 可用4部将其逆…
Reversing Linked List Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; if K=4, you must output 4→3→2→1→5→6…
题目大意:TT 和 FF玩游戏(名字就值五毛),有一个数列,数列有N个元素,现在给出一系列个区间和该区间内各个元素的和,如果后出现的一行数据和前面一出现的数据有矛盾,则记录下来.求有矛盾数据的数量. 题目思路:刚刚拿到手时一脸懵逼,这是并查集?后来发现还真是并查集 - -!! 如果数据有错那么会是什么情况? 1-10 10 1-5   5 6-10  4 很明显第三行的数据和已知的数据产生了矛盾,我们分析一下矛盾是如何产生的. 我们用v[i]来统计最右端为i的区间和,那么: 第一行数据得知v[1…
题意:给你N 城市和M条道路,每条道路要付的钱,但是如果你在这个道路上你可以付其他道路的钱(跟走到的时候去的话不一样),问你从1走到N最少话费是多少. 直接DFS搜. 链接http://poj.org/problem?id=3411 代码: #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <stdlib.h> #inc…
传送门: http://poj.org/problem?id=1949 Chores Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 6368   Accepted: 3013 Description Farmer John's family pitches in with the chores during milking, doing all the chores as quickly as possible. At…
题意:一棵有根树,每个节点都有一个value值和属性(zan或是 CANDLE).你可以通过反转一些点的属性,反转一个点时候,它的整个子树都会被反转属性.有些点反转消耗代价为X,有些为Y.你的目标的是求zan和candle差的最大值. 思路:dp[i][0]代表zan比candle多的最大值,dp[i][1]代表zan比candle少的最大值.注意每次更新当前节点的状态,如果当祖先节点加上当前节点的反转状态为偶数当然val不变,否则变.此题信息比较多,注意化繁为简.转移方程见代码 #includ…
#include<cstdio> int main(){ int T,n; scanf("%d",&T); while(T--){ scanf("%d",&n); printf(*(n/-)/+(n-n/)*(n-n/-)/); } ; }…