昨天的比赛,可以说打的非常烂。这场比赛去年打了,当时出了四道题,现在还是四道。所以可以说这次打的非常烂了。
三个人状态都不是很好。本来能轻松搞定的数位dp最后怎么测答案都对1e9都秒出结果,结果居然是TLE。这让我很不解。
赛后换了思路,学习了16进制的输入方法,从头开始重新打一遍,一下就A了。
ZOJ 3962 D.Seven Segment Display / The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple D.数位dp,AC代码如下:
#include
#include
#include
#include
#include
#include
还有一题就是E题 ZOJ 3963 Heap Partition(贪心+set)
自己写的不是TLE就是WA,赛后看了AC的代码。。。真的很妙,弄懂了以后自己赶紧去敲了一发AC:
#include
using namespace std;
const int maxn=100010;
typedef long long ll;
#define lson i*2,l,m
#define rson i*2+1,m+1,r
const int mo=1e9+7;
mapmp;
int n,m,k,nn,mm;
int mmp[maxn];
int c[maxn],f,g;
int a[maxn];
int ans[2000010],num[maxn];
vectorvc[maxn];
struct node
{
int id;
int v;
bool operator<(node aa)const
{
return a[id]st;
set::iterator it;
int main()
{
int T,t;
scanf("%d",&T);
{
while(T--)
{
f=0;st.clear();
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
mmp[i]=0;
scanf("%d",&a[i]);
q.id=i;
it=st.upper_bound(q);
if(it==st.begin())
{
vc[++f].clear();
vc[f].push_back(i);
q.v=f;
st.insert(q);
}
else
{
it--;
node vv=*it;
mmp[vv.id]--;
if(mmp[vv.id]==-2) st.erase(it);
vv.id=i;
st.insert(vv);
vc[vv.v].push_back(i);
}
}
printf("%d\n",f);
int j=0;
for(int i=1;i<=f;i++)
{
int x=vc[i].size();
printf("%d",x);
for(int j=0;j
离省赛越来越近了,加油!!!