- 博客(26)
- 收藏
- 关注
原创 P1207 吃糖果
除了个位以外前面爱怎么分怎么分,确切的说是分成一个很小的数+一大堆(这一大堆自己全部吃掉),这样把小的这一坨分成没有1,这样对方应该会赢。先申明,如果对方剩下一堆k个给自己的时候自己是必输,那么对方分2个k给自己就必输(想一想,为什么) 按照这个思路考虑k:对于2,只能分成1 1,认了吧~ 同理3也只能分成1 2,认了吧~比如4,5,6给自己之后,分成2 2,2 3,3 3自己就赢了。7分成1和6显然嘛 如果是2和5,对方吃掉2再把5分成2 3,认了吧~ 如果是3和4,他就吃掉3,把4分成2 2……
2023-04-26 20:47:23 113
原创 【CQOI2008】传感器网络
然后由小到大枚举i,由小到大枚举i的父亲,这时0到i的父亲都已经确定了,用网络流判断此时是否存在一个可行的方案。:由小到大枚举i的“父亲”,再枚举i+1的“父亲”,再枚举i+2的“父亲”事实上,枚举了i的“父亲”之后的递归过程,都是在验证此时是否存在可行解。当枚举完所有i时,就得到了一个完整的方案,且这个方案的字典序时最小的。既然是判断是否有可行解,为什么不用网络流来判断呢。先二分答案+网络流验证,求出最小负载;
2023-04-26 17:58:53 165
原创 【CQOI2006】移动棋子
第一行包含两个整数n, m,表示棋子的个数(它也是棋盘的边长)和障碍的个数。以下n行,每行两个整数(x, y),表示第i个棋子的坐标(1
2023-04-26 17:52:12 374
原创 P1093 转账
double类型的及鞥度为15到16位小数。表示输入的a总共x位,其中小数位占y位。float类型的精度为6到7位小数。表示输入的a小数位占y位。100/3的值为33。
2023-04-26 17:34:48 107
原创 P1064 美元
设汇率为C[i],A[i]表示第i天美元最大值,B[i]表示马克,则第i天的美元等于max{第i-1天的美元,第i-1天的马克全部换成美元}我们可以在初值的时候把A[1]和B[1]都乘100,最后再分别/100和%100。(也是真···ex)Day 1 ... changing 100.0000 美元= 400.0000 马克。Day 3 ... changing 133.3333 美元= 666.6666 马克。同理B[i]=max{B[i-1],A[i-1]*(C[i]/100)}看样子就这样可以了。
2023-04-26 17:30:57 65
原创 【NKOJ 打饭 1045】
题目描述:样例: 思路:设一个f【i】【j】,f【i】【j】表示前i个人在1号窗口打饭用j的时间,所有人吃完后的总时间则f【i】【j】应是以下情况中的最小者:1.第i人在1号窗打饭,第i-1人在一号窗打饭后前i-1个人吃完饭的总时间;该人在1号窗打完后吃完的时间;2.第i人在2号窗打饭,第i-1人在二号窗打饭后前i-1个人吃完饭后的总时间;该人在2号窗打完饭后吃完的时间;前i个人在1号窗打翻用的时间。至于代码嘛,自己思考!
2023-04-26 17:24:18 51
原创 NKOJ 1015 子集
举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的:{3} 和 {1,2}这是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分法的子集合各数字和是相等的。程序不能预存结果直接输出。{1,6,7} 和 {2,3,4,5}{2,5,7} 和 {1,3,4,6}{3,4,7} 和 {1,2,5,6}{1,2,4,7} 和 {3,5,6}
2023-04-26 17:09:52 62
原创 快速排序(QuickSort)
若 ⑴f(x1)=0,则确定x1为f(x)的根;⑵f(x1)*f(x2)>0,则确定根x不在区间[x1,x2]内,设定[x2,x2+1]为下一个搜索区间 ⑶f(x1)*f(x2)<0,则确定根x在区间[x1,x2]内。采用二分法,将区间[x1,x2]分成左右两个子区间:左子区间[x1,x]和右子区间[x,x2](其中x=(x1+x2)/2): 如果f(x1)*f(x)≤0,则确定根在左区间[x1,x]内,将x设为该区间的右指针(x2=x),继续对左区间进行对分;
2023-04-25 20:36:18 99
原创 归并排序(二分排序)
归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素(认为直接有序)或者2个元素(1次比较和交换),然后把各个有序的段序列合并成一个有 序的长序列,不断合并直到原序列全部排好序。那么,在短的有序序列合并的过程中,稳定是否受到破坏?二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。
2023-04-20 20:22:30 328
原创 NKOJ 2332【语法基础】资料页数
一本书的正文包含许多行,某些行可能包含一些脚注标记,一个脚注可能包含一行或多行,并且必须和对应的脚注标记印刷在同一页。接下来的F行每行包含两个用空格隔开的整数X和Y,表示正文的第X行包含一个脚注标记,该脚注标记对应的脚注需要Y行,脚注将按它们在文件中被引用的先后排序。输入数据的第一行包含两个整数:文件的总行数N(2≤N≤1000)和该书每一页所能包含的最多行数K(2≤K≤1000),两数中间用空格隔开。输入数据的第二行包含:一个整数F(1≤F≤100),表示该书所包含的脚注总数。
2023-04-12 19:44:36 96
原创 C++排序
冒泡排序(英语:Bubble Sort)又称为泡式排序,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。选择排序( Selection sort)是一种简单直观的排序算法。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
2023-04-11 20:50:28 52
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人