#构造Map并对其排序 attr_tul = ['a','b','c','d','e','f'] one_tul = [,,,,,] one_dic = {} for i in range(len(attr_tul)): one_dic[attr_tul[i]] = one_tul[i] order_dic = ], reverse=True)…
题意: 思路:考虑构造最小的单位矩形然后平铺 单位矩形中每种矩形的数量可以根据比例算出来,为c[i]/d,其中d是所有c[i]的gcd,如果能构造成功答案即为d的因子个数 考虑如果要将两种矩形放在同一行那他们的w一定相等,且对于每一行h全部出现过并且比例相当 具体实现的时候用map套vector,发现map有好多写法 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned int u…
/* CF傻逼构造题 某人要经过n回合游戏,初始分值是2,等级为1. 每次有两种操作 1.无条件,分值加上自己的等级数. 2.当目前的数字是完全平方数并且该数字开方以后是等级数加1的整数倍,那么可以将分值开方,等价加一. 问:每个等级需要执行多少次第一种操作. 思路: 很显然每次要加到的那个数可以是相邻两个数的平方的积..但是考虑到最后这样刚好会超long long... 但是我们最终也不要求求这个数是多少,我们需要知道它除以i是多少... */ #include<bits/stdc++.h>…
错了一个小地方调了一晚上.... 题目大意: 给出最多2E+5种不同的矩形,每种有它的长h和宽v还有数量d,现在你要构造大矩形,使得在上面沿着平行于长或宽的边划刀,切出来的矩形正好是给出的所有矩形.问你能构造几种不同的大矩形.其中给出的矩形不能旋转.大矩形亦不能旋转,这意味着长为A,宽为B的大矩形和长为B,宽为A的大矩形不同. 题目分析: 首先我们令矩形的总数目为tot.那么横着切p刀,竖着且q刀,则(p+1)(q+1)=tot.为了简便,下文的p表示横着切了p-1刀,q表示竖着切了q-1刀.…
题目链接 首先想到同样例1的构造方式.即不得不填负的格子填\(-h*w\),其余填\(1\).直接这样能过二三十个点. 只这样不对.比如1 4 1 3,会输出无解(会填[1 1 -3 1]).怎么改呢.对于一个点,它可以覆盖多个\(h*w\)的子矩形,只要对每个子矩形满足负权和,它们的和可以尽量大. 将原方案中的所有正数扩大\(d\)倍,不得不填负的格子只需恰好大于一个子矩形的和.这样多个格子加起来的和就大了. 如1 4 1 3,可以填[1000 1000 -2001 1000]. //20ms…
大意: 构造一个[1,2,...n]的排列, 使得前缀积模n为[0,1,...,n-1]的排列 这种构造都好巧妙啊, 大概翻一下官方题解好了 对于所有>=6的合数$n$, 有$(n-1)! \equiv 0 \space (mod \space n)$, 一定不成立 对于素数可以构造$[1,\frac{2}{1},\frac{3}{2},\frac{4}{3},...,\frac{n-1}{n-2},n]$, 或者构造$[1,g,g^{-2},g^3,g^{-4},...,n]$, $g$为$n…
第一种方法:static块初始化 public class Demo{ private static final Map<String, String> myMap; static { myMap = new HashMap<String, String>(); myMap.put("a", "b"); myMap.put("c", "d"); } } 第二种方法:双括号初始化 (匿名内部类) Hash…
题目大意:在数组中找出一些数,使它们的和能被n整除 这题标签是数学,那我就标题就写数论好了... 显然如果数组中有n的倍数直接取就行. 那假设数组中没有n的倍数,把数组中的数求前缀和后全部%n,会得到一堆1~n-1的数(注意没有0,有0直接就可以取这个前缀了),那根据抽屉原理一定有两个相同的数,设这两个相同的数所在的位置为l和r,那么下标在[l+1,r]的这些数的和一定是n的倍数 记得开LL,我还RE两发QAQ #include<iostream> #include<cstdlib>…
$n \leq 200000$种互不相同的矩形,给长宽和数量,都$\leq 1e12$,问有多少种大矩形只沿平行长和宽切正好切成这些矩形. 首先可以发现在一个合法情况下,有些矩形的位置是可以乱挪的,比如这样: 变成这样: 好我知道不一样大但您一定能懂我QAQ 就是说每个方案都一定能移动成一个单位矩阵复制若干次.这个单位矩阵中每一种块的数量就是$\frac{cnt_i}{gg}$,$gg=gcd(cnt_i)$. 然后就来判断这个单位矩阵能否构造出来.如果能构造出来,那“比例一定要好”.啥意思,首…
137. Funny Strings time limit per test: 0.25 sec. memory limit per test: 4096 KB Let's consider a string of non-negative integers, containing N elements. Suppose these elements are S1 S2 .. SN, in the order in which they are placed inside the string.…