ural 1219. Symbolic Sequence

1219. Symbolic Sequence

Time limit: 1.0 second
Memory limit: 64 MB

Your program is to output a sequence of 1 000 000 lowercase Latin letters. This sequence should satisfy the following restrictions:

  • Every letter occurs not more than 40 000 times in the sequence;
  • Every possible subsequence with two letters length occurs not more than 2 000 times;
  • Every possible subsequence with three letters length occurs not more than 100 times;

Input

For this problem no input is provided.

Output

In a single line of the output write some sequence, which satisfies the properties described above.

Problem Author: Pavel Atnashev, Leonid Volkov, text by Pavel Atnashev
Problem Source: The Seventh Ural State University collegiate programming contest

Tags: unusual problem  (hide tags for unsolved problems)

Difficulty: 120

题意:不说

分析:1、随机生成,基本上有很大概率是对的

2、随便构造一个就好,我是三个三个枚举的、。。。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <deque>
 6 #include <vector>
 7 #include <queue>
 8 #include <iostream>
 9 #include <algorithm>
10 #include <map>
11 #include <set>
12 #include <ctime>
13 using namespace std;
14 typedef long long LL;
15 typedef double DB;
16 #define For(i, s, t) for(int i = (s); i <= (t); i++)
17 #define Ford(i, s, t) for(int i = (s); i >= (t); i--)
18 #define Rep(i, t) for(int i = (0); i < (t); i++)
19 #define Repn(i, t) for(int i = ((t)-1); i >= (0); i--)
20 #define rep(i, x, t) for(int i = (x); i < (t); i++)
21 #define MIT (2147483647)
22 #define INF (1000000001)
23 #define MLL (1000000000000000001LL)
24 #define sz(x) ((int) (x).size())
25 #define clr(x, y) memset(x, y, sizeof(x))
26 #define puf push_front
27 #define pub push_back
28 #define pof pop_front
29 #define pob pop_back
30 #define ft first
31 #define sd second
32 #define mk make_pair
33 inline void SetIO(string Name) {
34     string Input = Name+".in",
35     Output = Name+".out";
36     freopen(Input.c_str(), "r", stdin),
37     freopen(Output.c_str(), "w", stdout);
38 }
39
40 inline int Getint() {
41     int Ret = 0;
42     char Ch = ‘ ‘;
43     while(!(Ch >= ‘0‘ && Ch <= ‘9‘)) Ch = getchar();
44     while(Ch >= ‘0‘ && Ch <= ‘9‘) {
45         Ret = Ret*10+Ch-‘0‘;
46         Ch = getchar();
47     }
48     return Ret;
49 }
50
51 int Cnt = 0;
52
53 inline void Input() {
54
55 }
56
57 inline void Solve() {
58     For(i, 1, 333333)
59         printf("%c%c%c", (i/676)%26+‘a‘, (i/26)%26+‘a‘, i%26+‘a‘);
60     puts("a");
61 }
62
63 int main() {
64     #ifndef ONLINE_JUDGE
65     SetIO("D");
66     #endif
67     Input();
68     Solve();
69     return 0;
70 }

时间: 2024-10-22 03:42:44

ural 1219. Symbolic Sequence的相关文章

记忆化搜索+DFS URAL 1183 Brackets Sequence

题目传送门 1 /* 2 记忆化搜索+DFS:dp[i][j] 表示第i到第j个字符,最少要加多少个括号 3 dp[x][x] = 1 一定要加一个括号:dp[x][y] = 0, x > y; 4 当s[x] 与 s[y] 匹配,则搜索 (x+1, y-1); 否则在x~y-1枚举找到相匹配的括号,更新最小值 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cmath> 9 #include

Ural 1183 Brackets Sequence(区间DP+记忆化搜索)

题目地址:Ural 1183 最终把这题给A了.. .拖拉了好长时间,.. 自己想还是想不出来,正好紫书上有这题. d[i][j]为输入序列从下标i到下标j最少须要加多少括号才干成为合法序列.0<=i<=j<len (len为输入序列的长度). c[i][j]为输入序列从下标i到下标j的断开位置.假设没有断开则为-1. 当i==j时.d[i][j]为1 当s[i]=='(' && s[j]==')' 或者 s[i]=='[' && s[j]==']'时,d

URAL 1183 Brackets Sequence DP 路径输出

题意:长度小于100的字符串s只由四种字符"()[]"组成,求以该串为子串的最短的合法串.合法串递归定义为: (1)空串合法 (2)如果S合法,则(S).[S]合法 (3)如果A.B合法,则AB合法 思路: 设dp[i][j]为s(i,j)变为合法串后,合法串的长度或需要添加的字符的个数,状态转移: (1)如果s[i]和s[j]匹配,dp[i,j]=dp[i+1,j-1]. (2)如果不匹配,划分s(i,j)为s(i,k)和s(k+1,j),划分后dp[i,j]=dp[i,k]+dp[

URAL 1183 Brackets Sequence(DP)

题目链接 题意 : 给你一串由括号组成的串,让你添加最少的括号使该串匹配. 思路 : 黑书上的DP.dp[i][j] = min{dp[i+1][j-1] (sh[i] == sh[j]),dp[i][k]+dp[k+1][j](i<=k<j)}.输出的时候递归,其实我觉得输出比dp部分难多了..... 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 5 using nam

URAL 1133 Fibonacci Sequence(数论)

题目链接 题意 :给你第 i 项的值fi,第 j 项的值是 fj 让你求第n项的值,这个数列满足斐波那契的性质,每一项的值是前两项的值得和. 思路 :知道了第 i 项第j项,而且还知道了每个数的范围,二分求第 i+1项,然后根据性质求下去,求到第 j 项的时候看看通过二分求出来的值与给定的第j项的值大小关系,来确定下一次二分的值,输出的时候注意方向. #include <stdio.h> #include <string.h> #include <iostream> #

ural 1133 Fibonacci Sequence 二分枚举

给出Fibonacci的第i项和第j项.求第n项. Input The input contains five integers in the following order: i, Fi, j,Fj, n.−1000 ≤ i, j, n ≤ 1000, i ≠ j,−2·109 ≤ Fk ≤ 2·109 (k = min(i, j, n), …, max(i, j, n)). Output The output consists of a single integer, which is th

ural Binary Lexicographic Sequence (dp + dfs)

http://acm.timus.ru/problem.aspx?space=1&num=1081 有一个二进制序列,定义为不能有两个连续的1出现,才是合法的.给出序列的长度n,求合法的二进制序列中按字典序排序后第k个序列是什么. 设dp[i][0]和dp[i][1]分别表示第i位上是0和1的个数. 那么dp[i][0] = dp[i-1][0] + dp[i-1][1]:dp[i][1] = dp[i-1][0],打表发现和斐波那契数列相似. 求第k个合法的序列时,因为是按字典序排序,可以发现

应用程序的性能: C# vs C/C++

最近一段时间,我在 Timus Online Judge 网站做 ACM 题. 首先,让我们看一下 Timus 1114. Boxes: 这道题要求计算出将两种颜色的球放到盒子中的各种组合的数目.我们发现用同样的算法,C# 程序居然比 C++ 程序慢 62 倍. 真的是 C# 应用程序的性能就一定很差吗?不是的.实际上在这道题中,使用的算法是非常高效的.上面的 0.001 秒和 0.062 秒已经分别是 C/C++ 程序和 C# 程序在 Timus Online Judge 网站运行的最短时间了

URAL 1528 Sequence

SequenceCrawling in process... Crawling failed Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice URAL 1528 Description You are given a recurrent formula for a sequence f: f(n) = 1 + f(1)g(1) + f(2)g(2