zoj 4122 Triangle City 2019山东省赛J题】的更多相关文章

题目链接 题意: 给出一个无向图,类似三角形的样子,然后给出边的权值,问找一条从第一个点到最后一个点的路径,要求每一条边只能走一次,并且权值和最大,点可以重复走. 思路: 首先观察这个图可以发现,所有的点的度数都是偶数.然后由每条边只能走一次知道,这个是和欧拉路相关的,是欧拉道路,不是欧拉回路,因为题目要求是从一个点到另一个点.但是图的所有点的度数都是偶数,那么想办法让图中的第一个点和最后一个点度数变为奇数,其他点的度数都是偶数.这个就比较巧妙,去掉从第一个点到最后一个点的一条无重复点的路径,除…
Description In ACM/ICPC on-site contests ,3 students share 1 computer,so you can print your source code any time. Here you need to write a contest print server to handle all the requests. Input In the first line there is an integer T(T<=10),which ind…
2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从第一个开始,以a[i]为结尾的不同递增序列的个数,要加上1,算上本身.正反各跑一遍,答案加一下(f1[i]-1)*(f2[i]-1)优化就是,比a[i]小的,只有a[i]-1个 #include<iostream> #include<cstdio> #include<queue&…
目录 题目 解析 AC_Code @ 题目 第一题题意是一共有{0,1,2,3}四种数字供选择,问有多少个长度为n的序列满足所有m个条件,每个条件是说区间[L,R]内必须有恰好x个不同的数字. 第二题题意是10个数字供选择,问有多少个长度为n的序列满足所有m个条件,每个条件是说区间[L,R]数字的乘积必须是9的倍数. 解析 hdu6578 \(dp[t][i][j][k]\)表示填完前\(t\)个位置,{\(0,1,2,3\)}中出现的数字最后一次出现的位置排序后为\(t,i,j,k(t\gt…
HEX SDUT 3896 17年山东省赛D题这个题是从矩形的左下角走到右上角的方案数的变形题,看来我对以前做过的题理解还不是太深,或者是忘了.对于这种题目,直接分析它的性质就完事了.从(1,1)走到(a,b)向左走的步数和向右走的步数是确定的,向下是代表向左向右各走了一步.细节:利用对称性,线性推逆元 对于每一种情况,向左下.向右下.向下的次数都是确定的,然后,对于每一种方向内部顺序不用考虑,然后排列组合就完事了对称性上又出错了,哎,自己也没找个小数据试一下,就...(a,b)和(a,a-b+…
luogu 1327 数列排序 题意 给定一个数列\(\{an\}\),这个数列满足\(ai≠aj(i≠j)\),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 思路 找循环节.答案即为 (循环节的长度\(-1\)) 对所有循环节求和. 如果只能交换相邻两个,那么就是求逆序对个数.因为交换相邻两个数字的效果是使逆序对个数\(-1\). Code #include <bits/stdc++.h> #define maxn 100010 using name…
第一年参加现场赛,比赛的时候就A了这一道,基本全场都A的签到题竟然A不出来,结果题目重现的时候1A,好受打击 ORZ..... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4800 题目大意:给定C(3,N)支队伍之间对战的获胜概率,再给定一个序列存放队伍编号,每次获胜之后可以选择和当前战胜的对手换队伍.问按给定序列依次挑战全部胜利的最大概率. 解题思路:状压DP dp[i][j]表示使用队伍i从编号j开始挑战全胜的概率,ai[i]表示i位置的队…
题目传送门 /* 题意:每支队伍需求打印机打印n张纸,当打印纸数累计到s时,打印机崩溃,打印出当前打印的纸数,s更新为(s*x+y)%mod 累计数清空为0,重新累计 模拟简单题:关键看懂题意 注意:打印机一张一张纸打印,当某支队伍打印完正好累计到s时,要输出0,坑点! */ #include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <cst…
比赛结束了几天...这篇博客其实比完就想写了...但是想等补完可做题顺便po上题解... 5.10晚的动车到了济南,没带外套有点凉.酒店还不错. 5.11早上去报道,济南大学好大啊...感觉走了一个世纪才到了他们的教学楼...跟我们学校比起来... 中午吃的他们的八食堂,对于我来说并没有吃饱,食堂看着很好但是给队员的窗口只有一个.其他的都没办法吃. 下午热身赛AB水题.C题刚开始觉得是二分,中途发现二分是错的然后改了几发过了之后就走了.出来之后才看的D,才知道为啥要放弃D了233 晚上吃饭吃得有…
题目链接 CSLnb! 题意是求出给定集合中有多少个合法子集,合法子集的定义为,子集和>=总和-子集和$\& \&$子集和-(子集的子集和)<=总和-子集和. 其实就是很简单的dp,先将集合从大到小排序,dp[i][j]表示以a[i]为子集的最小值时,子集和为j的方案数.因为排序后保证遍历到的a[i]一定为当前最小值,所以暴力统计转移即可. 最后在统计一遍合法答案. #include<bits/stdc++.h> using namespace std; typed…
按照计划读书,第i分钟要读第ai本书,起初桌子是空的,所有书都在书架上,如果要读的书不在桌子上,就需要把书从书架上拿到桌子上,如果桌子已经满了,则需要先把桌子上最早读的一本书放回书架,求当桌子容量为k(k从1到n)时共需要从书架上取多少次书. 树状数组维护区间,前缀和计算情况总数~ #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&-x ; int pre[maxn];//记录该书上一次出现的位置 int…
有n个开关,有起始状态和终状态,问如果每次必须选m个开关进行改变状态,一共进行k次,那么有多少种方式可以从起始状态到终状态~ #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ; ll dp[maxn][maxn]; ll c[maxn][maxn];//组合数 char s1[maxn]; char s2[maxn]; int main () { ;i<maxn;i++) c[i][]=; ;i&l…
Time Limit: 5000MS Memory limit: 65536K 题目描述 Haveyou ever played a popular game named "Fruit Ninja"? Fruit Ninja (known as Fruit Ninja HD on the iPad and Fruit Ninja THD for NvidiaTegra 2 based Android devices) is a video game developed by Halfb…
题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率.son[x]为x节点的儿子节点个数. 又又又又没做出来,心态崩了. 下来看了官方题解后发觉自己大体思路是没错的,但是细节太弱了Orz. 大体思路:设dp[x]为以x为根节点,求到达最深深度的概率.先跑一遍dfs,求出每个点的子节点数,每个点的深度以及最深深度. 我们可以求得从x点一次不能到达最深深度的概率为$cnt =1-(\tfrac{\sum_{y\epsilon x } dp[y]}{son…
A.Calandar 题意:一年12个月,一个月30天,5天一周,已知某天的年月日星期数,求所给年月日的星期数是多少 思路:直接进行计算,其实每个月每年都是等长度的就使得计算的时候忽略年月,可以直接进行日期的比较,因为每个月都有长度相等的六周 代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 string day[6]={"Friday","Monday","Tuesday"…
题目连接 : https://nanti.jisuanke.com/t/A1256 Life is a journey, and the road we travel has twists and turns, which sometimes lead us to unexpected places and unexpected people. Now our journey of Dalian ends. To be carefully considered are the following…
数格子算面积 Time Limit: 1000MS Memory limit: 262144K 题目描述 给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积. 输入  第一行两个正整数h 和 w (2 ≤ h, w ≤ 100),h是多边形所在平面的高,w是多边形所在平面的宽,接下来h行,每行w个字符,描述了整个平面的每个单元(每个单元是一个单位面积),字符只会是’\’,’/’和’.’其中之一,’\’,’/’表示多边形的边,’.’表示空白单元. 输出  输出一个数,输入代表的平面内…
题目大意: 每个人有五门课成绩,初始给定一部分学生的成绩,然后每次询问给出一个学生的成绩,希望知道在给定的一堆学生的成绩比这个学生每门都低或者相等的人数 因为强行要求在线查询,所以题目要求,每次当前给定的学生成绩都异或上一次的答案 先将学生按每一门成绩都排一次序 这里将学生分块成sqrt(n)的块数,然后在当前块中用bitset容器来记录含有学生的状态 这里可以记录状态的前缀和,因为比后面成绩好的,必然比前面的学生的成绩也好 查询的时候只要查到正好比他高的学生属于哪一块,这样只要访问sqrt(n…
思路:这题对于其他能退出所有值的情况比较好像,唯一不能确定的是XXOXXOXXOXX这个形式的序列,其中XX表示未知,O表示已知. 我们令num[1]=0,那么num[4]=sum[3]-sum[2]+num[1]; 可以递推,num[i]=sum[i-1]-sum[i-2]+num[i-3],(i%3==1). 这样求出来的每个num值就是相对于num[1]的值. 假使某个num[i]<0,表示第i个数相对于num[1]为负数,题目要求每个数都大于等于0,所以num[1]>=(-num[i]…
http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=3230 Description Several days ago, a beast caught a beautiful princess and the princess was put in prison. To rescue the princess, a prince who wanted to marry  the princess set out immediately. Yet,…
题意: 剪一段丝带,对于剪完后的每一段丝带长度必须是a,b,c 输入丝带的长度  n 和  a  b  c 输出一个整数,代表最多能剪成多少段 样例输入 5 5 3 2 7 5 5 2 样例输出 2 2 解析: 完全背包啦..就是让求在背包正好装满的情况下 所获取的价值(分成的段数)最大 在要装当前容量 j 时,判断一下j-A [i] 这个容量是否存在...所以要把背包容量为0时初始化为1 因为0肯定可以装出来...然后用完全背包的思想一层层 向上推...最后要减去0时的那个1 附01背包的变形…
问题 J: 天平 时间限制: 1 Sec  内存限制: 128 MB提交: 36  解决: 9[提交][状态][讨论版][命题人:admin] 题目描述 天平的右端放着一件重量为w的物品.现在有n个重量已知的砝码,只允许在左端放砝码的前提下,能否通过砝码判断出物品的重量. (注:这里假设当天平的两端重量不同时天平就会向重的一端倾斜到底!) 输入 输入包含两行,第一行包含两个整数w(1<=w<=1000)和n(1<=n<=1000),w表示物品的重量,n表示砝码的数量. 第二行包含n…
题意: 统计每个数的因子的对数,如果因子能被某个平方数整除,则不统计在内,每对因子有序 解析: 我们对某个数n进行质因子分解,如果某个质因子的指数大于2则 f(n) = 0, 例 N = X3 * M = R * T 因为要分成两部分 所以无论怎样分 R 或 T 总有一部分X的指数大于等于2 如果指数为2 则只能是R 和 T 两部分每个部分有一个X,所以只有一种情况,贡献为1 如果指数为1 则这个X可以在R 和 T的任意一部分 ,所以有两种情况 #include <iostream> #inc…
ZOJ 2819 Average Score Time Limit: 2 Sec  Memory Limit: 60 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5373 Description Bob is a freshman in Marjar University. He is clever and diligent. However, he is not good at math, especia…
题目链接 http://poj.openjudge.cn/practice/C17J/ orz 原来是一道无脑枚举题目 只是很卡常数而已 复杂度算错也是很醉orz 当时怎么没想着优化常数呢 题解:枚举x,p,y,就可以了 当然,普通暴力枚举肯定会超时,复杂度是M^1.5 (一开始算的是M^1.5logM,实际上算错了,因为M + M/4 + M/9 + .... 不超过2*M) 我们考虑预处理一些部分,其实就是预处理出每个数i的小于sqrt(i)的所有约数 这个复杂度实际上是MlogM 之后我们…
题意:给你50000个五维点(a1,a2,a3,a4,a5),50000个询问(q1,q2,q3,q4,q5),问已知点里有多少个点(x1,x2,x3,x4,x5)满足(xi<=qi,i=1,2,3,4,5),强制在线. 一看题的一个直接思路是五维树状数组,算了一下复杂度还不如暴力判,遂不会做.赛后问了一下大神们,知道是分块+bitset,觉得处理挺巧妙的,就留一份题解在这里. 具体的做法是这样子的.定义一个bitset<maxn> bs[i][k],表示第i维前k块所对应的点的bits…
题目链接  Problem J 这道题思路还是很直观的,但是有两个难点: 1.题目中说$1<=NM<=10^{6}$,但没具体说明$N$和$M$的值,也就是可能出现: $N = 1, M = 1000000$ 这样的数据. 2.对每个查询的分类讨论. #include <bits/stdc++.h> using namespace std; #define REP(i,n) for(int i(0); i < (n); ++i) #define rep(i,a,b) for(…
3799567 2014-10-14 10:13:59                                                                     Accepted                                                             3822 C++ 1870 71760 njczy2010 3799566 2014-10-14 10:13:25                            …
题意: 给定一个2 * n的矩阵, 和 2 * n 个数, 问能不能通过重排列, 使得任意相邻两数不能被3整除 分析: 这题一直卡到最后, 赛后经对面大佬提醒后, 发现统计所有数模三的结果(0,1,2三种), 然后考虑怎么去“构造”符合这样的矩阵就行. 本地只过了用例和一些小数据, 等一个重现赛. #include <bits/stdc++.h> using namespace std; + ; int n; ]; int _0,_1,_2; bool judge() { if(_0 >…
第六集,想不到你这个浓眉大眼的都叛变革命了 题意: 给你两个只包含01的字符串S和T,问你在允许一次错误的情况下,T是否能成为S的子串 思路: 这个问题的解法挺多,我是用fft匹配的,也比较简单,针对0和1匹配两次,第一次针对0就是把S串和T串中等于0的位置都标记成1,然后reverse一个串后进行fft,如果这两个位置都是0,就会出现1*1=1的情况,代表有一个位置匹配上了,0这样做一次,1这样做一次,他们的和就是匹配成功的次数,所以允许一次错误就是判断和是否大于len-1. 还有一个做法是指…