1004:
这道题我觉得就是一个贪心
先把p倍数的数据踢出
然后把剩下的片段划分成p倍数段,求max的段数
贪心直接从右往左找就行
用map来做
code:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t,n,p,x,y,z;
cin>>t;
while(t--)
{
cin>>n>>p;
map<int,int> mp;
mp[0]=1;
y=0;
z=0;
for(int i=1;i<=n;i++)
{
cin>>x;
y=(y+x)%p;
if(mp.count(y))
{
z++;
y=0;
mp.clear();
mp[0]=1;
}
else mp[y]=1;
}
cout<<z<<endl;
}
return 0;
}
竟然cin cout会超时。。还要关闭流同步
1009
看题解说是道贪心题。。
照道敲了一遍。还是不太懂
好像是一个贪心的思想
根据代码看出
是把最左侧的*换为(
并且两数相减还是一个定值
程序里面二分求定值
#include <bits/stdc++.h>
using