IPSC2015

我来推荐一个好玩的东西了,IPSC,第一次参加,原来一直不知道这个比赛,貌似很久了,12点结束的,今天出去玩,10点半开始做的,画了半个多小时时间看懂了是怎么叫,原来是给你输入数据,你只需要跑程序,然后测试你的输出,就是只用提交输出数据即可,真的很好,貌似不用担心TLE了,比赛也是分大数据跟小数据的

A题 A+B

链接:http://ipsc.ksp.sk/2015/real/problems/a.html

小数据:

 1 #include<iostream>
 2 #include<fstream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<string>
 7 #include<vector>
 8 #include<stack>
 9 #include<algorithm>
10 using namespace std;
11 string s;
12 int main()
13 {
14     ifstream fin;
15     fin.open("a1.in");
16     ofstream fout;
17     fout.open("b.out");
18     int t;
19     fin>>t;
20     while(t--)
21     {
22
23         int cnt;
24         fin>>s;
25         cnt=0;
26         int n=s.length();
27         int a[n];
28         for(int i=0;i<n;i++)
29             a[i]=s[i]-‘0‘;
30         if(n>=3)
31         {
32             sort(a,a+3);
33             cnt+=a[2]*10+a[1]+a[0];
34         }
35         else
36         {
37             if(n>=2)
38             {
39                 sort(a,a+2);
40             cnt+=a[1]+a[0];
41             }
42             else
43                 cnt=s[0]-‘0‘;
44         }
45         fout<<cnt<<endl;
46     }
47     return 0;
48 }

大数据:

 1 #include<iostream>
 2 #include<fstream>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<string>
 6 #include<cmath>
 7 #include<vector>
 8 #include<algorithm>
 9 using namespace std;
10 const int maxn=17;
11 int dp[2][maxn];
12 int sum(int a[],int x,int y)
13 {
14     int cnt=a[y];
15     for(int i=y-1;i>=x;i--)
16     {
17         cnt*=10;
18         cnt+=a[i];
19     }
20     return cnt;
21 }
22 string s;
23 int main(void)
24 {
25     ifstream fin;
26     fin.open("a2.in");
27     ofstream fout;
28     fout.open("a2.out");
29     int t;
30     fin>>t;
31     while(t--)
32     {
33         int n;
34         fin>>s;
35         n=s.length();
36         int a[n];
37         memset(a,0,sizeof(a));
38         for(int i=0;i<n;i++)
39           a[i]=s[i]-‘0‘;
40          memset(dp,0,sizeof(dp));
41         int mx=0;
42         for(int i=n-2;i>=0;i--)
43         {
44             int cnt=0;
45             cnt+=sum(a,0,i)+sum(a,i+1,n-1);
46             if(cnt>mx)
47                 mx=cnt;
48         }
49         fout<<mx<<endl;
50     }
51     return 0;
52 }

写完这个SB题比赛就结束了,后面的题目等赛后提交开放以后在更新了

时间: 2024-12-21 20:24:18

IPSC2015的相关文章

BZOJ 4154 [Ipsc2015]Generating Synergy(KD-Tree)

题目链接:BZOJ 4154 [Ipsc2015]Generating Synergy 题意: 给定一棵以1为根的有根树,初始所有节点颜色为1,每次将距离节点a不超过l的a的子节点染成c,或询问点a的颜色. 题解: 将dfs序看为x,dep看为y,那么就是一个在二维平面上的操作了. 由于这个平面范围比较大,二维线段树不好开,然后kd-tree搞搞. 1 #include<cstdio> 2 #include<algorithm> 3 #define F(i,a,b) for(int

【BZOJ4154】[Ipsc2015]Generating Synergy KDtree

[BZOJ4154][Ipsc2015]Generating Synergy Description 给定一棵以1为根的有根树,初始所有节点颜色为1,每次将距离节点a不超过l的a的子节点染成c,或询问点a的颜色 Input 第一行一个数T,表示数据组数 接下来每组数据的第一行三个数n,c,q表示结点个数,颜色数和操作数 接下来一行n-1个数描述2..n的父节点 接下来q行每行三个数a,l,c 若c为0,表示询问a的颜色 否则将距离a不超过l的a的子节点染成c Output 设当前是第i个操作,y

BZOJ4154 : [Ipsc2015]Generating Synergy

求出dfs序和每个点的深度 将第i个点看成二维点(st[i],d[i]) 则修改操作等价于将横坐标在[st[x],en[x]]内,纵坐标在[d[x],d[x]+y]范围内的点的颜色都修改为c 用支持标记下放的k-d树维护即可,时间复杂度$O(n\log n+q\sqrt{n})$. #include<cstdio> #include<algorithm> #define N 100010 int T,n,c,m,x,y,i,g[N],nxt[N],st[N],en[N],dfn,d

BZOJ4155 : [Ipsc2015]Humble Captains

第一问最小割,第二问: 设du[i]表示i点的度数,则要最小化$\frac{|1集合的du[i]之和-2集合的du[i]之和|}{2}$, 压位01背包即可. #include<cstdio> #include<bitset> using namespace std; const int N=40010,inf=~0U>>2; struct edge{int t,f;edge*nxt,*pair;}*g[N],*d[N],pool[240000],*cur=pool;

【kd-tree】bzoj4154 [Ipsc2015]Generating Synergy

区间修改的kd-tree,打标记,下传. 每次询问的时候,从询问点向上找到根,然后依次下传下来,再回答询问. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define N 100001 #define KD 2 int n,root,m,q,qp[2][KD],fa[N],val,delta[N]; bool dn; struct Node { int ch[2

【bzoj4154】[Ipsc2015]Generating Synergy KD-tree

题目描述 给定一棵以1为根的有根树,初始所有节点颜色为1,每次将距离节点a不超过l的a的子节点染成c,或询问点a的颜色 输入 第一行一个数T,表示数据组数 接下来每组数据的第一行三个数n,c,q表示结点个数,颜色数和操作数 接下来一行n-1个数描述2..n的父节点 接下来q行每行三个数a,l,c 若c为0,表示询问a的颜色 否则将距离a不超过l的a的子节点染成c 输出 设当前是第i个操作,y_i为本次询问的答案(若本次操作是一个修改则y_i为0),令z_i=i*y_i,请输出z_1+z_2+..

BZOJ4154——IPSC2015 Generating Synergy

题意:AC通道 题解: 这题有个十分巧妙的解法. 因为有子树修改,而又不是整棵子树的修改,直接上dfs序是不行的. 考虑它每次修改的只有子节点,而且有距离限制,我们想到这是与点的深度有关的问题. 于是我们把树上的点抽象到二维平面上,横坐标为其dfs序,纵坐标为其深度,这样每次的修改就对应一个区域的染色操作,这东西用kdtree可以随便搞,弄个lazytag就可以了. 一堆调试用的代码,所以看起来很长. #include <bits/stdc++.h> //#include <conio.

[Ipsc2015]Generating Synergy

传送门 这个题有点意思啊,我可能kd-tree的板子写的有点问题,查询的时候就是要暴力查左右儿子,记录的最大最小值毫无作用,不清楚为什么. 这个题也算是比较简单的啦,由于是子树操作,只要想到按dfs序建树就没有什么问题了 其他的也就是一个区间覆盖,没有什么难度 代码: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; v

APIO2013 tasksauthor

喜闻乐见的提答题,这道题还是蛮有趣的 数据结构题写得心塞,来一道提答意思意思 如果喜欢这类题的话还可以去做做uoj83. 这题是给出了两个问题,一个最短路,一个无向图染色问题. Data 1 Floyd VS Dijkstra 嗯107个整数,我们只要给一个n=101,下面一坨0 Floyd就狗带了 #include <iostream> #include <stdio.h> using namespace std; int main() { printf("101\n&