freopen

Spoj 10628. Count on a tree。

China☆狼群 提交于 2020-01-21 08:48:58
第一题没做出来不应该; 第二题不难想,就是写起来很麻烦; 第三题因为学了挺久的splay就直接写的splay,没太在意常数问题,一般情况下,第k值问题主席树是比splay稍快的; 盘子序列 【题目描述】 有 n 个盘子。盘子被生产出来后,被按照某种顺序摞在一起。初始盘堆中如果一 个盘子比所有它上面的盘子都大,那么它是安全的,否则它是危险的。称初始盘堆为 A,另外有一个开始为空的盘堆 B。为了掩盖失误,生产商会对盘子序列做一些“处 理”,每次进行以下操作中的一个:(1)将 A 最上面的盘子放到 B 最上面;(2)将 B 最上 面的盘子给你。在得到所有n个盘子之后,你需要判断初始盘堆里是否有危险的盘子。 【输入格式】 输入文件包含多组数据(不超过 10 组) 每组数据的第一行为一个整数 n 接下来 n 个整数,第 i 个整数表示你收到的第 i 个盘子的大小 【输出格式】 对于每组数据,如果存在危险的盘子,输出”J”,否则输出”Y” 【样例输入】 3 2 1 3 3 3 1 2 【样例输出】 Y J 【数据范围】 20%的数据保证 n<=8 80%的数据保证 n<=1,000 100%的数据保证 1<=n<=100,000,0<盘子大小<1,000,000,000 且互不相等 思路 倒序栈模拟; 代码实现 1 #include<cstdio> 2 #include<cstring> 3

Codeforces Round #243

冷暖自知 提交于 2020-01-20 08:56:06
CF 243 DIV1 & DIV2 DIV2的A和B都太水,直接暴力搞就可以的。 DIV2A 1 /* *********************************************** 2 Author :kuangbin 3 Created Time :2014/4/30 19:42:51 4 File Name :E:\2014ACM\Codeforces\CF243\DIV2_A.cpp 5 ************************************************ */ 6 7 #include <stdio.h> 8 #include <string.h> 9 #include <iostream> 10 #include <algorithm> 11 #include <vector> 12 #include <queue> 13 #include <set> 14 #include <map> 15 #include <string> 16 #include <math.h> 17 #include <stdlib.h> 18 #include <time.h> 19 using namespace std; 20 21 int a[110]; 22 int main() 23 { 24 //freopen("in.txt","r

3.6字符串

試著忘記壹切 提交于 2020-01-19 02:08:58
5901: 【字符串】回文串 三种方法,(1)纯暴力(2)算法笔记上面的方法(3)DP 题目描述:读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 (1)暴力 设置两个变量,左边界变量l,右边界变量r;从第一个字符和最后一个字符开始枚举对比,判断字符是否相同,额外需要注意的一点是字符串长度为奇数时枚举出口是l==r,偶数时判断l>r即可 1 #include<iostream> 2 #include<cstring> 3 #include<math.h> 4 #include<stdlib.h> 5 #include<cstring> 6 #include<cstdio> 7 #include<utility> 8 #include<algorithm> 9 #include<map> 10 using namespace std; 11 typedef long long ll; 12 13 const int maxn=1005; 14 int dp[maxn][maxn]; 15 int main( ) 16 { 17 ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); 18 //freopen("a.txt","r",stdin); 19 /

noip2007提高组题解

故事扮演 提交于 2020-01-17 21:48:16
认真写博客是不是就不用面对期末成绩了 统计数字 https://www.luogu.com.cn/problem/P1097 一眼就想到桶排,但是数据范围太大,数组会爆。 就拍了个序,直接记录输出就完了。 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 ll a[200004]; 5 int main() 6 { 7 // freopen("count.in","r",stdin); 8 // freopen("count.out","w",stdout); 9 int n; 10 scanf("%d",&n); 11 for(int i=1;i<=n;i++) 12 cin>>a[i]; 13 sort(a+1,a+n+1); 14 int t=a[1],num=1; 15 cout<<t<<" "; 16 for(int i=2;i<=n;i++) 17 { 18 if(a[i]==t) num++; 19 else 20 { 21 cout<<num<<endl; 22 num=1; 23 t=a[i]; 24 cout<<t<<" "; 25 } 26 } 27 cout<<num; 28 return 0; 29 } 字符串的展开 https://www.luogu.com

Educational Codeforces Round 80 (Rated for Div. 2) ABCDE 题解

你说的曾经没有我的故事 提交于 2020-01-16 00:41:47
Educational Codeforces Round 80 (Rated for Div. 2) A. Deadline 如果n>=d 直接yes 否则对于公式 \(x+ceil(d/(x+1))<=n\) 两边同时乘以x+1 会得到一个关于x的一元二次方程, 通过求根公式解出较小的那一个根x1, 然后在 \(x1+-3\) 的范围内找到 \(x+ceil(d/(x+1))\) 的最小值与n比较即可。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <stack> #include <map> #include <set> #include <vector> #include <iomanip> #define ALL(x) (x).begin(), (x).end() #define sz(a) int(a.size()) #define rep(i,x,n) for(int i=x;i<n;i++) #define repd(i,x,n) for(int i=x;i<=n;i++) #define pii pair<int,int> #define pll pair<long

freopen - C/C++文件输入输出利器

不想你离开。 提交于 2020-01-13 20:27:35
freopen以前经常使用,比较方便,可以当作模板,在中间替换为自己的代码即可使用。 #include <stdio.h> // 实际使用中发现freopen也包含在iostream.h中,C++代码#include <iostream.h>即可。 int main() { freopen("sample.in", "r", stdin); freopen("sample.out", "w", stdout); /* 同控制台输入输出 */ fclose(stdin); fclose(stdout); return 0; } -----转自:http://www.slyar.com/blog/c-freopen-stdin-stdout.html ------------- 当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC 等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对 于有大量输入数据的题目,输入数据需要花费大量时间。 使用freopen函数可以解决测试数据输入问题,避免重复输入,不失为一种简单而有效的解决方法。 函数名:freopen 声明:FILE *freopen( const char *path, const char *mode, FILE

C/C++ 标准输入输出重定向

倾然丶 夕夏残阳落幕 提交于 2020-01-13 20:21:19
转载自:http://www.cnblogs.com/hjslovewcl/archive/2011/01/10/2314356.html 这个对经常在OJ上做题的童鞋们很有用。OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。 在C语言中,方法比较简单。使用函数freopen(): freopen("data.in","r",stdin); freopen("data.out","w",stdout); 这样就把标准输入重定向到了data.in文件,标准输出重定向到了data.out文件。 这两句代码之后,scanf函数就会从data.in文件里读,而printf函数就会输出到data.out文件里了。 C++中,对流重定向有两个重载函数: streambuf* rdbuf () const; streambuf* rdbuf (streambuf *) 就相当于get/set方法。 代码示例: 1 #include <iostream> 2 #include <string> 3 #include <fstream> 4 5 using namespace std; 6 7 int main(){ 8 string str; 9 /

Dirt030的码题记录

江枫思渺然 提交于 2020-01-10 21:04:59
title: Dirt030的码题记录 date: 2019-10-06 16:52:45 updated: tags: ACM --- 为了监督自己补题,顺便存代码,把码的题扔在Blog上吧。 Codeforces Round #601 (Div. 2) A Changing Volume 传送门 题解 首先大于等于五格音量的肯定优先按+/-5 然后人工处理一下,四格音量要两次+/-2;三格音量一次+/-1,一次+/-2;两格和一格都是一次 因为忘了case的语法,所以使用了嵌套if #include<bits/stdc++.h> #define ll long long using namespace std; int main(){ /*freopen("sample.in", "r", stdin); freopen("sample.out", "w", stdout);*/ int T; cin>>T; while(T--){ int a,b; cin>>a>>b; int ans=0; int d=abs(a-b)/5,m=abs(a-b)%5; if(m==0) ans=d; else if(m==1) ans=d+1; else if(m==2) ans=d+1; else if(m==3) ans=d+2; else if(m==4) ans=d+2; cout<

二分法快速排序

风格不统一 提交于 2020-01-10 03:58:36
我在实现二分法快速排序的时候,最初的程序是这样的。 # include <iostream> using namespace std ; void qsort ( int arr [ ] , int left , int right ) { int l = left ; int r = right ; int value = arr [ l ] ; do { while ( l < r && arr [ r ] >= value ) r -- ; if ( arr [ r ] < value ) { arr [ l ] = arr [ r ] ; l ++ ; } while ( l < r && arr [ l ] <= value ) l ++ ; if ( arr [ l ] > value ) { arr [ r ] = arr [ l ] ; r -- ; } } while ( l != r ) ; arr [ l ] = value ; qsort ( arr , left , r -- ) ; qsort ( arr , l ++ , right ) ; } int a [ 100 ] ; int main ( ) { freopen ( "1.txt" , "r" , stdin ) ; freopen ( "2.txt" , "w" , stdout ) ;

[IOI2008]Island

谁说胖子不能爱 提交于 2019-12-28 04:16:48
题目链接 首先,我们发现这是一个基环外向树森林,所以我们发现只有两种情况: 1. 1. 1 . 最长路径在一颗子树中。 2. 2. 2 . 最长路径分别在两颗子树中,通过基环相连。 因此,我们考虑首先 d f s dfs d f s 找到这个环,然后对于环上的点跑 d p dp d p ,这样我们就解决了第一个情况。 而对于第二种情况,我们首先破坏为链,发现我们的所求就是: 我们定义 g [ i ] g[i] g [ i ] 表示以 i i i 为根的外向树的最长路径。 f [ x ] = m i n i = x − n + 1 x − 1 ( g [ i ] + g [ x ] + d i s [ i , x ] ) f[x]=min_{i=x-n+1}^{x-1}(g[i]+g[x]+dis[i,x]) f [ x ] = m i n i = x − n + 1 x − 1 ​ ( g [ i ] + g [ x ] + d i s [ i , x ] ) 由于我们发现 d i s [ i , j ] = d i s [ i , k ] + d i s [ k , j ] dis[i,j]=dis[i,k]+dis[k,j] d i s [ i , j ] = d i s [ i , k ] + d i s [ k , j ] ,所以这个一定可以使用单调队列进行优化。 考虑写成