题目: 分析: 先手推一个显然的式子: a*x+b*y+c*z……=( x+y+z+…… )*n 将右边移项到左边,可以得到:a*(x-n)+b*(y-n)+c*(z-n)……=0 现在转化成求合法且最小的x,y,z。 假设现在在0号节点,买一杯鸡尾酒就相当于跳一截,问题转换成了最少跳多少次能够回到0号节点。 把跳一次的贡献
直接上题: 与括号有关的题基本都要用到栈模拟,具体的原理就不再阐述了... #include<bits/stdc++.h>using namespace std;string st;struct gg{ char ch; //表示所带的括号类型 int id; //表示所带的坐标. }b;stack<gg>s;int ans;int main(){ freopen("1.in","r",stdin);
高斯消元求解异或方程组. #include <cstdio> #include <bitset> #define N 2004 #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout) using namespace std; int n,m,ans; char str[N]; bitset<N&
转载,原始出处未知。 这个对OJ上做题很有用。OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。 C语言 方法比较简单。使用函数freopen(): freopen("data.in"
A j打成i然后100->0. 我们先考虑把第一个操作并到第二个操作里面。 显然把某二进制位取反等于异或上\(2^i\)。 去个重应该可以降一点复杂度。最多38个元素。 我们现在把要做的变成了求使用一个数组中的元素\(\{a_1,\cdots,a_n\}\)相互异或成\(p=s\oplus t\)的最短步数。 我们可
以某个题为例 Description 给出一个序列,包含n个数,有正数、0及负数。 现取连续的一段数,问它们和的绝对值的最小、最大值分别为多少? Input 第一行一个数n,表示序列长度。(1<=n<=1e5) 第二行包含n个整数,a[1],a[2]…a[n]。(-1e7<=a[i]<=1e7) Output 一行包含两个数 最小值、最大值。
https://www.lydsy.com/JudgeOnline/problem.php?id=1925 对于$a_1<a_2$的排列可以与$a_2<a_1$的排列一一对应 所以只计算第一种情况(偶数位为山峰),最后乘2即可 $f_i$表示$n=i$的方案数 $f_i=\sum_{j=2 且 2|j}^{n}{f_{j-1}*f_{i-j}*\binom{i-1}{j-1}}$ 乘法原理,很好理解 #include<
T1 [前缀和,差分] 求二维前缀和然后大概差分一下就好了? 【code】 #include<bits/stdc++.h>using namespace std;#define ll long long #define File "wireless"inline void file(){ freopen(File".in","r",stdin); freopen(File".out","
2334. 【NOIP普及组T2】战斗 (File IO): input:fight.in output:fight.out 时间限制: 1000 ms 空间限制: 524288 KB 开始贴图:。。。 题目: 输入: 输出: 样例: 范围: 思路: 这道题很猥琐,很容易想到贪心,很容易贪错。我们只要排个序,然后从大的往小的模拟牵线。是个人就能想出
#include<bits/stdc++.h> using namespace std; typedef long long LL; void gcd(LL a, LL b, LL &d, LL &x, LL &y) { if(!b) { d = a; x = 1; y = 0; } else { gcd(b, a % b, d, y, x); y -
注意,是自动AC机,并不是AC自动机!(没事做了一个很好玩的东西) 好孩子请自觉不要阅读本文章; 亲测对于lemon,cena好使; #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char s[1000];int main(){ int a,b,id,n,m; freopen("A.in",&
原文链接:http://www.cnblogs.com/liuameng/p/3707415.html 故事的起因是这样的 跟Lz争着争着就觉得,“非要跟他战个痛快!”于是就写了本文。。。 好吧,是因为我论文编不下去才写的 先看代码 # include <iostream> using namespace std; int main(void) {
没玩过数字华容道,网上找的,判断两张图能不能相等,把1234行按顺序插到前一行结尾,计算除0外的逆序对数,判断两张图0所在的行差和逆序数的奇偶性,相同就能到,而且其他博客都说80步,4*4的图就可到 #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #i
特此声明:题目是图片 在这里,我向大家表示歉意,我只有图片版的题目,但是它又不影响我们好好学习的快乐心情。算了,讲正事。这道题其实是一道类似桶排的题目,这题有多种做法,在这里我给大家讲其中两种,第一个:50%,三重循环,循环I,j,k,判断a[i]+a[j]是否为a[k],然后a[k]就要被当算过的,不
1 测试一[20190730] 2 第一题: 3 题目描述 4 sum.cpp sum.exe sum.in sum.out 5 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9)。 6 注意 7 1. pascal使用integer会爆掉哦! 8 2. 有负数哦! 9 3. c/c++的main函数必须是int类型,而且最后要return 0。10 输入格式11 两个整数以
综合测试 考试的前一天老师说今天的题比NOI稍微简单一些。 第一题,给你n,要你求。定义为其所有约数的异或和。. 这题还是比较简单的,直接数论分块,讨论那些为奇数就行了。 求前缀和的时候考虑相邻两个数(偶奇)的异或和为1.然后讨论一下情况就可
P2089 烤鸡 题目链接:https://www.luogu.org/problem/P2089 思路: 很简单,就是不停for循环; 代码: #include <bits/stdc++.h> using namespace std; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout);
P1426 小鱼会有危险吗 题目链接:https://www.luogu.org/problem/P1426 代码: #include <bits/stdc++.h> using namespace std; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); double s,x,a=7
一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了。 题目链接 https://www.luogu.org/problemnew/show/P1049 解题思路 一道裸的01背包,注意价值和重量是一个东西,且最后输出剩余的体积。 随随便便二维就AC了,懒得写一维。 AC代码 1 #include<iostream> 2 #i
可以推出第z个点的联合权值为与这个点相连的点的权值和的平方减去这些点的权值的平方和(网上有);最大联合权值格外设变量保存。由于N过大,所以用vector数组。 #include<bits/stdc++.h> using namespace std; long long l,m,n; vector <long long> ha[200010]; long long kao[
freopen #include<iostream> using namespace std; int main(){ freopen("input.txt","r",stdin);//打开input文件,表明为读入,所有scanf的内容都是从这里读的 freopen("out.txt","w",stdout);//打开out文件,表明为写入,所有printf之类的内容都写在里面了 char str[2
这一次是交流测试?边交流边测试(滑稽 极值问题 乍一看这是一道数学题,因为1e9的数据让我暴力的心退却。 数学又不好,不会化简式子嘞,咋办? 不怕,咱会打表找规律。(考场上真的是打表找出了规律,打表打法好!!) 这里就不带着大家一起来打表了,我们是来正正经经的推式子滴。 So,这道题就是求斐波那
Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description Input Output Sample Input 5 1 4 5 2 3 3 4 2 1 5 Sample Output 3 Data Constraint Hint Source / Author: 学军中学 road 题解: 显然最长下降子序列。 O(n log n)算法:
#include <stdio.h> #include <iostream> using namespace std; int main() { int a,b; freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取 freopen("out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文
问题描述 有一个可重集合,一开始只有一个元素 0。 你可以进行若干轮操作,每轮你需要对集合中每个元素 x 执行以下三种操作之一: 将 x 变为 x+1; 选择两个非负整数 y,z 满足 y+z=x ,将 x 变为这两个元素; 什么都不做。 给出一个最终的集合,求至少经过几轮才能得到这个集合。 输入