SGU 271 Book Pile】的更多相关文章

There is a pile of N books on the table. Two types of operations are performed over this pile: - a book is added to the top of the pile, - top K books are rotated. If there are less than K books on the table, the whole pile is rotated. First operatio…
题意:n,m,k,表示有一个长度为 n 的序列,有 m 个操作,操作有 2 种,第一种是 ADD 在前面添加一个串,第二种是把前 k 个进行翻转,问你最后的序列是什么样的. 析:很明显,如果直接模拟,肯定会超时,由于 k 是固定的,我们就可以前 k 个串,如果没有翻转,那么就把添加的串方法直接放到双端队列前面,然后把双端队列后面那个串再拿出去,如果翻转了,就把添加的串方法直接放到双端队列后面,然后把双端队列前面那个串再拿出去. 代码如下: #pragma comment(linker, "/ST…
有n本书从上到下摞在一起,有两种操作.ADD(C)表示把一本新书C放到这一摞书的最顶上,ROTATE表示将前K本书进行反转.在一系列操作后输出最后书的顺序 分析: 当时听别人讲这个题的时候很懵逼,后来自己读了一下题发现K是个固定的值,这样就好解决了 每次反转操作只是针对于顶上的K个进行. 我们可以用一个两个双端队列解决 第一个双端队列储存前K本书,第二个双端队列(也可以是别的栈或者普通队列什么的因为不会再进行反转了)储存剩下的书. 对于每个反转操作,只需要将双端队列的头和尾交换一下(并不是真的交…
B. Worms time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output It is lunch time for Mole. His friend, Marmot, prepared him a nice game for lunch. Marmot brought Mole n ordered piles of worms such…
水概率....SGU里难得的水题.... 495. Kids and Prizes Time limit per test: 0.5 second(s)Memory limit: 262144 kilobytes input: standardoutput: standard ICPC (International Cardboard Producing Company) is in the business of producing cardboard boxes. Recently the…
sgu 101 - Domino Time Limit:250MS     Memory Limit:4096KB     64bit IO Format:%I64d & %I64u Description Dominoes – game played with small, rectangular blocks of wood or other material, each identified by a number of dots, or pips, on its face. The bl…
http://acm.sgu.ru/problem.php?contest=0&problem=495 题意:N个箱子M个人,初始N个箱子都有一个礼物,M个人依次等概率取一个箱子,如果有礼物则拿出礼物放回盒子,如果没有礼物则不操作.问M个人拿出礼物个数的期望.(N,M<=100000) #include <cstdio> using namespace std; double mpow(double a, int n) { double r=1; while(n) { if(n&…
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=455 Due to the slow 'mod' and 'div' operations with int64 type, all Delphi solutions for the problem 455 (Sequence analysis) run much slower than the same code written in C++ or Java. We do not gua…
Codeforces Round #271 (Div. 2) A - Keyboard 题意 给你一个字符串,问你这个字符串在键盘的位置往左边挪一位,或者往右边挪一位字符,这个字符串是什么样子 题解 模拟一下就好了 代码 #include<bits/stdc++.h> using namespace std; string s[3]; map<char,int>r,c; char ss[2][107]; int main() { s[0]="qwertyuiop"…
题目大意 某人在打字机上打一个字符串,给出了他打每个字符出错的概率 q[i]. 打一个字符需要单位1的时间,删除一个字符也需要单位1的时间.在任意时刻,他可以花 t 的时间检查整个打出来的字符串,并且从当前光标删除到第一个出错的位置(留下的字符串要么为空,要么每个字符都是对的).问你,他正确的打完该字符串最少需要花费的时间的期望值是多少 字符串的长度小于等于3000 题意有点绕,具体可以看看原题是怎么描述的 做法分析 首先确定这是一个概率DP的问题. 定义状态 f[i] 表示正确的打完前 i 个…
104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB 问题: 你想要将你的花窗安排得最具美感.有F束花,每一束花都不一样,至少有F个按顺序排成一行的花瓶.花瓶从左到右,依次编号1-V.而花放置的位置是可以改变的,花依次编号1到F.花的序号有一个特征,即是序号决定了花束出现在花瓶里的顺序.例如,有两束花编号i和j,满足i<j,那么i所在的花瓶一定要在j所在花瓶的左边,即是i…
令一个点的属性值为:去除这个点以及与这个点相连的所有边后得到的连通分量的节点数的最大值. 则树的重心定义为:一个点,这个点的属性值在所有点中是最小的. SGU 134 即要找出所有的重心,并且找出重心的属性值. 考虑用树形DP. dp[u]表示割去u点,得到的连通分支的节点数的最大值. tot[u]记录以u为根的这棵子树的节点数总和(包括根). 则用一次dfs即可预处理出这两个数组.再枚举每个点,每个点的属性值其实为max(dp[u],n-tot[u]),因为有可能最大的连通分支在u的父亲及以上…
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=170 解题报告:输入两个由'+'和'-'组成的字符串,让你判断第二个串能不能由第一个串中的字符交换位置得到,不能的话输出-1,能的话输出最少的需要交换的次数. 一开始以为是DP,后来仔细一看发现,+号之间相对的位置是固定的,就是说如果可以,+号在调换位置的过程中是不会跟+号调换的,只跟-号调换,只有这样才能保证交换的次数是最少的. #include<cstdio> #includ…
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=179 解题报告:输入一个合法的括号串,求出这个括号串的字典序的下一个串.(认为'(' < ')') 我的做法主要是用了生成字典序的下一个序列的思想: 1.从序列的尾部开始往前找,找到第一个升序的位置例如 2 5 4 3 对于这个序列来说就是2 5这个位置 2.然后在后面这个降序的序列中找到一个比这个2稍大一点的数跟2进行交换得到3 5 4 2 3.然后把这个位置的后面的串转过来得到3…
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=180 解题报告:一个裸的求逆序对的题,离散化+线段树,也可以用离散化+树状数组.因为这题中的数列有重复的而且范围特别大,所以要进行离散化,离散化的方法是, 首先按照输入的数字排个序,然后把整个数列扫一遍,得出每个数字离散化的结果,然后再按照输入的顺序把顺序调整回来就OK 了.线段树部分就不说了. #include<cstdio> #include<cstring> #…
H - The equation Time Limit:250MS     Memory Limit:4096KB     64bit IO Format:%I64d & %I64u Submit Status Practice SGU 106 Description There is an equation ax + by + c = 0. Given a,b,c,x1,x2,y1,y2 you must determine, how many integer roots of this eq…
题目传送门 /* 题意:n*n的矩阵,放置k个king,要求king互相不能攻击,即一个king的8个方向都没有另外的king,求方案个数 状态压缩DP:dp[i][num[j]][s] 代表在第i行,放置num[j]个king,其状态为s时的方案数 首先对state进行筛选,即一行king左右相邻没有另外的king,确定tot 接着对第一行进行处理,对2~n行DP递推,同样要满足各种条件限制,num个数和不超过k,s1,s2状态也要ok 最后累加放置k个king时的方案数 详细解释:http:…
题目地址:http://acm.sgu.ru/problem.php?contest=0&problem=107 /* 题意:n位数的平方的后面几位为987654321的个数 尼玛,我看描述这一句话都看了半天,其实只要先暴力程序测试一边就知道规律 详细解释:http://www.cnblogs.com/Rinyo/archive/2012/12/04/2802089.html */ #include <cstdio> #include <iostream> #include…
题目地址:http://acm.sgu.ru/problem.php?contest=0&problem=126 /* 找规律,智商不够,看了题解 详细解释:http://blog.csdn.net/ahfywff/article/details/7432524 */ #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <iostrea…
---恢复内容开始--- 题意: 给了n个点,m条有向边. 接下来m行,每条边给起点终点与容量,以及一个标记. 标记为1则该边必须满容量,0表示可以在容量范围内任意流. 求: 从源点1号点到终点n号点的最小的可行流. 思路: ======================================================ge 1.二分最小可行流[是复杂度偏高的一种] <一种简易的方法求解流量有上下界的网络中的网络流问题> 我自己的东西只有在二分的时候.判断当前枚举的值是偏大还是偏小…
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=385 题意: 思路: double f[N][N][N],g[N][N],A[N][N]; int n; void init() { int i,j; for(i=2;i<=100;i++) { A[i][1]=i; for(j=2;j<=i;j++) A[i][j]=A[i][j-1]*(i+1-j); } } double DFS(int,int,int); double d…
538. Emoticons 题目连接: http://acm.sgu.ru/problem.php?contest=0&problem=538 Description A berland national nanochat Bertalk should always stay up-to-date. That's why emoticons highlighting was decided to be introduced. As making emoticons to be highligh…
532. Building Foundation 题目连接: http://acm.sgu.ru/problem.php?contest=0&problem=532 Description A new office building is to appear in Berland soon. Its construction has just been started, and the first problem builders are facing is to lay the foundat…
531. Bonnie and Clyde 题目连接: http://acm.sgu.ru/problem.php?contest=0&problem=531 Description Bonnie and Clyde are into robbing banks. This time their target is a town called Castle Rock. There are n banks located along Castle Rock's main street; each…
题目链接:http://acm.sgu.ru/status.php 题意:将n个有区别的球放到m个无区别的盒子里,盒子不能为空.不同的方案数. 思路:设f[i][j]表示将前i个球放到j个盒子里,那么f[i][j]=f[i-1][j]*j+f[i-1][j-1].根据这个建立矩阵. int n,m; struct Matrix { i64 a[15][15]; void init(int x) { clr(a,0); if(x) { int i; FOR1(i,m) a[i][i]=1; } }…
原题地址:http://acm.sgu.ru/problem.php?contest=0&problem=187 太开心啦!!!!这道题从2013年开始困扰我!!今天晚上第四次下定决心把它写一写,之前写了三次(事实上是五个程序)都没有把它搞定,甚至无从查错……没想到今晚居然1A啦太激动了喵哈哈-我先去激动一会 题目大意:给定一个数字n,构建一个从1 ~ n的初始数列,给出 m 个操作,每个操作对应两个数字 x 和 y 每次将当前序列中的第 x 位到第 y 位翻转,输出最终的序列 数据范围和限制:…
题目   SGU 171 相当好的贪心的题目!!!!! 题目意思就是说有K个赛区招收参赛队员,每个地区招收N[i]个,然后每个地区都有一个Q值,而N[i]的和就是N,表示总有N个参赛队员,每个队员都有他自己的P值,和他的权值W,只有当一个队员的P大于某一个地区的Q值时,权值W才能被记录在内,问怎样让着N个参赛队员选择地区才能让权值和最大. 贪心的思路就是按照权值W贪心 1.先按W的降序排序,优先考虑权值交大的. 2.歪了不影响后面的参赛队员,W较大的而且满足P>Q的,让其参加p>Q时Q最大的那…
题意:给出一个n行的棋盘,每行的长度任意,问在该棋盘中放k个车(不能同行或者同列)有多少种放法(n <= 250, 每行的长度 <= 250). 题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=269 ——>>开始的时候冒险用dfs去做,结果TLE了...改dp,大数长度开小点WA,开大点MLE……最后改用滚动数组开1000位的大数长度才A掉…… 设d[i][j]表示前i行放j个车的方法数, 则状态转移方程为:d[i…
题意:判断一个字符串是不是有效的邮件地址. 题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=274 ——>>照着题目做. 注意:1.输入有空格. 2.测试的时候不要直接复制测试数据,手敲吧-(vjudge上的复制会多一个空格,sgu上的复制直接闪过去……) #include <cstdio> #include <iostream> #include <cstring> #include <…
codeforce447 D - DZY Loves Modification 题意:有一个n*m的矩阵,每次可以选择一行或者一列,可以得到这行或这列的所有元素sum的积分,然后使这一列/行的每一个元素都减少p,接着再选择一行或一列,共操作k次,n,m<=1000,k<=1000000求最多能得到多少积分 思路:每次选择sum最大的行或者列,但是时间复杂度太大,过不去~若选择一行,则每个列的sum一定减少p,同理:若选择的行数和列数确定下来了,选择i行,k-i列,那么行和列之间谁选选择就没有影…